石头剪刀布
石头剪刀布
#include
void main()
{
int N=0,b=0,play_1=0,play_2=0;
char l[100];
printf("please input the number of the test groups:\n");
scanf("%d",&N);//表明接下来有N组测试数据
while(N)
{
printf("please input the number of the rounds in every competition:\n ");
scanf("%d",&b);//表示两个人有b轮比赛
while(b)
{
printf("please input the 'R'or'S'or'P':\n");
for(int i=0;i<3;i++)
{
if(i!=0)
{
printf("player1 and plarer2's inputing:\n");
}
l[i]=getchar();
}
if(l[1]=='R')
{
if(l[2]=='S')
play_1++;
else if(l[2]=='P')
play_2++;
}
if(l[1]=='S')
{
if(l[2]=='P')
play_1++;
else if(l[2]=='R')
play_2++;
}
if(l[1]=='P')
{
if(l[2]=='R')
play_1++;
else if(l[2]=='S')
play_2++;
}
b--;
}
N--;
}
if(play_1>play_2)
printf("Player 1\n");
else if(play_1==play_2)
printf("TIE\n");
else
printf("Player 2\n");
}
这个就没问题了。你的程序错误在于:
1、你用for(i=0;i<3;i++)
l[i]=getchar();
这一部分的时候,应该对l[i]=getchar();这一部分的前后加上花括号,如果不加,则会在得到 l[0]以后就进行接下来的if判断了,但实际上现在的 l[1]、 l[2]根本还没有赋值。
2、同样的,在你使用for(i=0;i<3;i++)
{ l[i]=getchar(); }
这一部分之前,你要从键盘上键入b的值,从外界输到内存里面用什么结束呢?对,是用回车键确定输入,这个回车键将会被作为一个字符储存到你的l[0]里面,使你的I[0]无法被赋为你想输入的R、P、S。所以这里的比较只能比较l[1]和l[2],而l[0]则用来吞掉每次输入R、S、P之后键入的空格。
3、这个错误应该是你太马虎了,你应该输入的是大写的R、S、P哦,你在比较的时候将大写R写成了小写r,所以程序出错了。
我将你的程序完善了一下,给出了每一步步骤的提示,然后给两个选手都进行了记分。我运行了一下,应该是对的。
for(i=0;i<3;i++)
l[i]=getchar();
改为gets(l);
相应的判断改一下
相关内容