编写一个程序,回合循坏这部分难到了

编写一游戏。游戏面向小学 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))可以吗?