【问题标题】:C : if-else about variablesC : if-else 关于变量
【发布时间】:2016-03-02 12:01:38
【问题描述】:

我是编程新手,我是 C 语言的初学者,我想在 make if else 时询问我的问题:

每种水果的代码..

Apple 的 A-001 只需 3 美元

A-002 用于 4 美元的葡萄

牛油果的 B-001 只需 2 美元

Orange 的 B-002 只需 1 美元

然后输入将是 数量、水果代码

输出将是 总计(数量 * 价格)

但是当我这样做时:

If (fruitcode=='A-001')

它告诉我字符常量太长.. 我应该为水果代码使用什么?它只是整数还是字符还是什么?

这是我的代码:

q 表示数量 h 价格 K代表水果​​代码

int main(){ 整数 q,h,k,t;

printf("============================================\n");
printf("=                 Program                  =\n");
printf("============================================\n");
printf("     Fruit Code     Fruit       Prices \n");
printf("      A-001         Apple      Rp. 13.000 \n");
printf("      A-002         Grape      Rp. 16.000 \n");
printf("      B-001         Avocado    Rp. 10.000 \n");
printf("      B-002         orange     Rp. 12.000 \n");
printf("============================================\n");
printf("\n");
printf("  \n");
printf("============================================\n");
printf("=                    Form                  =\n");
printf("============================================\n");
printf("Transaction Time:  ");
scanf("%s", &t);
printf("Fruit Code : ");
scanf("%s", &k);

if(k=='A-001')
    printf("You Choose Apple");
}
else if(k='A-002'){
    printf("You Choose Grape");
}
else if(k='B-001'){
    printf("You Choose Avocado");
}
else{
    printf("You Choose orange");
}


printf("Quantity: ");
scanf("%s", &q);

getch();
return 0;
}

【问题讨论】:

  • 你可以使用任何你想要的类型,这取决于你需要用它做什么。请注意,虽然'' 用于chars,而不是字符串,但字符串不能与== 进行比较。
  • 确实在“A-001”中使用“A-001”。 “字符串”/“字符”
  • 您是如何使用字符串或什么进行编码的?显示您的代码示例。
  • 显示您的代码!另外,不要只是在这里转储您的代码并告诉您已经发布了它。发布 MCVE。

标签: c if-statement


【解决方案1】:

您需要对字符串使用双引号,而不是单引号。单引号仅用于单个字符。

你也不能像那样比较字符串。你需要使用strcmp()之类的东西。

【讨论】:

    【解决方案2】:

    fruitcode 可能最终会成为 C 风格的字符串;即它将是一个指针(类型为char*),指向一个以空结尾的char 元素数组。

    然后,您将使用 if (!strcmp(fruitcode, "A-001")) 行中的某些内容来测试是否相等。

    请注意,我使用 double 引号字符来表示 字符串文字

    (使用单引号字符表示完全不同的东西:如果您将多个字符括在单引号字符中,则 C 将其解释为 字符数组文字。这实际上表示的是实现定义的;我认为你的编译器抱怨你的字符数组的长度超过了sizeof(int)。)

    【讨论】:

      【解决方案3】:

      要比较 C 中的字符串,请使用 strcmp 函数。

      【讨论】:

        【解决方案4】:

        你需要使用strcmp:

        if (strcmp (fruitcode, "A=001") == 0)
        

        【讨论】:

          【解决方案5】:

          在 C 中,您无法将 fruitcode"A-001" 进行比较。 C 的== 运算符只能比较字符,不能比较字符串(只能比较单个字符)。

          如果要比较它们,请执行以下操作:

          strcmp(fruitcode,"A-001");

          请注意我的回答中的" ";这意味着一个字符串。在您的问题上,' ' 暗示了一个角色。 ' ' 内不能有多个字符('\n' 等特殊字符除外,它们看起来像 2 个字符,但用 1 表示(在这种情况下为换行符)。

          【讨论】:

            猜你喜欢
            • 2013-12-21
            • 1970-01-01
            • 2018-03-29
            • 1970-01-01
            • 2016-10-15
            • 1970-01-01
            • 1970-01-01
            • 2014-11-08
            • 1970-01-01
            相关资源
            最近更新 更多