各位可能在初学C语言的时候都有写过猜拳游戏。但在写猜拳的函数时,避免不了会使用循环。
当函数被套在一个循环中的时候,你的计分变量可能就会被重置为函数体里的初始值。那么怎么解决这个问题?
其实很简单,你需要在循环体中加入一个累加变量,从而使得函数体的单循环计分通过main函数里的循环成为最后的总积分,并且由此来判断最终你的积分和输赢。
以下是我写的部分代码 ,欢迎指正!
1.函数体部分
int compare(int x,int y){ int j = 0;//函数外的每次循环会使得j的值初始化 if(x<3&&x>0){ if(y-x==0){ printf("此次猜拳两人打成平手!"); } if(y-x==1||x-y==1){ if(x>y){ printf("此次猜拳你赢了!加一分!"); j++; } else{ printf("此次猜拳电脑赢了!减一分!"); j--; } } if(y-x==2||x-y==2){ if(x>y){ printf("此次猜拳电脑赢了!减一分!"); j--; } else{ printf("此次猜拳你赢了!加一分!"); j++; } } } else{ printf("您输入错误!\n"); } return j;//返回值在每次主函数循环中会初始化 }
2.main主体
for(i=0;i<5;i++){ printf("\n"); printf("请输入您的出拳!"); scanf("%d",&x); y = rand()%3; printf("电脑出拳为:%d\n",y); ary[i] = compare(x,y); sum += ary[i];//用sum变量很容易解决了计分变量的初始化问题 }
时间: 2024-10-20 12:29:45