编写一游戏。游戏面向小学 1~2 年级学生,随机选择两个整数和加减法形成算式要
求学生解答。要求:
a 每个游戏回合包括不重复的 10 道题,每题 10 分。每个游戏回合也不得重复本
次游戏中此前回合已出过的题目。
b 只允许进行 100 以内的加减法,两数之和或之差不得超出 0~100 的范围。
c 每道题玩家有三次机会输入答案。第一次输入正确答案得 10 分,第二次得 7
分,第三次得 5 分,其他不得分。当输入错误答案时,提醒玩家重新输入,如
果三次机会结束则输出正确答案。
d 游戏回合结束时显示玩家得分,游戏结束时显示玩家的正确率,包括回合最高
正确率(得分/100)、回合最低正确率(得分/100)及完全正确率(全部回合
中正确题数之和占全部题数的比例)。
e 当游戏参与者输入了正确得数后,随机显示评价结果,例如“Right!”、
“Correct!”、“You got it!”、“That's the answer!”、“Bingo!”、“Gaoding!”
等,若答案错误,则按照格式“No, the answer is x.”输出答案。
以下是我的代码,可以进行一回合的游戏,但是多回合就不会了:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/*fun1:确定加法还是减法,以及相应的标准答案*/
int fun1(int a1,int a2)
{
int a3;//标准答案
char bln;//加法或减法的标识
if(rand() % 2 == 1)//只产生0或1,设1为加法,0为减法
{
a3 = a1 + a2;
bln = '+';
}
else
{
a3 = a1 - a2;
bln = '-';
}
printf("%3d%2c%3d = ",a1,bln,a2);
return fun2(a3);
}
/*fun2:计算玩家每题得分*/
int fun2(int a3)
{
int x;//x为玩家输入的结果
scanf("%d",&x);
if(x == a3)
{
printf("Bingo!\n");
return 10;
}
else
{
printf("wrong, input again please:");
scanf("%d",&x);
if(x == a3)
{
printf("Bingo!\n");
return 7;
}
else
{
printf("wrong, input again please:");
scanf("%d",&x);
if(x == a3)
{
printf("Bingo!\n");
return 5;
}
else
{
printf("No,the answer is %d\n",a3);
return 0;
}
}
}
}
void main()
{
int a1,a2,i,sum = 0;//a1,a2为计算机随机生成的两个整数,sum为玩家回合结束时的得分
srand((unsigned)time(NULL));
for(i = 1;i <= 10;i++)
{
a1 = rand() % 51;//产生第一个随机数,根据要求,这个数>=0,<=50
a2 = rand() % 51;
while(a1 < a2)//为了便于减法运算,第二个随机数要比第一个随机数小
a2 = rand() % 51;
printf("(%d)",i);//输入题目编号
sum = sum + fun1(a1,a2);
}
printf("\nYour total score is: %4d\n",sum);
}
死方法(整个套一个while(1))可以吗?