输出合格学生的全部成绩,程序编译没有错,但就是出不了正确结果,请问是为什么啊
您上述的代码求得的是学生只要有一门成绩大于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之后就没有再重置为零,我想这是您的代码的问题所在,不知道您是否也注意到了这一点,希望对您有所帮助!