C语言 加减乘除 字符 问题
第一行 表示 输入测试数据 有几组下面 输入 测试数据,有小数 保留2位
比如 输入
2
+ 5 6
/ 1 5
输出
11
0.20
# include <stdio.h>
int main()
{
char a;
int b,c,d,i;
float j;
scanf("%d",&b);
for(i=1;i<=b;i++)
{
scanf("%c %d %d",&a,&c,&d);
if(a == '+')
printf("%d\n",c+d);
if(a == '-')
printf("%d\n",c-d);
if(a == '*')
printf("%d\n",c*d);
if(a == '/')
{
if(c % d != 0)
{
j=(float)c/d;
printf("%.2f",j);
}
else
printf("%d",c/d);
}
}
return 0;
}
我发现我的代码 根本不能输出,调试发现 输入a 的值并不是 + - * /,所以都不符合条件,但是我不明白为什么 我输入是+,但是事实上不是 +。
求 大神 帮帮忙,我不知道如何改 # include <stdio.h>
int main()
{
char a;
int b,c,d,i;
float j;
scanf("%d",&b);
fflush(stdin);
for(i=1;i<=b;i++)
{
scanf("%c %d %d",&a,&c,&d);
if(a == '+')
printf("%d\n",c+d);
if(a == '-')
printf("%d\n",c-d);
if(a == '*')
printf("%d\n",c*d);
if(a == '/')
{
if(c % d != 0)
{
j=(float)c/d;
printf("%.2f",j);
}
else
printf("%d",c/d);
}
}
return 0;
}
ryxcaixia 发表于 2015-11-12 14:23
# include
int main()
{
fflush(stdin);
这个是 什么 意思的,没有学过,看不懂 你在cmd界面输入是
2(回车)
d把2读走了, 换行字符当然还停留在缓冲区
所以a就把\n(ascii字符是10)读走了
所以在scanf输入字符的时候
适当的清理下缓冲区 独一无② 发表于 2015-11-12 14:25
fflush(stdin);
这个是 什么 意思的,没有学过,看不懂
按照字面理解
清理标准输入的缓冲区
把代码贴进去
看看是不是你想要的效果 ryxcaixia 发表于 2015-11-12 14:27
你在cmd界面输入是
2(回车)
d把2读走了, 换行字符当然还停留在缓冲区
哦哦,原来是这样 ,还有一个疑问,那时候我好像从书上看到,scanf 不能接受 换行 和 空格的吗? getchar 可以的, ryxcaixia 发表于 2015-11-12 14:29
把代码贴进去
看看是不是你想要的效果
恩恩,是的,正确的
scanf遇到换行或者空格或者回车就停止
如果想接收整行输入 可以用gets ryxcaixia 发表于 2015-11-12 14:38
scanf遇到换行或者空格或者回车就停止
如果想接收整行输入 可以用gets
哦哦,懂了,谢谢了
页:
[1]