本人用C语言写了一个猜拳游戏,运行结果如图:求大神解释如何修改才能使字符型的do....while判断语句符合要求(第二个主函数).....
运用第一个主函数时的运行结果:
运用第二个主函数时的运行结果:
代码如下:
#include<stdio.h>
#include<time.h>
int User_Choice()
{
int u;
do
{
printf("请出拳(1-石头,2-剪刀,3-布):");
scanf("%d",&u);
switch(u)
{
case 1:printf("你出的是石头!\n");break;
case 2:printf("你出的是剪刀!\n");break;
case 3:printf("你出的是布!\n");break;
default:printf("你的输入有误,请重新输入!\n");continue;
}
}while(u<1||u>3);
return u;
}
int Computer_Choice()
{
int c;
srand(time(0));
c=rand()%3+1;
switch(c)
{
case 1:printf("电脑出的是石头!\n");break;
case 2:printf("电脑出的是剪刀!\n");break;
case 3:printf("电脑出的是布!\n");break;
}
return c;
}
void Compare(int c, int u)
{
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");
}
void main()
{
int c,u;
int flag=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");
}
/*
void main()
{
int c,u;
char ans;
do
{
u=User_Choice();
c=Computer_Choice();
Compare(c,u);
printf("还要继续玩吗?(y/n):");
scanf("%c",&ans);
if((ans=='n')||(ans=='N')) break;
}while((ans=='y')||(ans=='Y'));
printf("谢谢使用!欢迎下次再玩!\n");
}
*/
楼主请看我的修改
运行结果:
#include<stdio.h>if((ans=='n')||(ans=='N')) break; 这一行有用啊,当输入为n时跳出循环啊、、、、
注释掉了也不行啊、、、你看图
我是问你为什么像我这样不行?
追答字符后面是有一个'/0'的,你要考虑这个。