不考虑伪随机数问题,可以帮我看看逻辑问题吗。

img


#include"stdio.h"
#include"stdlib.h"
#define M 6
#define N 8
int main()
{
int i,j,a[M][N];
int num;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
a[i][j]=rand()%100;
printf("%5d",a[i][j]);
}
printf("\n");
}
printf("不合格科目大于三\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
num=0;
if(a[i][j]<60)
num++;
}
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
if(num>=3)
printf("%5d",a[i][j]);
}
}
return 0;
}

你最后想要输出什么呢?

你在判断完num的值是否大于3的之后,输出a[i][j],但是你没有考虑到此时j的值此时是多少,j在走完一趟循环后,j=N,也就是说数组越界了。如果我的回答有用,请点击采纳!