代码不工作,不做定向任务
Code is not working, and is not doing directed task
代码不言自明,但我需要帮助,因为当我使用它时,它会跳过所有“If”情况并直接跳转到下一个循环。 “scanf”工作正常;变量“order”也能正确接收输入。如果您知道如何修复它,请告诉我!祝你有美好的一天!
#include <stdio.h>
#include <string.h>
int main(){
int side [3]; // Fries(0), Fried Squid(1), Cheese Fries(2)
int combo [3]; // Spicy Chicken(0), Whopper(1), Double Whopper(2)
int drinks[3]; // Cola(0), Vanilla Shake(1), Lemonade(2)
int amount;
char order [20];
int total = 0;
for(int i = 0; i < 3; ++i){
combo[i] = 20;
total = total + 20;
}
for(int i = 0; i < 3; ++i){
side[i] = 20;
total = total + 20;
}
for(int i = 0; i < 3; ++i){
drinks[i] = 20;
total = total + 20;
}
while (total > 0){
printf("Make your order here: \n");
scanf("%s %d", order, &amount);
printf("%s\n", order);
if(order == "Fries"){
printf("A\n");A
if(side[0] < amount){
printf("Your order is invalid, and you are stinky.\n");
}
else{
printf("B\n");
printf("your order is here: %s x %d", order, amount);
total = total - amount;
}
printf("C\n");
}
printf("D\n");
}
return 0;
}
我现在无法测试,但我认为您应该使用 strcmp
或 strncmp
来比较字符串; ==
运算符将只比较指针。
像这样的 if 语句中的条件
if(order == "Fries"){
没有意义。比较了两个指针,很明显它们具有不同的值。也就是说,字符数组 order
被隐式转换为指向其第一个元素的指针,字符串文字也以相同的方式隐式转换为指针。
如果你甚至会写例如,请注意这一点
if("Fries" == "Fries"){
那么表达式的计算结果不一定为逻辑真。表达式的结果取决于编译器选项,即编译器是将相同的字符串文字存储为一个字符串文字还是不同的字符串文字。
你需要的是比较两个字符串,如
#include <string.h>
// ...
if( strcmp( order, "Fries" ) == 0 ){
代码不言自明,但我需要帮助,因为当我使用它时,它会跳过所有“If”情况并直接跳转到下一个循环。 “scanf”工作正常;变量“order”也能正确接收输入。如果您知道如何修复它,请告诉我!祝你有美好的一天!
#include <stdio.h>
#include <string.h>
int main(){
int side [3]; // Fries(0), Fried Squid(1), Cheese Fries(2)
int combo [3]; // Spicy Chicken(0), Whopper(1), Double Whopper(2)
int drinks[3]; // Cola(0), Vanilla Shake(1), Lemonade(2)
int amount;
char order [20];
int total = 0;
for(int i = 0; i < 3; ++i){
combo[i] = 20;
total = total + 20;
}
for(int i = 0; i < 3; ++i){
side[i] = 20;
total = total + 20;
}
for(int i = 0; i < 3; ++i){
drinks[i] = 20;
total = total + 20;
}
while (total > 0){
printf("Make your order here: \n");
scanf("%s %d", order, &amount);
printf("%s\n", order);
if(order == "Fries"){
printf("A\n");A
if(side[0] < amount){
printf("Your order is invalid, and you are stinky.\n");
}
else{
printf("B\n");
printf("your order is here: %s x %d", order, amount);
total = total - amount;
}
printf("C\n");
}
printf("D\n");
}
return 0;
}
我现在无法测试,但我认为您应该使用 strcmp
或 strncmp
来比较字符串; ==
运算符将只比较指针。
像这样的 if 语句中的条件
if(order == "Fries"){
没有意义。比较了两个指针,很明显它们具有不同的值。也就是说,字符数组 order
被隐式转换为指向其第一个元素的指针,字符串文字也以相同的方式隐式转换为指针。
如果你甚至会写例如,请注意这一点
if("Fries" == "Fries"){
那么表达式的计算结果不一定为逻辑真。表达式的结果取决于编译器选项,即编译器是将相同的字符串文字存储为一个字符串文字还是不同的字符串文字。
你需要的是比较两个字符串,如
#include <string.h>
// ...
if( strcmp( order, "Fries" ) == 0 ){