Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中使用带字符的if语句_C_If Statement_Char_Calculator - Fatal编程技术网

如何在C中使用带字符的if语句

如何在C中使用带字符的if语句,c,if-statement,char,calculator,C,If Statement,Char,Calculator,下面是我试图用C语言构建的一个简单计算器的代码(我正在学习C): #包括 #包括 #包括 int main() { 字符操作; printf(“欢迎使用双位数计算器!\n\n”); 睡眠(1000); printf(“您希望执行什么操作?(+,-,*,/,)\n”); 睡眠(1000); scanf(“%c\n\n”,操作); 睡眠(1000); 如果(操作=='+'){ int FirstNumber; int第二个数字; printf(“请输入您的第一个号码\n”); scanf(“%s\n

下面是我试图用C语言构建的一个简单计算器的代码(我正在学习C):

#包括
#包括
#包括
int main()
{
字符操作;
printf(“欢迎使用双位数计算器!\n\n”);
睡眠(1000);
printf(“您希望执行什么操作?(+,-,*,/,)\n”);
睡眠(1000);
scanf(“%c\n\n”,操作);
睡眠(1000);
如果(操作=='+'){
int FirstNumber;
int第二个数字;
printf(“请输入您的第一个号码\n”);
scanf(“%s\n\n”、&FirstNumber);
printf(“请输入您的第二个号码\n”);
scanf(“%s\n\n”、&SecondNumber);
睡眠(1000);
printf(“计算”);
睡眠(1000);
printf(“.”);
睡眠(1000);
printf(“.”);
睡眠(1000);
printf(“.\n\n”);
printf(“您的计算是%d\n\n”,第一个数字+第二个数字);
系统(“暂停”);
}
如果(操作=='-'){
int-OneFirstNumber;
int-OneSecondNumber;
printf(“请输入您的第一个号码\n”);
scanf(“%s\n\n”、&OneFirstNumber);
printf(“请输入您的第二个号码\n”);
scanf(“%s\n\n”、&OneSecondNumber);
睡眠(1000);
printf(“计算”);
睡眠(1000);
printf(“.”);
睡眠(1000);
printf(“.”);
睡眠(1000);
printf(“.\n\n”);
printf(“您的计算是%d\n\n”,OneFirstNumber-OneSecondNumber);
系统(“暂停”);
}
如果(操作=='*'){
整数;
整数;
printf(“请输入您的第一个号码\n”);
scanf(“%s\n\n”、&TwoFirstNumber);
printf(“请输入您的第二个号码\n”);
scanf(“%s\n\n”、&TwoSecondNumber);
睡眠(1000);
printf(“计算”);
睡眠(1000);
printf(“.”);
睡眠(1000);
printf(“.”);
睡眠(1000);
printf(“.\n\n”);
printf(“您的计算是%d\n\n”,TwoFirstNumber*TwoSecondNumber);
系统(“暂停”);
}
如果(操作=='/')){
整数三位数;
整数三秒数;
printf(“请输入您的第一个号码\n”);
scanf(“%s\n\n”、&ThreeFirstNumber);
printf(“请输入您的第二个号码\n”);
scanf(“%s\n\n”、&ThreeSecondNumber);
睡眠(1000);
printf(“计算”);
睡眠(1000);
printf(“.”);
睡眠(1000);
printf(“.”);
睡眠(1000);
printf(“.\n\n”);
printf(“您的计算是%d\n\n”,三位数/三位数);
系统(“暂停”);
}
系统(“暂停”);
返回0;
}
问题是每当我运行代码,输入一个操作,so+,-,*,或/,然后按enter键时,什么都不会发生,即使我有if语句来执行程序的其余部分。我搞不清楚我做错了什么。有什么帮助吗?(对不起,我是编程新手,我正处于学习C语言的早期阶段)


要扫描该值,您需要给scanf一个地址。

您的代码中有一些错误,您可以改进

第一个,当您使用scanf时,必须传递变量地址以存储数据,例如:

scanf("%c", &Operation);
scanf("%d\n", &secondNumber);
switch(operation) {
case '+':
    // do add operation
    break;
case '-': 
    // do sub operation
    break;
default:
    // return some error message.
}
避免在scanf中使用“\n\n”,这表示您希望从用户输入中返回一个字符和两个返回值。如果用户不这样做,代码将无法正常工作

我可以注意到,在大多数情况下,关于数据类型,您使用scanf是错误的。如果要使用scanf从用户处获取整数值,则必须使用相应的转换%d来获取整数值,例如:

scanf("%c", &Operation);
scanf("%d\n", &secondNumber);
switch(operation) {
case '+':
    // do add operation
    break;
case '-': 
    // do sub operation
    break;
default:
    // return some error message.
}
当您使用%s时,说明您希望从用户输入中获得字符串,如果将字符串存储到整数变量中,则可能会使代码崩溃

另一点与使用if语句切换用户输入有关,最好使用switch case语句,例如:

scanf("%c", &Operation);
scanf("%d\n", &secondNumber);
switch(operation) {
case '+':
    // do add operation
    break;
case '-': 
    // do sub operation
    break;
default:
    // return some error message.
}
在switch case语句中,“default”是一个例程,如果没有一个实例与您期望的不匹配,那么您需要执行该例程


我想这就是让代码正常工作所需要做的一切。

问题可能与
scanf
有关。我确实检查了代码,我认为它是正确的。你怎么看?如果你认为代码是正确的,你的问题是什么?你正在使用
%s
scanf
的“string”格式说明符。我的问题是为什么在我输入一个操作后,即使我有一系列If语句,也不会发生任何事情。即使在“操作”之前添加了“&”,在我进入一个操作后,什么也没有发生。我想\n\n也会破坏它。感谢您的回复,我将进行更改,看看它是否有效。只是修复了它/您是对的,即使是scanf中的一个(“%d\n”,&FirstNumber);使计算机期望两个用户输入,所以输入两次,每次按enter键。我所做的只是拿走\n的,然后问题就解决了!非常感谢各位,谢谢大家的意见。今天学到了新东西!