本帖最后由 我说三年 于 2016-4-25 20:58 编辑
这段代码一输入字母就死循环, 我想输入两位数以上或字母都可以结束游戏 应该要怎么优化?
//
// main.c
// 课堂练习
//
//
//
#include <stdio.h>
#include <stdlib.h>
int a = 0;
int b = 0;
int c = 0;
/**
* 玩家
*
* @param a 输入猜拳
*/
void me(int *pA);
/**
* 电脑
*
* @param pB 用来储存电脑随机的变量
*/
void computer(int *pB);
/**
* 用来比较输赢
*
* @param pA 玩家
* @param pB 电脑
* @param pC 比较的结果
*/
void cmp(int *pA,int *pB,int *pC);
int main()
{
while(1)
{
system("clear");
printf("请输入:\n");
scanf("%d",&a);
if(a > 9 || a > 'a')
{
printf("Game Vore\n");
return 0;
}
me(&a);
computer(&b); cmp(&a,&b,&c);
}
return 0;
}
void me(int *pA)
{
while(*pA <= 0 || *pA >= 4)
{
printf("你所输入有误/n请重新输入:\n");
scanf("%d",&*pA);
if(a > 9 || a > 'a')
{
break;
}
}
switch(*pA)
{
case 1:
printf("你出的是:石头\n");
break;
case 2:
printf("你出的是:剪刀\n");
break;
case 3:
printf("你出的是:布\n");
break;
}
}
void computer(int *pB)
{
*pB = arc4random_uniform(3) + 1;
switch(*pB)
{
case 1:
printf("电脑出的是:石头\n");
break;
case 2:
printf("电脑出的是:剪刀\n");
break;
case 3:
printf("电脑出的是:布\n");
break;
}
}
void cmp(int *pA,int *pB,int *pC)
{
*pC = *pA - *pB;
if(*pC == 0)
printf("你和电脑不相上下");
if(*pC == -1 || *pC == 2)
printf("你太厉害了,你赢了!");
if(*pC == -2 || *pC == 1)
printf("太遗憾了,你输了!");
printf("\n");
}
|
|