(注:暂时先记录这些问题,后期再持续更新)
1,输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计不及格成绩的学生人数。
int count,i,n; //count 为记录不及格成绩的个数 double grade,total; //grade 存放输入的成绩,total保存成绩之和 printf("Enter n:"); scanf("%d",&n); //输入学生人数n total = 0; count = 0; for(i=1;i<=n;i++){ printf("Enter grade #%d:",i); scanf("%lf",&grade); //输入第i个成绩 total = total + grade; if(grade<60){ //统计不及格的学生人数 count++; } } printf("Grade average = %.2f ",total/n); printf("Number of failures = %d ",count); return 0;
2,输入一批学生的成绩,以负数作为结束标志,计算平均成绩,并统计不及格人数。
int count,num; //count 为记录不及格成绩的个数;num 为记录输入的个数 double grade,total; //grade 存放输入的成绩,total保存成绩之和 num = 0; total = 0; count = 0; printf("Enter grades:"); scanf("%lf",&grade); while(grade>=0){ total = total+grade; //累加成绩 num++; //计数 if(grade<60) count++; scanf("%lf",&grade); //读入一个新数据,为下次循环做猪呢比 } if(num != 0){ printf("Grade average = %.2f ",total/num); printf("Number of failures is %d ",count); } else printf("Grade average is 0 "); return 0;
3,从输入的n个成绩中选出最高分,用for语句实现。
int i,mark,max,n; printf("Enter n:"); scanf("%d",&n); //输入数据个数 printf("Enter %d marks:",n); scanf("%d",&mark); //读入第一个成绩 max = mark; for(i=1;i<n;i++){ scanf("%d",&mark); if(max<mark) max = mark; } printf("Max = %d ",max); return 0;
注:若输入的一批以负数结束的成绩中选出最高分,可以用while语句实现。
4,输入n个学生的成绩信息,计算并输出每个学生的个人平均成绩(结构变量作为函数参数)。
struct student{ //学生信息结构定义 int num; //学号 char name[10]; //姓名 int computer,english,math; //三门课程成绩 double average; //个人平均成绩 }; double count_average(struct student s); //函数声明,计算个人平均成绩 int main(void) { int i,n; struct student s1; //定义结构变量 printf("Input n:"); scanf("%d",&n); printf("Input the student's number,name,course scores "); for(i=1;i<=n;i++){ printf("No.%d:",i); scanf("%d%s%d%d%d",&s1.num,&s1.name,&s1.math,&s1.english,&s1.computer); s1.average = count_average(s1); //函数调用,结构变量作为函数参数 printf("num:%d,name:%s,average:%.2lf ",s1.num,s1.name,s1.average); } return 0; } double count_average(struct student s) { return (s.math + s.english + s.computer)/3.0; }
5,输入n(n<50)个学生的成绩信息,按照学生的个人平均成绩从高到低输出他们的信息。
struct student{ //学生信息结构定义 int num; //学号 char name[10]; //姓名 int computer,english,math; //三门课程成绩 double average; //个人平均成绩 }; int main(void) { int i,index,j,n; struct student students[50],temp; //定义结构数组 double count_average(struct student s); /* 输入*/ printf("Input n:"); scanf("%d",&n); for(i=0;i<n;i++){ printf("Input the info of No.%d: ",i+1); printf("number:"); scanf("%d",&students[i].num); printf("name:"); scanf("%s",&students[i].name); printf("math.score:"); scanf("%s",&students[i].math); printf("english.score:"); scanf("%s",&students[i].english); printf("computer.score:"); scanf("%s",&students[i].computer); students[i].average = count_average(students[i]); } /* 结构数组排序,选择排序法*/ for(i=0;i<n-1;i++){ index = i; for(j=i+1;j<n;j++) if(students[j].average>students[index].average) //比较平均成绩 index = j; temp = students[index]; //交换数组元素 students[index] = students[i]; students[i] = temp; } /* 输出排序后的信息*/ printf("num name average "); for(i=0;i<n;i++) printf("%d %s %.2lf ",students[i].num,students[i].name,students[i].average); return 0; } double count_average(struct student s) { return (s.math + s.english + s.computer)/3.0; }
注:本题中,定义了结构数组students用于存储学生信息,先输入n个学生的基本信息,其中个人平均成绩的计算通过调用函数count_average()实现,然后使用选择排序法根据个人平均成绩从高到低对学生的信息排序,最后按顺序输出结构数组中的数据。