请大家帮帮忙,这个为什么错了呀
#include <stdio.h>int main()
{
int a,b;
float result;
char i;
printf("请输入式子:");
scanf("%a %c %b",&a,&i,&b) ;
switch(i)
{
case '-': b=-b;
case '+': result=a+b;break;
case '*': result=a*b;break;
case '/':
if(b==0)
{
printf("很遗憾,除数不能为零!\n");break;
}
else
{
result=(float)a/b;break;
}
}
printf("结果是%.2f\n",result) ;
return 0;
} #include <stdio.h>
int main()
{
int a,b;
float result;
char i;
printf("请输入式子:");
scanf("%a %c %b",&a,&i,&b) ;
switch(i)
{
case '-': b=-b;break;
case '+': result=a+b;break;
case '*': result=a*b;break;
case '/':
if(b==0)
{
printf("很遗憾,除数不能为零!\n");break;
}
else
{
result=(float)a/b;break;
}
}
printf("结果是%.2f\n",result) ;
return 0;
}
另外你这个逻辑有问题啊……a-b输出的是不确定的啊。(没有设置result) 本帖最后由 claws0n 于 2018-8-5 17:59 编辑
scanf("%d %c %d",&a,&i,&b) ;这个才是关键,使得代码错误。后面的逻辑确实有问题~ 无符号整形 发表于 2018-8-5 17:54
另外你这个逻辑有问题啊……a-b输出的是不确定的啊。(没有设置result)
那里不可以放 break
他是让 b 为负,再接 result = a + b; break;
水煮凉凉:
一般上避免这样的语句~ #include <stdio.h>
int main()
{
int a,b;
float result;
char i;
printf("请输入式子:");
scanf("%d%c%d",&a,&i,&b);//%d表示整形空格去掉好看点
switch(i)
{
case '-': result=a-b;break;
case '+': result=a+b;break;
case '*': result=a*b;break;
case '/':
if(b==0)
{
printf("很遗憾,除数不能为零!\n");break;
}
else
{
result=(float)a/b;break;
}
}
printf("结果是%.2f\n",result) ;
return 0;
}
不再想起y 发表于 2018-8-5 18:19
#include
int main()
{
放空格不是为了好看不好看,而是吸收空白~
如果没有空格,而用户输入的是有空格的话,5 + 6 这样的输入是无效的 本帖最后由 不再想起y 于 2018-8-5 19:40 编辑
claws0n 发表于 2018-8-5 18:23
放空格不是为了好看不好看,而是吸收空白~
如果没有空格,而用户输入的是有空格的话,5 + 6 这样的输入 ...
你可以自己试试,直接输入23+22就可以了,中间不需要敲空格,两个都可以没什么问题,个人习惯直接敲进去,不用空格,如果是(“%d%d%d”)那肯定不行要用(“%d %d %d”)。
不再想起y 发表于 2018-8-5 19:28
你可以自己试试,直接输入23+22就可以了,中间不需要敲空格
我知道,那你怎样确定说用户不会空格呢?
你现在输入的是1+2,那你输入1 + 2看看 claws0n 发表于 2018-8-5 19:33
我知道,那你怎样确定说用户不会空格呢?
你现在输入的是1+2,那你输入1 + 2看看
那客户输入1 + 2怎么办呢, 不再想起y 发表于 2018-8-5 19:41
那客户输入1 + 2怎么办呢,
可以……会吸收无限个空格~ 吸收无限空格版
#include<stdio.h>
int main()
{
int a,b;
float result;
char ch,n;
printf("请输入式子:");
while(scanf("%d",&a))
{
while(( ch=getchar())==' ');
ungetc(ch,stdin);
break;
}
while(scanf("%c",&n))
{
while(( ch=getchar())==' ');
ungetc(ch,stdin);
break;
}
scanf("%d",&b);
switch(n)
{
case '-': result=a-b;break;
case '+': result=a+b;break;
case '*': result=a*b;break;
case '/':
if(b==0)
{
printf("很遗憾,除数不能为零!\n");break;
}
else
{
result=(float)a/b;break;
}
}
printf("结果是%.2f\n",result) ;
return 0;
}
不好意思,刚去试了加一个空格确实可以吸收无限空格,???不懂了
页:
[1]