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);
} 展开
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);
} 展开
4个回答
展开全部
一楼解决方法是正确的,但回答是错误的!
“你输入第三个数之后打了一个回车,回车 就当做字符 给四个输入 了”这个错了,并不是直接将打的回车当做字符,而是按下回车后,会产生两个换行符:'\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后边最好接个回车符,这样结果会清晰些!
“你输入第三个数之后打了一个回车,回车 就当做字符 给四个输入 了”这个错了,并不是直接将打的回车当做字符,而是按下回车后,会产生两个换行符:'\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
展开全部
原因是 你输入第三个数之后打了一个回车
回车 就当做字符 给四个输入 了
所以 就产生错误的结果 输入完第三个数 之后加个
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;
}
回车 就当做字符 给四个输入 了
所以 就产生错误的结果 输入完第三个数 之后加个
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")这样的 基本
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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()就不需要返回值。
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,不知道你那个结果是不是想要更加精确的,还是只要一个整数
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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);
}
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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询