描述:
有n个学生,每个学生的数据包括学号、姓名和3门课程的成绩,
要求输出平均成绩高于90分以上(包括90分)或全部课程成绩均在85分以上(包括85分)的学生信息(包括学号和姓名),
如果没有符合条件的,则输出“No”。
输入:
有n+1行,第1行有1个整数,即学生数n;接下来有n行,每行有7个数据项,分别为学号、姓名和3门课程成绩,数据项之间用空格隔开。
输出:
有多行,每行包含2个数据项,即学号、姓名,数据项之间用空格隔开。
提示:
学生数n大于1小于等于20,“学号”是4位整数,“姓名”为不超过8个字符的字符串,“成绩”为0~100。
#include<stdio.h>
struct student
{
int num;
char name[8];
double score[3];
}stu[20];
int main()
{
int n = 1, i, j, k, a = 0;
//学生数输入
scanf("%d", &n);
//数据输入
for(i=0; i<n; i++)
{
scanf("%d", &stu[i].num);
scanf("%s", stu[i].name);
for(j=0; j<3; j++)
scanf("lf", &stu[i].score[j]);
}
//数据处理
int sum;
double avg[n];
for(i=0; i<n; i++)
{
for(j=0; j<3; j++)
{
sum += stu[i].score[j];
for(k=0; k<n; k++)
{
avg[k] = (stu[i].score[j])/n;
if( avg[k] >= 90 && stu[i].score[j]>=85 )
{
printf("%d %s", stu[i].num, stu[i].name);
a = 1;
}
}
}
}
if(a == 0) printf("No");
return 0;
}
测试数据为:
3
1001 Make 86 91 89
1002 Linda 78 78 80
1003 Jone 90 67 71
1001 Make
或
5
1011 Kitty 66 71 79
1012 Lena 78 79 90
1013 Marry 83 77 78
1014 Jone 91 89 92
1015 Make 85 85 86
1014 Jone
1015 Make
修改如下,供参考:
#include<stdio.h>
#define N 21
struct student
{
int num;
char name[8];
double score[3];
double avg;
}stu[N];
int score_85(struct student stu_t)
{
return stu_t.score[0] >= 85 && stu_t.score[1] >= 85
&& stu_t.score[2] >= 85;
}
int main()
{
int n = 1, i, j, k, a = 0;
scanf("%d", &n); //学生数输入
for (i = 0; i < n; i++)//数据输入
{
scanf("%d %s", &stu[i].num, stu[i].name);
for (j = 0, stu[i].avg = 0; j < 3; j++) {
scanf("%lf", &stu[i].score[j]);
stu[i].avg += stu[i].score[j];
}
stu[i].avg /= 3;//数据处理
}
//int sum;
//double avg[n];
for (i = 0; i < n; i++)
{
//for (j = 0; j < 3; j++)
//{
//sum += stu[i].score[j];
//for (k = 0; k < n; k++)
//{
// avg[k] = (stu[i].score[j]) / n;
if (stu[i].avg >= 90 || score_85(stu[i])) //stu[i].score[j] >= 85)
{
printf("%d %s\n", stu[i].num, stu[i].name);
a = 1;
}
//}
//}
}
if (a == 0) printf("No");
return 0;
}