C语言源代码照书上写,但是程序运行错误

程序是求解简单的四则运算表达式,但是运行时总是显示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;

}

测试如下:

追问

额。。请问到底是哪里变化了呢

追答

输入控制符不要有逗号

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-04
请问你的加减乘除里为什么会是%f呢,继续%lf就好。
#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这样输入才能得到结果。否则你要去掉之间的逗号。

本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网