200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 例 9.7 有n个结构体变量 内含学生学号 姓名和3门课程的成绩。要求输出平均成绩最

例 9.7 有n个结构体变量 内含学生学号 姓名和3门课程的成绩。要求输出平均成绩最

时间:2019-08-20 10:43:59

相关推荐

例 9.7 有n个结构体变量 内含学生学号 姓名和3门课程的成绩。要求输出平均成绩最

C程序设计(第四版) 谭浩强 例9.7 个人设计

例 9.7 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。

代码块:

方法1:

#include <stdio.h>//定义结构体变量并初始化struct student{int num;char name[10];float score[3];float aver;} stu[3];void input(struct student stu[]); //定义输入函数struct student max(struct student stu[]); //定义最高成绩函数void print(struct student stud); //定义输出函数int main(){struct student *p=stu; //定义指针指向结构体变量首地址input(p); //调用输入函数print(max(p)); //调用输出函数return 0;}//输入函数void input(struct student stu[]){int i, j;float sum;for (i=0; i<3; i++){printf("Please enter No.%d student num, name, score: ", i+1);scanf("%d %s", &stu[i].num, stu[i].name);for (j=0, sum=0.0; j<3; scanf("%f", &stu[i].score[j]), sum+=stu[i].score[j++]);stu[i].aver=sum/3.0;}}//最高成绩函数struct student max(struct student stu[]){int i, j;struct student temp;for (i=0; i<3; i++)for (j=i+1; j<3; stu[i].aver<stu[j].aver ? temp=stu[i], stu[i]=stu[j], stu[j]=temp, j++ : j++);return stu[0];}//输出函数void print(struct student stud){int i;printf("The higheset score student:\n");printf("%d %s ", stud.num, stud.name);for (i=0; i<3; printf("%.2f ", stud.score[i++]));printf("Average=%.2f\n", stud.aver);}

方法2:

#include <stdio.h>#include <stdlib.h>struct Student{int num;char name[20];float score[3];float aver;};void input(Student *st, int n);Student max(Student *st);void print(Student st);int main(){Student *stu;stu=(Student*)malloc(3*sizeof(Student));input(stu, 3);print(max(stu));system("pause");return 0;}void input(Student *st, int n){int i, j;float sum;for (i=0; i<n; i++){printf("Please enter No.%d student info: ", i+1);scanf("%d %s", &st[i].num, st[i].name);for (j=0; j<3; scanf("%f", &st[i].score[j++]));for (j=0, sum=0; j<3; sum+=st[i].score[j++]);st[i].aver=sum/3;}}void print(Student st){int i;printf("The Highest score student info:\n");printf("%d %-7s ", st.num, st.name);for (i=0; i<3; printf("%.2f ", st.score[i++]));printf("Average=%.2f\n", st.aver);}Student max(Student *st){int i, m;float max;for (i=0, max=0; i<3; st[i].aver>max ? max=st[i].aver, m=i++ : i++);return st[m];}

例 9.7 有n个结构体变量 内含学生学号 姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号 姓名 3门课程成绩和平均成绩)。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。