工作使用一个非常简单的计算器程序,提示用户对操作执行用户,接着提示两个整数要在其上执行此操作。程序应该在这些操作之后循环,除非用户输入字符'q',此时程序应该退出。的getchar不是在开关情况(c)
#include <stdio.h>
int main (void)
{
char c;
int number[2], num1, num2, result;
double num1d, num2d, resultd;
int done=1;
while(done)
{
printf("\t What sort of operation would you like to perform? \n \t Type + - */accordingly. \n");
c = getchar();
printf("\tplease enter a number \n");
scanf("%d",&number[0]);
printf("\tplease enter another number \n");
scanf("%d",&number[1]);
num1 = number[0];
num2 = number[1];
switch(c)
{
case('-'):
result = num1-num2;
printf("\nThe first number you entered subtracted by the second number is %d.\n", result);
break;
case('+'):
result = num1+num2;
printf("The first number you entered added to the second number is %d.\n", result);
break;
case('*'):
result = num1*num2;
printf("The first number you entered multiplied with the second number is %d.\n", result);
break;
case('/'):
num1d = (double) num1;
num2d = (double) num2;
resultd = num1d/num2d;
printf("The first number you entered divided by the second number is %g.\n", resultd);;
break;
case('q'):
printf(" Now Exiting...\n");
done=0;
break;
default:
puts("Invalid key pressed. Press q to exit");
break;
}
}
return 0;
}
正确Works的单个计算中,但随后执行奇怪;特别是它打印
printf("\t What sort of operation would you like to perform? \n \t Type + - */accordingly. \n");
printf("\tplease enter a number \n");
一起。
清除输入缓冲器while (getchar() != '\n');
不能解决此的标准方法。一两次,这个文本显示不正确,用户仍然可以使用该程序,就好像指令正在显示它们应该一样(所以用户可以键入一个操作,例如+,回车,然后是一些整数和回车,程序将从该点开始正确执行)然而,每隔一段时间,程序都会将“无效键按下,按q退出”,无论输入如何。
感谢兄弟,这很有用:) –