程序是求解简单的四则运算表达式,但是运行时总是显示Unknown operator
源代码如下
#include<stdio.h>
int main(void)
{
double value1,value2;
char op;
printf("Type in an expression:");
scanf("%lf,%c,%lf",&value1,&op,&value2);
switch(op){
case'+':
printf("=%.2f\n",value1+value2);
break;
case'*':
printf("=%.2f\n",value1*value2);
break;
case'-':
printf("=%.2f\n",value1-value2);
break;
case'/':
printf("=%.2f\n",value1/value2);
break;
default:
printf("Unknown operator\n");
break;
}
return 0;
}
将输入改为:scanf("%lf%c%lf",&value1,&op,&value2);
#include<stdio.h>
int main(void)
{
double value1,value2;
char op;
printf("Type in an expression:");
scanf("%lf%c%lf",&value1,&op,&value2);
switch(op){
case'+':
printf("=%.2f\n",value1+value2);
break;
case'*':
printf("=%.2f\n",value1*value2);
break;
case'-':
printf("=%.2f\n",value1-value2);
break;
case'/':
printf("=%.2f\n",value1/value2);
break;
default:
printf("Unknown operator\n");
break;
}
return 0;
}
测试如下:
追问额。。请问到底是哪里变化了呢
追答输入控制符不要有逗号
#include<stdio.h>
int main(void)
{
double value1,value2;
char op;
printf("Type in an expression:");
scanf("%lf,%c,%lf",&value1,&op,&value2);
switch(op){
case'+':
printf("=%.2lf\n",value1+value2);
break;
case'*':
printf("=%.2lf\n",value1*value2);
break;
case'-':
printf("=%.2lf\n",value1-value2);
break;
case'/':
printf("=%.2lf\n",value1/value2);
break;
default:
printf("Unknown operator\n");
break;
}
return 0;
}追问
改掉后运行还是总是输出Unknown operator
追答楼下说的没错,因为你的scanf中表达的%lf和%c以及%lf都有“,”(逗号)分隔,所以你在输入的时候就必须按照10(逗号)+(逗号)20这样输入才能得到结果。否则你要去掉之间的逗号。
本回答被提问者和网友采纳