【发布时间】:2013-12-03 11:03:03
【问题描述】:
我正在尝试用 C 编写一个计算器程序。
输入必须完全是这种形式:
a oper b
其中 a、b 是 double 类型的数字,oper 是这些字符 +、-、*、/ 的数字。
代码:
int main()
{
char oper;
double a, b;
printf("What do you want to calculate?\n");
if (scanf("%lf %1[-+/*] %lf", &a, &oper, &b) != 3)
printf("Error. Invalid input.\n");
else {
switch(oper)
{
case '+':
printf("%f+%f=%.2f",a,b,a+b);
break;
case '-':
printf("%f-%f=%.2f",a,b,a-b);
break;
case '*':
printf("%f*%f=%.2f",a,b,a*b);
break;
case '/':
if(b != 0)
{
printf("%f/%f=%.2f",a,b,a/b);
break;
}
else
{
printf("Error! You can not divide by 0.");
break;
}
default:
printf("Error! Invalid operator.");
break;
}}
return 0;
}
问题:
当用户输入例如这个输入时:
123
程序将冻结。
同时当用户输入这些输入时:
123 5
123 ab
Hello
我们的程序将打印出来
ERROR. Invalid input.
我真的需要你的帮助。请您修复我的代码,以便我们输入此输入,例如:
123
我们的程序将打印出来
ERROR. Invalid input.
谢谢
【问题讨论】:
-
你也有
char oper; ... scanf("%lf %1[-+/*] %lf", &a, &oper, &b)的问题。更改为char oper[2]和scanf("%lf %1[-+/*] %lf", &a, oper, &b)。
标签: c calculator