感觉中间的代码没被运行就直接输出了结果,请问是为什么啊

输出合格学生的全部成绩,程序编译没有错,但就是出不了正确结果,请问是为什么啊

img

img

您上述的代码求得的是学生只要有一门成绩大于60就会输出,正确的逻辑应该是让flag累加,只有该学生所有成绩都大于60才进行输出。

#include <stdio.h>
int main()
{
    int score[4][4]={{33,66,78,88},{45,76,91,92},{91,84,95,82},{98,62,85,87}};
    int flag=0;
    int i,j;
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
        {
            if(*(*(score+i)+j)>60)
            {
                flag=flag+1;
            }
        }
        if(flag==4)
        {
            printf("成绩全部合格学生成绩:\n");
            for(j=0;j<4;j++)
            {
                printf("%d ",*(*(score+i)+j));
            }
            printf("\n");
        }
        flag=0;
    }
   return 0;
}

首先提个建议,您的代码的层级性可以在明显一些;其二,您的flag在执行完一次等于1之后就没有再重置为零,我想这是您的代码的问题所在,不知道您是否也注意到了这一点,希望对您有所帮助!