#include
struct student
{
int num;
int score[5];
}str[4];
int average(struct student* p)
{
int sum = 0,i;
for (i = 0; i < 5; i++)
sum += p->score[i];
return sum / 5;
}
int aver(struct student* p)
{
int sum=0;
for (; p < p + 4; p++)
sum += p->score[0];
return sum / 4;
}
void fail(struct student* p)
{
int i, j=0,k;
printf("超过两门不及格的同学有:\n");
for(;p4;p++)
for(i=0;i<5;i++)
if (p->score[i] < 60)
{
j++;
if(j>2)
{
printf("%d ", p->num);
for (k = 0; k < 5; k++)
printf("%d ", p->score[k]);
}
}
}
void good(struct student* p)
{
int i, j, k = 0;
for(;p
4;p++)
for (i = 0; i < 5; i++) {
if (p->score[i] > 85)
{
k++;
if (k == 5)
{
printf("%d ", p->num);
for (j = 0; j < 5; j++)
printf("%d ", p->score[j]);
}
}
else if (average(p) > 90)
{
printf("%d ", p->num);
for (j = 0; j < 5; j++)
printf("%d ", p->score[j]);
}
}
}
int main()
{
int j;
struct student* p = str;
for (; p < p + 4; p++) {
for (j = 0; j < 5; j++) {
scanf_s("%d", &p->num);
rewind(stdin);
scanf_s("%d", &p->score[j]);
}
printf("\n");
}
printf("第1门课程的平均成绩为%d", aver(str));
fail(str);
good(str);
return 0;
}
修改如下,改动处见注释,供参考:
#include <stdio.h>
struct student
{
int num;
int score[5];
}str[4];
int average(struct student* p)
{
int sum = 0,i;
for (i = 0; i < 5; i++)
sum += p->score[i];
return sum / 5;
}
int aver(struct student* p)
{
int sum=0;
for (; p < str + 4; p++) //for (; p < p + 4; p++) //修改
sum += p->score[0];
return sum / 4;
}
void fail(struct student* p)
{
int i, j=0,k;
printf("超过两门不及格的同学有:\n");
for(;p<str+4;p++){ //for(;p<p+4;p++) //修改
for(i=0,j=0;i<5;i++){
if (p->score[i] < 60)
j++;
} //修改
if(j>2) //修改
{
printf("%d ", p->num);
for (k = 0; k < 5; k++)
printf("%d ", p->score[k]);
printf("\n");//修改
}
}
}
void good(struct student* p)
{
int i, j, k = 0;
for(;p<str+4;p++){ //for(;p<p+4;p++)
for (i = 0, k = 0; i < 5; i++) { //修改
if (p->score[i] > 85)
k++;
} //修改
if (k == 5 || average(p) > 90) //修改
{
printf("%d ", p->num);
for (j = 0; j < 5; j++)
printf("%d ", p->score[j]);
printf("\n"); //修改
}
}
}
int main()
{
int j;
struct student* p = str;
for (; p < str + 4; p++) { //for (; p < p + 4; p++) //修改
scanf_s("%d", &p->num); //修改
for (j = 0; j < 5; j++) {
//rewind(stdin); //修改
scanf_s("%d", &p->score[j]);
}
//printf("\n"); //修改
}
printf("第1门课程的平均成绩为%d\n", aver(str));
fail(str);
good(str);
return 0;
}