如何在C中比较两个随机数

svmlkihl  于 2023-04-11  发布在  其他
关注(0)|答案(1)|浏览(96)
#include
int Math()
{
    int result;
    
    srand(time(NULL)); // randomize seed
    for (int i = 0; i < 10; i++)
    {
        int Num1[i] = {rand()%50};
        int Num2[i] = {rand()%50};
        printf("\nQuestion %d:", i + 1);
        printf("\n%d + %d =", Num1[i], Num2[i]);
        scanf("%d", &result);
        if (result == Num1[i] + Num2[i])
        {
            printf("\nCorrect answer");
        }
        else
        {
            printf("\nWrong answer");
        }
    }

    return 0;
}

我想比较结果和Num1 + Num2。但是当我运行代码时,程序运行的数字太高,有些行是0 + 0。如何限制数字,而不是在我的程序中存在0 + 0。

aamkag61

aamkag611#

这段代码被误导了。不,让我们更准确地说:这个代码是错误的,原因有很多。

for (int i = 0; i < 10; i++)
    {
        int Num1[i] = {rand()%50};
        int Num2[i] = {rand()%50};
        printf("\nQuestion %d:", i + 1);
        printf("\n%d + %d =", Num1[i], Num2[i]);

在每次迭代中,重新创建数组Num1Num2。在第一次迭代中,它们是大小为0的数组,这是标准C不允许的。由于它们是VLA,因此您也不能初始化它们(可变长度数组)。但如果初始化工作,然后Num1[0]Num2[0]被设置为随机值,并且其它所有值被置零(在初始化的正常规则下,但是在这几行中有太多的未定义行为,任何事情都是可能的)。然后尝试打印每个数组末尾的值-这使用了更多的未定义行为。
使用如下代码:

int Num1[10];
    int Num2[10];
    for (int i = 0; i < 10; i++)
    {
        Num1[i] = {rand()%50};
        Num2[i] = {rand()%50};
        printf("\nQuestion %d:", i + 1);
        printf("\n%d + %d =", Num1[i], Num2[i]);

相关问题