/* 原程序我修改了一下个人的风格,内容没有变 建议作者多看一下编程风格和规范方面的书籍 */ #include "stdio.h" main() { /*定义变量,a,b为输入数据,c为输出结果,d为运算符号*/ int a,b,c; char d; /*do循环判断输入的a,b都不为0*/ do { printf("please put in the first num\n"); scanf("%d",&a); printf("please put in the second num\n"); scanf("%d",&b); if (a*b==0) printf("doing is wrong\n"); } while (a*b==0);
/* 出错在这里:当你输入第二个数的时候,要用回车确认,此时标准输入流(stdin)中包括“b的输入值”和“回车” 而"scanf("%d", b);"这一个语句只接收了“b的输入值”, “回车”则仍在stdin中,下一句"d = getch();"所接收到的是“回车”,而不是你输入的运算符. */
/*获取输入的运算符号*/ printf("please put in the char"); /* 解决方法:1.在此加多一句 "d = getchar();" 以接收掉“回车”; 2.在此加多一句 "fflush(stdin)" 以刷新标准输入流stdin; */ d=getchar(); d=toupper(d); /*选择语句判断根据所输入的运算符号,选择运算和打印*/ switch (d) { case '+' : c=a+b; printf("c=a+b=%d+%d=%d",a,b,c); break; case '-' : c=a-b; printf("c=a-b=%d-%d=%d",a,b,c); break; case '*' : c=a*b; printf("c=a*b=%d*%d=%d",a,b,c); break; case '/' : c=a/b; printf("c=a/b=%d/%d=%d",a,b,c); break; case '%' : c=a%b; printf("c=a%b=%d%%d=%d",a,b,c); break; }
getch(); }