求scratch随机出题做法

出题器-整除-商不为1

条件除数2-200,被除数2-200

在链表中随机显示出100道除法题 格式 32/4=

rand函数随机生成数字,用while循环100次就可以了啊

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

typedef struct
{
    int fz;
    int fm;
}Data;

typedef struct _linknode
{
    Data data;
    struct _linknode* next;
}LinkNode;

//求数字n的因子
void yinzi(int n, int a[], int* nmb)
{
    int i = 2;
    int k = 0;
    for (; i < n && k<40; i++)
    {
        if (n % i == 0)
        {
            a[k++] = i;
        }
    }
    *nmb = k;
}



int main()
{
    int i = 0;
    int nmb = 0;
    int yz[40],index;
    LinkNode* head, * p, * t;
    head = (LinkNode*)malloc(sizeof(LinkNode));
    head->next = NULL;
    p = head;
    srand((unsigned int)time(NULL));

    while (i < 100)
    {
        t = (LinkNode*)malloc(sizeof(LinkNode));
        t->next = NULL;
        while (1)
        {
            t->data.fz = rand() % 199 + 2; //分子 2-200
            //计算fz的所有因子,分母在因子中随机选择
            yinzi(t->data.fz, yz, &nmb);
            if (nmb > 0)
                break;
        }
        
        index = rand() % nmb;
        t->data.fm = yz[index];

        p->next = t;
        p = t;
        printf("%d/%d=\n", t->data.fz, t->data.fm);
        i++;
    }
    return 0;

}