bool change = false
bool draw = false
for (int k = 1k <playersk++) {
if (player[k].hand + 1 == win || (player[k].hand == 2 &&win == 0)) {
if (change) {
printf("平局\n")
draw = true
break
} else {
win = player[k].hand
change = true
}
} else if (player[k].hand - 1 == win || (player[k].hand == 0 &&win == 2)) {
if (!change) change = true
}
}
if (!change) {
printf("平局\n")
draw = true
}
if (!draw) {
printf("player ")
for (int k = 0k <playersk++)
if (player[k].hand == win) {
player[k].winCount++
printf("%d ", k + 1)
}
printf("胜\n")
}
以上是课题一。
----------------------------------
以下是课题二。
printf("胜数 ")
int max = 0
for (int k = 0k <playersk++) {
if (player[k].winCount >max) max = player[k].winCount
printf("%d胜 ", player[k].winCount)
}
printf("\nplayer ")
for (int k = 0k <playersk++) {
if (player[k].winCount == max) printf("%d ", k + 1)
}
printf("胜\n")
------------------------------------
以上代码纯手打,请自行编译,出现问题欢迎追问。
#include <stdio.h>#include <stdlib.h>
#include <time.h>
void main()
{
int rand_0(void)
int game(int inp)
int start,yes=1,inp,inp_1=1 char y
while(yes)/*预防用户输入1或2以外的数据*/
{
printf("1:开始游戏\n2:排行榜\n")
scanf("%d",&start)
if((start!=1)&&(start!=2))
{
printf("请输入1或2\n")
}
else
yes=0
}
start:
if(start==1)/*如果用户选择开始游戏……*/
{
printf("你出?\n1:石头\n2:剪刀\n3:布\n")
while(inp_1) /*预防用户输入别的数据*/
{
scanf("%d",&inp)
if((inp!=1)&&(inp!=2)&&(inp!=3))
{
printf("你出?\n1:石头\n2:剪刀\n3:布\n")
}
else
{
inp_1=0
switch(game(inp))
{
case 1:printf("\n\n恭喜你,你赢了!\n\n")break
case 0:printf("\n\n很遗憾,你输了!\n\n")break
case 2:printf("\n\n平局\n\n")break
}
}
}
}
inp_1=1
printf("\n\n是否重新开始游戏?(y/n)")
scanf("%s",&y)
if((y=='y')||y=='Y')
goto start
else
return 0}
int rand_0(void) /*取随机数*/
{
int i,rand_1
srand((unsigned)time(NULL))
for(i=1i<=10i++)
{
rand_1=rand()%4
if(rand_1==0) continue
return(rand_1)
}
}
int game(int inp)
{
int random,win /*win变量,1是赢,2是平,0是输*/
random=rand_0()
switch(inp)
{
case 1:if(random==3) return win=0
else if(random==2) return win=1
else return win=2
case 2:if(random==3) return win=1
else if(random==2) return win=2
else return win=0 case 3:if(random==3) return win=2
else if(random==2) return win=1
else return win=0
}
}就做了那么点点。。。