赞
踩
题目:有十个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。
根据题目要求,选择采取结构体类型解决问题。本例中为简便设置了三个学生的成绩,学生人数如需更改,可设置#define N 3该值即可。
具体程序如下:
#include<stdio.h> #define N 3 struct student { char num[6]; char name[20]; int score[3]; }stu[N]; int main() { int i,j,imax; float sum=0.0,aver[N],temp,average=0.0; printf("输入学生的学号、姓名和三门课的成绩:\n"); for(i=0;i<N;i++) { scanf("%s%s",&stu[i].num,&stu[i].name); for(j=0;j<3;j++) { scanf("%d",&stu[i].score[j]); sum+=stu[i].score[j]; } aver[i]=sum/3.0; //每个学生的平均成绩 sum=0; average+=aver[i]; } average=average/N; //总平均成绩 printf("学号 姓名 成绩1 成绩2 成绩3 平均成绩\n"); for(i=0;i<N;i++) { printf("%s%10s",stu[i].num,stu[i].name); for(j=0;j<3;j++) printf("%8d",stu[i].score[j]); printf("%7.2f\n",aver[i]); } temp=aver[0]; for(i=0;i<N;i++) if(aver[i]>temp) { temp=aver[i]; imax=i; } printf("学生的总平均分为:%7.2f\n",average); printf("平均分最高的学生的数据为:\n"); printf("学号 姓名 成绩1 成绩2 成绩3 平均成绩\n"); printf("%s%10s%5d%5d%5d%7.2f\n",stu[imax].num,stu[imax].name,stu[imax].score[0],stu[imax].score[1],stu[imax].score[2],aver[imax]); return 0; }
我们来看一下运行效果:
由图可以看出,符合我们的要求,那么关于数据对齐方式呢,我们可以对输出行的**%s%10s%5d%5d%5d%7.2f**以上数据进行修改完善。
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。