永发信息网

c语言 计算器 出不来结果啊

答案:3  悬赏:0  手机版
解决时间 2021-03-11 07:51
  • 提问者网友:活着好累
  • 2021-03-10 10:02
程序一开始就输入 +9 为什么没输出??这样输难道不是对应第二个if语句吗??
怎么还没结果
#include
#include
#include
main()
{
float a,b,m,x=0;
int i=1;
char c='0',d;
printf("乘方:!\t开方:@\t清空#\t\n");
printf("=====================================\n\n");
printf("0");
while(i)
{
if(scanf("%f%c%f",&a,&c,&b))
{
switch(c)
{
case '+':x=a+b;
printf("=%f\n",x);
printf("%f",x);
break;
case '-':
x=a-b;
printf("=%f\n",x);
printf("%f",x);
break;
case '*':scanf("%f",&m);
x=a*b;
printf("=%f\n",x);
printf("%f",x);
break;
case '/':scanf("%f",&m);
x=a/b;
printf("=%f\n",x);
printf("%f",x);
break;
case '!':x=pow(a,b);
printf("=%f\n",x);
printf("%f",x);
break;
default:printf("输入错误\n\n");
}
}

else if(scanf("%c",&c))
{
switch(c)
{
case '+':
scanf("%f",&m);
x=m+x;
printf("=%f",x);
break;
case '-':
scanf("%f",&m);
x=x-m;
printf("=%f",x);
break;
case '*':
scanf("%f",&m);
x=m*x;
printf("=%f",x);
break;
case '/':
scanf("%f",&m);
x=x/m;
printf("=%f",x);
break;
case '#':
x=sqrt(x);
printf("X开方得%f\n",x);
printf("%f",x);
break;
case '@':
x=0;
printf("0");
break;
case '!':
x=pow(x,m);
printf("=%f",x);
break;
default:
printf("输入错误\n\n");
printf("%f",x);
}
getchar();
}
}
system("PAUSE");
}
最佳答案
  • 五星知识达人网友:骨子里都是戏
  • 2021-03-10 10:43
大神啊.你是怎么想的啊.用 scanf 函数的返回值做为 if 的条件判断语句.
我想知道, 你认为 scanf 函数在什么时候会返回 0 (逻辑假) 啊.
按你这个写法( 第一个 if(scanf("%f%c%f", &a, &c, &b)) 语句 )
将永远不会得到假 所以后面的 if 语句完全是无用功.
也就是这个 if 语句永远为真.
全部回答
  • 1楼网友:你哪知我潦倒为你
  • 2021-03-10 11:36
学校发了一本小册子,不知道你看到没有?最后几页专门的学分绩点的计算方法。的 纪律规定的学分乘以每次考试成绩= a,b,c ... 所有学科的a + b + c + ... = x 所有积分总和等于y x除以由y抽奖成绩来
  • 2楼网友:往事隔山水
  • 2021-03-10 10:51
if(scanf("%f%c%f",&a,&c,&b)) 这句话表示输入3个数,你应该输入1.0+2.0; 你前面的printf("0");没什么意义,去掉吧; 你执行的时候printf("0");输出0误导你了吧。 好像是我理解错了,你看看scanf的返回值,它返回成功赋值的数据项数,所以if判断总是ture的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯