题目:有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的成绩。
要实现下面的功能:
话不多说!直接代码见真知!
第一步:定义和声明
//声明结构体类型 struct student { char name[20]; int num; float score; };
//输入 printf("请输入学生数:"); scanf("%d",&n);
//定义结构体数组,存放键盘输入的数据 struct student stu[n]; //定义结构体变量middle,用作交换时的中间变量 struct student middle;
第二步:输入数据
for(i=0;i<n;i++) { printf("请输入学生姓名:"); scanf("%s",&stu[i].name); printf("请输入学生学号:"); scanf("%d",&stu[i].num); printf("请输入学生成绩:"); scanf("%f",&stu[i].score); printf("\n"); }
第三步:以学生成绩来比较进行排名
//利用交换排序法进行排序 for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { //利用成绩进行比较 if(stu[i].score<stu[j].score) { //利用中间变量进行交换 middle=stu[i]; stu[i]=stu[j]; stu[j]=middle; } } }
第四步:输出
printf("成绩排名为:\n"); for(i=0;i<n;i++) { //读取结构体中各个部分 printf("\t\t%s\t%d\t%0.1f\n",stu[i].name,stu[i].num,stu[i].score); }
完整代码:
#include<stdio.h> struct student { char name[20]; int num; float score; }; int main() { int n,i,j; printf("请输入学生数:"); scanf("%d",&n); struct student stu[n]; struct student middle; printf("\n"); for(i=0;i<n;i++) { printf("请输入学生姓名:"); scanf("%s",&stu[i].name); printf("请输入学生学号:"); scanf("%d",&stu[i].num); printf("请输入学生成绩:"); scanf("%f",&stu[i].score); printf("\n"); } for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(stu[i].score<stu[j].score) { middle=stu[i]; stu[i]=stu[j]; stu[j]=middle; } } } printf("成绩排名为:\n"); for(i=0;i<n;i++) { printf("\t\t%s\t%d\t%0.1f\n",stu[i].name,stu[i].num,stu[i].score); } return 0; }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119737.html