帮你修改了一下。问题有四点一: while (goon== 'y '||goon== 'Y ');中'y '和'Y '有空格,不是字符了,所以循环有问题。二:void adjudicate(int a , int b);应该是这样的,把a,b的结果要传递给这个函数三:对于石头和布情况判断的问题。
if( a*b == 3) a^=b^=a^=b;我用这语句作调整。
四:if(a=b)改为if(a == b)#include
#include
#include
void main()
{
int choiceUser();
int choiceComputer();
void adjudicate(int a , int b); int a,b;
char goon;
do
{
a=choiceUser();
b=choiceComputer();
adjudicate(a , b); printf( "是否继续(Y/N)? ");
fflush(stdin);
goon = getchar();
}
while(goon == 'y'|| goon== 'Y');
}int choiceUser()
{
int a;
printf("请出拳1-石头、2-剪刀、3-布:
");
scanf("%d",&a);
switch(a)
{
case 1:
printf("您出的是石头
");
break;
case 2:
printf("您出的是剪刀
");
break;
case 3:
printf("您出的是布
");
break;
default:printf("您的输入有误
");
}
return a;
}
int choiceComputer()
{
int rand();
int b; srand((unsigned)time(NULL));
b=rand()%3 1;
switch(b)
{
case 1:
printf("电脑出的是石头
");
break;
case 2:
printf("电脑出的是剪刀
");
break;
case 3:
printf("电脑出的是布
");
break;
default:printf("电脑的输入有误
");
}
return b;
}
void adjudicate(int a , int b)
{
if( a*b == 3) a^=b^=a^=b;
if(a==b)
{
printf("平手
");
}
else if( a < b)
{
printf("你赢了
");
}
else
{
printf("你输了
");
}
}。
全部