我必须不断生成 10 x 10 个数组,直到数组的对角线由大于或等于 7 的数字组成。但是,尝试次数不应增加一百万。如果尝试次数少于一百万次,那就是当您打印出对角线中的数字大于 7 和尝试次数的数组时。这是我的代码,问题是我的代码总是显示尝试次数超过一百万。有人可以查看代码并告诉我为什么这无法正常工作吗?
int i, j, matrix2[10][10], attempts, count = 0;
for (attempts=0; attempts<1000000; attempts++)
{
for (i=0; i<10; i++)
{
for (j=0; j<10; j++)
{
matrix2[i][j] = rand()%10;
if(i==j&&matrix2[i][j] >= 7)
count++;
}
}
}
printf("nnNumber of attempts : %d", count);
if (attempts >= 1000000)
printf("nnNumber of attempts exceed one million :t ACTION TERMINATED!!!");
else
{
for (i=0; i<10; i++)
{
for (j=0; j<10; j++)
if (i==j&&matrix2[i][j] >= 7)
printf("%5d",matrix2[i][j]);
printf("nn");
}
}
简单的:)当尝试次数达到 1000000 时,第一个循环将结束:
attempts = 999998; //continue
attempts = 999999; //continue
attempts = 1000000; //stop
然后,您正在检查尝试是否大于或等于 1000000,并且它等于:)
您应该检查它是否更大:
if (attempts > 1000000)
问候 卡穆
在第一次尝试时执行此操作。取代:
matrix2[i][j] = rand()%10;
if(i==j&&matrix2[i][j] >= 7)
count++;
跟:
matrix2[i][j] = i==j?rand()%3+7:rand()%10;
并删除重试循环。
如果您出于某种深不可测的原因想要继续生成和丢弃,请为您实际成功的情况添加中断条件!