scanf char variable in between scanf integer variable doesn't work?
本问题已经有最佳答案,请猛点这里访问。
我曾想过要制造一个计算器,它只是一个简单的带有循环和基本操作的计算器,但奇怪的是,我的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <stdio.h> #include <stdlib.h> int main(){ int number1,number2,total; char a; printf("This is your personal calculator:(End with""="")\ "); scanf("%d",&number1); scanf("%c",&a); scanf("%d",&number2); if (a == 'x' || a == 'X' || a == '*'){ total=number1*number2; printf("%d",total); } else if (a == '/'){ total=number1/number2; printf("%d",total); } else if (a == '+'){ total=number1+number2; printf("%d",total); } else if (a == '-'){ total=number1-number2; printf("%d",total); } else { printf("error"); } system("pause"); return 0; } |
您应该每次都测试是否从
1 2 3 4 5 6 7 8 9 10 |
如果使用
- 建议1:举例说明您键入什么作为输入以及获得什么作为输出。这使人们可以更轻松地为您提供帮助(他们可以判断程序是否为他们产生了相同的输出)。
-
建议2:回显您的输入,以便可以看到程序得到了什么。这使您可以判断程序是否获得了预期的输入。例如,您可能会发现
number2 没有包含预期的内容。 -
建议3:将
number1 和number2 初始化为-1 ,这样您就可以看到scanf() 何时失败(因为您尚未检查scanf() 是否成功)。
问题是由于
试试这个
1 2 |
这将帮助您吃掉第一个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | int main() { int number1,number2,total; char a; printf("This is your personal calculator:(End with""="")\ "); scanf("%d",&number1); fflush(stdin); // SIMPLE WAY FLUSH THE INPUT STREAM, INPUT BUFFER IS USUALLY CLEARED. scanf("%c",&a); scanf("%d",&number2); if (a == 'x' || a == 'X' || a == '*'){ total=number1*number2; printf("%d",total); } else if (a == '/'){ total=number1/number2; printf("%d",total); } else if (a == '+'){ total=number1+number2; printf("%d",total); } else if (a == '-'){ total=number1-number2; printf("%d",total); } else { printf("error"); } system("pause"); return 0; |
}