24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2025级博士研究生招生报考通知
查看: 1422  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

listenkang

新虫 (初入文坛)

[求助] 请C语言的人们看看我这个最简单的小程序哪里有问题呢

没有报错 只是不是我想要运行的正确的结果。我想要这个程序实现的是:随机两个数相加,若输出正确的结果,则显示you are right,显示错误的结果,则显示you are wrong,然后问你是否要继续,请输入y或者n,如果你输入y,则重新开始,如果输入n,则谢谢你,你输入其他字符,则提示你请正确输入y或者n。
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
void main()
{int x,y,z;char c;
l:  x=rand();
        y=rand();
printf("%d+%d=?\n",x,y);
scanf("%d",&z);
z=x+y?printf("you are right\n":printf("you are wrong\n";

printf("do you want more? please answer with y or n\n";

m: scanf("%c",&c);
switch(c)
{case '\n':printf("thankyou!bye bye";break;
case '\y':goto l;break;
default:printf("please enter y or n again\n";goto m;
}
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hyj22998

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
是条件运算语句:z=x+y?printf("you are right\n":printf("you are wrong\n" 的错误。
应改为:z==x+y?printf("you are right\n":printf("you are wrong\n"。
一个等号在C语言中是赋值运算符,两个等号“==”才是判断是否相等的关系运算符。在原语句中是将x,y赋值给Z,然后执行的是printf("you are right\n",虽然是逻辑与设定的逻辑不符,但编译器只给出语法错误,而不能发现逻辑错误,逻辑错误需debug才能发现。
6楼2013-07-08 17:13:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

jackdaniel

捐助贵宾 (著名写手)

做最善良的那一只

【答案】应助回帖

感谢参与,应助指数 +1
switch(c)这句里好像是有问题的,为什么'n'和'y'要处理成'\n'和'\y'?'\n'是回车换行啊。。还有,如果没记错scanf("%c",&c)这句之前应该再有一句来处理输入的结果z之后的那个回车。。
然后就是建议给出所谓的“不是我想要运行的正确的结果”的结果,并且最好能自己进行一下单步调试,毕竟这段代码并不复杂。
对自己负责
2楼2013-07-08 12:31:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Medichen

铜虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
z=x+y?printf("you are right\n)":printf("you are wrong\n";
改成下面试试:
z==x+y?printf("you are right\n)":printf("you are wrong\n";
另,你的程序用了太多的goto,改成循环好些
笨鸟先飞!
3楼2013-07-08 12:32:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

youth0826

至尊木虫 (著名写手)

weibo.com/138147022

【答案】应助回帖

感谢参与,应助指数 +1
循环用while,里面带getchar
QQ群:202610705,关注计算机视觉,模式识别,模式分析,机器学习,人工智能,统计学习,图像处理等,欢迎加入!
4楼2013-07-08 12:52:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见