C语言程序如下!为什么我还没有输入第3个数就直接出现结果了啊?顺便问下最后还想输出正确等式改这么写?

#include<stdio.h>voidmain(){intx,y,z,m;charc;printf("pleaseinputtwonumbers:\n");scanf... #include<stdio.h>
void main()
{
int x,y,z,m;
char c;
printf("please input two numbers:\n");
scanf("%d,%d,",&x,&y);
printf("please input a number:\n");
scanf("%d",&m);
printf("please input +or -or *or /:\n");
scanf("%c",&c);
switch(c)
{
case '+': z = x+y;break;
case '-': z = x-y;break;
case '*': z = x*y;break;
case '/': z = x/y;break;
}
if (z==m)
printf("Perfect");
else
printf("Error");
printf("%z",z);
}
展开
 我来答
guichengliu
2011-04-08 · TA获得超过1071个赞
知道小有建树答主
回答量:204
采纳率:100%
帮助的人:84.9万
展开全部
一楼解决方法是正确的,但回答是错误的!
“你输入第三个数之后打了一个回车,回车 就当做字符 给四个输入 了”这个错了,并不是直接将打的回车当做字符,而是按下回车后,会产生两个换行符:'\r‘ 和'\n'
第一个换行表示输入结束,第二个换行才当做了下一个字符的输入!
所以可以用getchar()来消掉回车!
另外,消回车不止这一个方法!还有一个方法:使用fflush(stdin);函数消回车!
#include<stdio.h>
void main()
{
int x,y,z,m;
char c;
printf("please input two numbers:\n");
scanf("%d,%d,",&x,&y);
printf("please input a number:\n");
scanf("%d",&m);
fflush(stdin);
printf("please input +or -or *or /:\n");
scanf("%c",&c);
switch(c)
{
case '+': z = x+y;break;
case '-': z = x-y;break;
case '*': z = x*y;break;
case '/': z = x/y;break;
}
if (z==m)
printf("Perfect");
else
printf("Error\n");
printf("%d",z);
while(1);
}
应该仔细看看scanf函数说明!
将%z改成%d就可以输出正确结果了! Error后边最好接个回车符,这样结果会清晰些!

参考资料: http://baike.baidu.com/view/1390039.htm#4

qcj1012
2011-04-08 · TA获得超过510个赞
知道小有建树答主
回答量:200
采纳率:100%
帮助的人:262万
展开全部
原因是 你输入第三个数之后打了一个回车
回车 就当做字符 给四个输入 了
所以 就产生错误的结果 输入完第三个数 之后加个
getchar()来吸收回车 就得出正确结果了
#include<stdio.h>
void main()
{
int x,y,z,m;
char c;
printf("please input two numbers:\n");
scanf("%d,%d,",&x,&y);
printf("please input a number:\n");
scanf("%d",&m);
getchar();
printf("please input +or -or *or /:\n");
scanf("%c",&c);
switch(c)
{
case '+': z = x+y;break;
case '-': z = x-y;break;
case '*': z = x*y;break;
case '/': z = x/y;break;
}
if (z==m)
printf("Perfect");
else
printf("Error");
printf("%z",z);
return 0;
}
追问
那我把输入数字和符号的顺序改了还是那样的。。。。。这么回事啊?顺便问下顺便问下最后还想输出正确等式改这么写? 
还有return 0是什么意思?
追答
在输入符号 之前都要加个getchar啊
printf("x+y=%d")这样的 基本
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友017c95f
2011-04-08 · TA获得超过138个赞
知道答主
回答量:28
采纳率:0%
帮助的人:36万
展开全部
#include<stdio.h>
int main()
{
int x, y, z, m;
char c;
printf("please input two numbers:\n");
scanf("%d,%d,", &x, &y);
printf("please input a number:\n");
scanf("%d", &m);
getchar();
printf("please input +or -or *or /:\n");
scanf("%c", &c);
printf("\n");
switch (c)
{
case '+':
z = x + y;break;
case '-':
z = x - y;break;
case '*':
z = x * y;break;
case '/':
z = x / y;break;
}
if (z == m)
printf("Perfect\n");
else
printf("Error\n");
printf("%d%c%d=%d\n", x,c,y,z);
return 0;
}
这个是你想要的吧,return 0是因为开始用了int main()需要返回值,如果用void main()就不需要返回值。
追问
想输出正确的等式结果。。。就是不知道怎么输啊
追答
如果是正确的等式结果将printf("%d%c%d=%d\n", x,c,y,z);改成printf("%d\n",z);就可以了,但是输出的z是一个整数,如果5/3就只能是1,不知道你那个结果是不是想要更加精确的,还是只要一个整数
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yolanda_xfy
2011-04-08
知道答主
回答量:27
采纳率:0%
帮助的人:18.6万
展开全部
#include<stdio.h>
void main()
{
int x,y,z,m;
char ch;
printf("please input two numbers:\n");
scanf("%d%d",&x,&y); /*双引号里最好不要有多余的符号,如果有符号,你要照着你的格式输入*/
printf("please input a number:\n");
scanf("%d",&m);
printf("please input + or - or * or / :\n");
getchar();/*吸收之前的回车*/
ch=getchar();
switch(ch)
{
case '+':
z = x+y;
break;
case '-':
z = x-y;
break;
case '*':
z = x*y;
break;
case '/':
z = x/y;
break;
}
if (z==m)
printf("Perfect\n");
else
printf("Error\n");
printf("z=%d\n",z);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式