问题 A: 高级语言程序设计实验8-1计算成绩平均分并排序
题目描述
输入10个学生的学号、姓名和成绩,计算并输出平均分,再按照从高分到低分的顺序输出他们的信息。
输入要求
输入10个学生的学号、姓名和成绩。学号和成绩用整数表示,姓名是一个长度不超过19个字符的字符串。
输出要求
输出平均分,再按照从高分到低分的顺序输出10个学生的信息。
#include<stdio.h> struct student{ int num; char name[20]; int score; }; struct student stud[10]; int main(void) { int i,j,max,sum=0; struct student temp; for(i=0;i<10;i++){ scanf("%d",&stud[i].num); scanf("%s",&stud[i].name); scanf("%d",&stud[i].score); sum=sum+stud[i].score ; } for(i=0;i<9;i++) { max=i; for(j=i+1;j<10;j++) if(stud[j].score <stud[max].score) max=j; temp=stud[max]; stud[max]=stud[i]; stud[i]=temp; } printf("The average: %d ",sum/10); printf("The student score: "); for(i=9;i>=0;i--) printf("%d %s %d ",stud[i].num ,stud[i].name ,stud[i].score ); return 0; }
问题 B: 高级语言程序设计实验8-2平均分和最高分
题目描述
输入某班5位学生的姓名及数学、英语成绩,计算每位学生的平均分;然后输出平均分最高的学生之姓名及数学、英语成绩。
输入要求
输入某班5位学生的姓名及数学、英语成绩。姓名是一个长度不超过19个字符的字符串,成绩用整数表示。
输出要求
输出每名学生的姓名和平均分,平均分用浮点数表示,输出时精确到小数点后1位。
然后输出平均分最高的学生之姓名及数学、英语成绩。
#include<stdio.h> struct student{ char name[19]; int computer,english,math; double average; }; double count_average(struct student s); int main(void) { int i; struct student s1; for(i=1;i<=5;i++){ scanf("%s %.1f",s1.name,average); } return 0; } double count_average(struct student s) { return(s.math+s.english+s.computer)/3.0; }
问题 C: C语言-平均分
题目描述
有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及总分最高分的学生的数据(包括学号、姓名、3门课成绩)
输入要求
学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
输出要求
各门课的平均成绩 总分最高分的学生的数据(包括学号、姓名、3门课成绩)
#include<stdio.h> struct student{ int num; char name[10]; int grade1,grade2,grade3,sum; }; int count_sum(struct student s){ return (s.grade1+s.grade2+s.grade3);} int main(void) { int i,n,index,sum1,sum2,sum3; struct student students[50]; sum1=sum2=sum3=0; scanf("%d",&n); index=0; for(i=0;i<n;i++){ scanf("%d%s%d%d%d",&students[i].num,&students[i].name,&students[i].grade1,&students[i].grade2,&students[i].grade3); sum1=sum1+students[i].grade1; sum2=sum2+students[i].grade2; sum3=sum3+students[i].grade3; students[i].sum=count_sum(students[50]); } sum1=sum1/n; sum2=sum2/n; sum3=sum3/n; printf("%d %d %d ",sum1,sum2,sum3); for(i=0;i<n;i++) if(students[i].sum<students[index].sum) index=i; printf("%d %s %d %d %d ",students[index].num,students[index].name,students[index].grade1,students[index].grade2,students[index].grade3); return 0; }
问题 D: OJ使用测试
题目描述
输入四个人的年龄和姓名,排序后,按年龄,从小到大输出人员年龄及其姓名
输入要求
输入四个人的年龄和姓名
输出要求
按年龄,从小到大输出人员年龄及其姓名
#include<stdio.h> struct student{ char name[10]; int age; }; int main(void) { int i,index,j; struct student students[4],temp; for(i=0;i<4;i++){ scanf("%d%s",&students[i].age,students[i].name); } for(i=0;i<4;i++){ index=i; for(j=i+1;j<4;j++) if(students[j].age<students[index].age) index=j; temp=students[index]; students[index]=students[i]; students[i]=temp; } for(i=0;i<4;i++) printf("%d %s ",students[i].age,students[i].name); }
#include<stdio.h> struct student { int num; char name[4]; int a,b,c; int sum; }; struct student stud[10],temp; int main(void) { int n; scanf("%d ",&n); int i,j,max; int sum1,sum2,sum3; int average1,average2,average3; sum1=sum2=sum3=0; for(i=0;i<n;i++){ scanf("%d %s %d %d %d",&stud[i].num ,&stud[i].name ,&stud[i].a,&stud[i].b,&stud[i].c); sum1=sum1+stud[i].a; sum2=sum2+stud[i].b; sum3=sum3+stud[i].c; stud[i].sum=stud[i].a+stud[i].b+stud[i].c; } average1=sum1/n; average2=sum2/n; average3=sum3/n; printf("%d %d %d ",average1,average2,average3); for(i=0;i<n-1;i++){ max=i; for(j=i+1;j<n;j++) if(stud[j].sum<stud[max].sum) max=j; temp=stud[max]; stud[max]=stud[i]; stud[i]=temp; } printf("%d %s %d %d %d ",stud[i].num,stud[i].name,stud[i].a,stud[i].b,stud[i].c); return 0; }