一道关于C语言的题目求帮助!

1. 电脑随机产生1000—9999之间的数字(包括1000、9999);
提示:用rand函数,该函数在stdlib.h库中,并保证多次运行产生不同的随机数
2. 玩家每轮有七次猜数的机会,如果七次都没有猜到,则失败,判为0分;
3. 玩家每轮可以请求帮助,提问关于产生数字的信息,扣分细则如下;
4. 游戏以百分制形式,初始分为100,最后得分最多为赢家。
 帮助内容及扣分细则:
. 判断你所猜的数中各位数字对应位置正误情况,以R表正确,E表错误。若随机数是2537,而猜的数是1234,则输出EERE,代表猜的数第3位正确,第1,2,4位错误。
——扣当前分数的1/10
. 判断你所猜的数中正确数字是什么。若随机数是2537,而猜的数是1234,则输出有两个数字正确,它们是2,3。 ——扣当前分数的1/10

不知道。。。。。。。。。

     #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    #include<cmath>
    int main()
    {
        float score = 100;
        int Random = 20;//定义随机数
        srand(time(0));
        int a;//输入猜的数字
        bool f = true;
        void help1(int, int);
        void help2(int, int);
        while (Random < 1000 || Random>9999)//随机出来的值范围是1到10000,排除掉1000以下的
            for (int i = 0; i < 10; i++)
                Random = rand() % 10000 + 1;//随机数出来,循环十次是因为时间间隔太短
        printf_s("\t\nRandom=%d\n", Random);///需要注释掉
        int i = 1;
        while (i != 8 && f)
        {
            scanf_s("%d", &a);
            if (a == Random)
            {
                f = false;
                for (int j = 1; j < i; j++)
                    score = score - score / 10;
                break;
            }
            int k;
            printf_s("选择帮助1/2?\n");
            scanf_s("%d", &k);
            if (k == 1)help1(a, Random);
            else help2(a, Random);
            i++;
        }
        if (f == true) printf_s("猜数字失败,所得分数为0分");
        else printf_s("得分:%f", score);
        return 0;
    }
    void help1(int a, int Random)
    {
        int ran[5], cai[5];
        ran[0] = Random;
        cai[0] = a;
        for (int i = 1; i < 5; i++)
        {
            cai[i] = cai[0] % 10;//例子:1234取余4
            cai[0] = cai[0] / 10;//123
            //printf("\ncai[%d]=%d", i, cai[i]);
        }
        for (int i = 1; i < 5; i++)
        {
            ran[i] = ran[0] % 10;//例子:1234取余4
            ran[0] = ran[0] / 10;//123
            //printf("\nrun[%d]=%d", i, ran[i]);
        }
        for (int i = 4; i > 0; i--)
            if (cai[i] == ran[i])printf_s("R");
            else printf_s("E");
        printf("\n");
    }
    void help2(int a, int Random)
    {
        int ran[5], cai[5];
        ran[0] = Random;
        cai[0] = a;
        for (int i = 1; i < 5; i++)
        {
            cai[i] = cai[0] % 10;//例子:1234取余4
            cai[0] = cai[0] / 10;//123
        }
        for (int i = 1; i < 5; i++)
        {
            ran[i] = ran[0] % 10;//例子:1234取余4
            ran[0] = ran[0] / 10;//123
        }
        int num = 0;
        for (num; num < 10; num++)//我的意思是每个都循环和0-9比较,存在的话就是真,如果都是真那么输出那个数字
        {
            bool f1 = false, f2 = false;
            for (int i = 1; i < 5; i++)
                if (num == cai[i])f1 = true;
            for (int i = 1; i < 5; i++)
                if (num == ran[i])f2 = true;
            if (f1&&f2)printf_s("%d   ", num);
        }
    }

哪里不懂可以问!大概还是可以实现吧!出问题了问我。

 #include<stdio.h>
#include<stdlib.h>
#include<time.h>

int Rand();
int Judgement(int guess, int num);
void Cue1(int guess, int num);
void Cue2(int guess, int num);
void RemoveDuplication(int array[], int length);

void main()
{
    int num = Rand();
    int i;
    int guess;
    float grade = 100.0;
    char get;
    printf("游戏开始!%d\n",num);
    for(i = 0; i < 7; i++)
    {
        printf("第%d次\n",i+1);
        printf("请输入你猜的数字?\n");
        scanf("%d",&guess);
        if(!Judgement(guess,num))
        {
            printf("猜错了!\n");
            setbuf(stdin,0);
            printf("是否需要提示?(Y/N)\n");
            scanf("%c",&get);
            if(get == 'Y' || get == 'y')
            {
                getchar();
                printf("请选择帮助1或帮助2:(1/2)\n");
                scanf("%c",&get);
                if(get == '1')
                {
                    Cue1(guess,num);
                    grade -= grade/10;
                }
                else if(get == '2')
                {
                    Cue2(guess,num);
                    grade -= grade/10;
                }
                else
                    continue;
            }
        }
        else
        {
            printf("你猜对了!\n");
            break;
        }
    }
    if(i == 7)
    {
        printf("你猜错了!\n");
        printf("游戏结束!\n");
        printf("正确答案为:%d\n",num);
        grade = 0;
    }
    printf("你的得分为:%.2f\n",grade);

}

int Rand()
{
    int num;
    srand(time(0));
    num = rand() % 9000 + 1000;
    return num;
}

int Judgement(int guess, int num)
{
    if(guess == num)
    {
        return 1;
    }
    else
        return 0;
}

void Cue1(int guess, int num)
{
    int i;
    char cue[4];
    printf("提示为:");
    for(i = 3; i > -1; i--)
    {
        if(guess%10 == num%10)
        {
            cue[i] = 'R';
        }
        else
            cue[i] = 'E';
        guess /= 10;
        num /=10;
    }
    for(i = 0; i < 4; i++)
    {
        putchar(cue[i]);
    }
}

void Cue2(int guess, int num)
{
    int i;
    int j;
    int k = 0;
    int cue[4] = {-1, -1, -1, -1};
    int t_guess[4];
    int t_num[4];
    for(i = 3; i > -1; i--)
    {
        t_guess[i] = guess % 10;
        t_num[i] = num % 10;
        guess /= 10;
        num /= 10;
    }
    for(i = 0; i < 4; i++)
    {
        for(j = 0; j < 4; j++)
        {
            if(t_guess[i] == t_num[j])
            {
                cue[k] = t_guess[i];
                k++;
            }
        }
    }
    for(i = 0; i < 4; i++)
    {
        printf("%d",cue[i]);
    }
    RemoveDuplication(cue, 4);
    printf("正确的数字为:\t");
    for(i = 0; i < 4; i++)
    {
        if(cue[i]>=0)
        {
            printf("%d\t",cue[i]);
        }
    }
}

void RemoveDuplication(int array[], int length)
{
    int i;
    int j;
    for(i = 0; i < length; i++)
    {
        for(j = 0; j < length; j++)
        {
            if(j == i)
                continue;
            if(array[i] == array[j])
            {
                array[i] = -1;
            }
        }
    }
}