24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1604  |  回复: 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的回帖

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的回帖

twofirst

木虫 (正式写手)

挖掘机

【答案】应助回帖

感谢参与,应助指数 +1
3楼说得对,初学者要注意判断等式是 ==。
goto方面,可以练习一下去了解运行过程,但在实际应用中能不用尽量不用,因为有不少专家发文章批判它,现在它快“臭名昭著”了
我要挖得更深~挖得更深~~
5楼2013-07-08 14:42:43
已阅   回复此楼   关注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的回帖

linhuibiao

金虫 (小有名气)

【答案】应助回帖

goto语句改用for或while语句来实现循环程序会更容易读
你这个程序,最好用函数调用来实现替换goto语句
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";
case '\y':goto l;break;
改为:case 'y':goto l;break;
7楼2013-08-05 18:24:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 listenkang 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 求调剂 +7 吃口冰激凌 2026-04-07 7/350 2026-04-08 22:49 by bljnqdcc
[考研] 调剂 +9 月@163.com 2026-04-08 9/450 2026-04-08 21:44 by ZMQAHPU
[考研] 一志愿211,化学学硕,310分,本科重点双非,求调剂 +10 努力奋斗112 2026-04-07 10/500 2026-04-08 15:01 by screening
[考研] 284求调剂 +17 梵@@ 2026-04-06 17/850 2026-04-08 11:35 by 1shin_ichi
[考研] 一志愿生物与医药,296分,求调剂 +14 66鹿 2026-04-03 16/800 2026-04-08 10:38 by tjzhao
[考研] 一志愿西南090202求调剂 +4 在线求有学上 2026-04-07 4/200 2026-04-07 19:47 by biomichael
[考研] 312求调剂 +18 gtw1 2026-04-06 20/1000 2026-04-07 18:16 by 蓝云思雨
[考研] 生物调剂 +5 橙子橙子橙子啊 2026-04-05 9/450 2026-04-07 15:31 by 上岸快快
[考研] 一志愿北京2,材料与化工308求调剂 +16 熊二想上岸 2026-04-04 17/850 2026-04-07 14:58 by BruceLiu320
[考研] 085404 293求调剂 +8 勇远库爱314 2026-04-06 9/450 2026-04-07 13:05 by flydream1314
[考研] 292求调剂 +4 lilllllxccc 2026-04-05 5/250 2026-04-07 09:29 by 纺大杨老师
[考研] 复试调剂 +14 呼呼?~+123456 2026-04-05 14/700 2026-04-06 22:50 by chenzhimin
[考研] 材料专硕322 +11 哈哈哈吼吼吼哈 2026-04-05 11/550 2026-04-06 14:07 by lqwchd
[考研] 341求调剂 +3 学无止境,冲 2026-04-05 3/150 2026-04-05 09:40 by lbsjt
[考研] 333求调剂 +12 wfh030413@ 2026-04-03 13/650 2026-04-04 21:02 by jj987
[论文投稿] 求文献 5+3 ys879651$ 2026-04-02 3/150 2026-04-04 17:22 by bobvan
[考研] 求生物学专业调剂-332分 +5 云朵遛弯指南 2026-04-04 5/250 2026-04-04 10:05 by rzh123456
[考研] 278求调剂 +6 Yy7400 2026-04-03 6/300 2026-04-04 09:53 by zhangdingwa
[考研] 281求调剂 +10 aaawhy 2026-04-03 10/500 2026-04-03 21:42 by lbsjt
[考研] 283求调剂 +3 jiouuu 2026-04-02 4/200 2026-04-02 14:08 by 哒哒哒呱呱呱
信息提示
请填处理意见