本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使使用第二个主函数时结果正常?

学习 时间:2026-04-03 10:01:14 阅读:8197
本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使使用第二个主函数时结果正常?本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使字符型的do.while判断语句符合要求(第二个主函数).运用第一个主函数时的运行结果:运用第二个主函数时的运行结果:代码如下:#include<stdio.h>#include<time.h>intUser_Choice(){intu;do{printf("请出拳(1-石头,2-剪刀,3-布):");scanf("%d",&u);switch(u){case1:printf("你出的是石头!\n");break;case2:printf("你出的是剪刀!\n");break;case3:printf("你出的是布!\n");break;default:printf("你的输入有误,请重新输入!\n");continue;}}while(u<1||u>3);returnu;}intComputer_Choice(){intc;srand(time(0));c=rand()%3+1;switch(c){case1:printf("电脑出的是石头!\n");break;case2:printf("电脑出的是剪刀!\n");break;case3:printf("电脑出的是布!\n");break;}returnc;}voidCompare(intc,intu){if((u==1&&c==2)||(u==2&&c==3)||(u==3&&c==1))printf("你赢了!\n");if((c==1&&u==2)||(c==2&&u==3)||(c==3&&u==1))printf("电脑赢了!\n");if(u==c)printf("你和电脑打平了!\n");}voidmain(){intc,u;intflag=1;do{u=User_Choice();c=Computer_Choice();Compare(c,u);printf("还要继续玩吗?(1/0):");scanf("%d",&flag);if(flag==0)break;}while(flag==1);printf("谢谢使用!欢迎下次再玩!\n");}

最佳回答

无心的日记本

饱满的啤酒

2026-04-03 10:01:14

楼主请看我的修改运行结果:#include<stdio。h>#include<time。h>int User_Choice(){\x09int u;\x09do\x09{\x09\x09printf("请出拳(1-石头,2-剪刀,3-布):");\x09\x09scanf("%d",&u);\x09\x09switch(u)\x09\x09{\x09\x09\x09case 1:printf("你出的是石头!\n");break;\x09\x09\x09case 2:printf("你出的是剪刀!\n");break;\x09\x09\x09case 3:printf("你出的是布!\n");break;\x09\x09\x09default:printf("你的输入有误,请重新输入!\n");continue;\x09\x09}\x09}while(u<1||u>3);\x09return u;}int Computer_Choice(){\x09int c;\x09srand(time(0));\x09c=rand()%3+1;\x09switch(c)\x09{\x09\x09case 1:printf("电脑出的是石头!\n");break;\x09\x09case 2:printf("电脑出的是剪刀!\n");break;\x09\x09case 3:printf("电脑出的是布!\n");break;\x09}\x09return c;}void Compare(int c, int u){\x09if((u==1 && c==2)||(u==2 && c==3)||(u==3 && c==1))\x09printf("你赢了!\n");\x09if((c==1 && u==2)||(c==2 && u==3)||(c==3 && u==1))\x09printf("电脑赢了!\n");\x09if(u==c)\x09printf("你和电脑打平了!\n");}void main(){\x09int c,u;\x09char ans;    \x09do\x09{\x09 u=User_Choice();\x09 c=Computer_Choice();\x09 Compare(c,u);\x09 printf("还要继续玩吗?(y/n):");\x09 scanf("%c",&ans); //用来接受回车符\x09 scanf("%c",&ans);\x09// while(ans=='\n') scanf("%c",&ans); //这里主要用来接受回车键\x09 if((ans=='n')||(ans=='N'))            break;\x09}while((ans=='y')||(ans=='Y'));\x09printf("谢谢使用!欢迎下次再玩!\n");}       scanf("%c",&b);        【例2】:        scanf("%d",&x);         scanf("%d",&y);        【例3】:      scanf("%d",&x);         scanf("%c",&a);        【例4】:        scanf("%d",&x);         scanf("%d",&y);                                           scanf("%c",&a);                                          【结论】:        当输入完整数或字符时,后面还需要输入字符时,为了避免输入的字符变成回车符,可以在输入字符前多加一条scanf语句来吃掉前面的回车符。此时用来吃掉回车符的scanf输入可以用%c方式,也可以用%d方式。当用%c方式来吃掉回车符时,回车符被读进了char类型变量中,当用%d方式来吃掉回车符时,回车符并没有被送进int类型变量中,而是在异常的字符输入后,被自动清除了。          */

最新回答共有2条回答

  • 伶俐的大象
    回复
    2026-04-03 10:01:14

    楼主请看我的修改运行结果:#include<stdio。h>#include<time。h>int User_Choice(){\x09int u;\x09do\x09{\x09\x09printf("请出拳(1-石头,2-剪刀,3-布):");\x09\x09scanf("%d",&u);\x09\x09switch(u)\x09\x09{\x09\x09\x09case 1:printf("你出的是石头!\n");break;\x09\x09\x09case 2:printf("你出的是剪刀!\n");break;\x09\x09\x09case 3:printf("你出的是布!\n");break;\x09\x09\x09default:printf("你的输入有误,请重新输入!\n");continue;\x09\x09}\x09}while(u<1||u>3);\x09return u;}int Computer_Choice(){\x09int c;\x09srand(time(0));\x09c=rand()%3+1;\x09switch(c)\x09{\x09\x09case 1:printf("电脑出的是石头!\n");break;\x09\x09case 2:printf("电脑出的是剪刀!\n");break;\x09\x09case 3:printf("电脑出的是布!\n");break;\x09}\x09return c;}void Compare(int c, int u){\x09if((u==1 && c==2)||(u==2 && c==3)||(u==3 && c==1))\x09printf("你赢了!\n");\x09if((c==1 && u==2)||(c==2 && u==3)||(c==3 && u==1))\x09printf("电脑赢了!\n");\x09if(u==c)\x09printf("你和电脑打平了!\n");}void main(){\x09int c,u;\x09char ans;    \x09do\x09{\x09 u=User_Choice();\x09 c=Computer_Choice();\x09 Compare(c,u);\x09 printf("还要继续玩吗?(y/n):");\x09 scanf("%c",&ans); //用来接受回车符\x09 scanf("%c",&ans);\x09// while(ans=='\n') scanf("%c",&ans); //这里主要用来接受回车键\x09 if((ans=='n')||(ans=='N'))            break;\x09}while((ans=='y')||(ans=='Y'));\x09printf("谢谢使用!欢迎下次再玩!\n");}       scanf("%c",&b);        【例2】:        scanf("%d",&x);         scanf("%d",&y);        【例3】:      scanf("%d",&x);         scanf("%c",&a);        【例4】:        scanf("%d",&x);         scanf("%d",&y);                                           scanf("%c",&a);                                          【结论】:        当输入完整数或字符时,后面还需要输入字符时,为了避免输入的字符变成回车符,可以在输入字符前多加一条scanf语句来吃掉前面的回车符。此时用来吃掉回车符的scanf输入可以用%c方式,也可以用%d方式。当用%c方式来吃掉回车符时,回车符被读进了char类型变量中,当用%d方式来吃掉回车符时,回车符并没有被送进int类型变量中,而是在异常的字符输入后,被自动清除了。          */

上一篇 灵魂的英文怎么写?Please tell me..

下一篇 英语翻译如果我是市长,我将尽最大的努力帮助拯救自然资源保护环境,我将要求去做一些广告,使人们关心环境的广告 放在街上 ,