#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。
1条答案
按热度按时间aamkag611#
这段代码被误导了。不,让我们更准确地说:这个代码是错误的,原因有很多。
在每次迭代中,重新创建数组
Num1
和Num2
。在第一次迭代中,它们是大小为0的数组,这是标准C不允许的。由于它们是VLA,因此您也不能初始化它们(可变长度数组)。但如果初始化工作,然后Num1[0]
和Num2[0]
被设置为随机值,并且其它所有值被置零(在初始化的正常规则下,但是在这几行中有太多的未定义行为,任何事情都是可能的)。然后尝试打印每个数组末尾的值-这使用了更多的未定义行为。使用如下代码: