使用“结构”统计学生成绩
2015-06-19 01:34
363 查看
设学生信息包括学号,姓名和五门功课的成绩,要求编写输入输出
学生信息的函数。在输入一组学生信息后,以学生成绩的总分从高
到低顺序输出学生信息。
这个相对来说比较简单,可以创建一个学生的结构体,结构体里面有三个成员:学号,姓名和五门功课的成绩。下面请看一下我的整体代码。这个思路也比较简单,主要是为了练习使用结构体。
下面是我的输出的结果:
学生信息的函数。在输入一组学生信息后,以学生成绩的总分从高
到低顺序输出学生信息。
这个相对来说比较简单,可以创建一个学生的结构体,结构体里面有三个成员:学号,姓名和五门功课的成绩。下面请看一下我的整体代码。这个思路也比较简单,主要是为了练习使用结构体。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 200 #define SCORES 5 #define NUMLEN 10 /** * 设学生信息包括学号,姓名和五门功课的成绩,要求编写输入输出 * 学生信息的函数。在输入一组学生信息后,以学生成绩的总分从高 * 到低顺序输出学生信息。 */ struct student{ char number[NUMLEN]; /* 学号 */ char *name; /* 学生姓名 */ int scores[SCORES]; /* 学生五门功课的成绩 */ }; struct student stus ; int order ; int total ; int readstu(struct student *stu){ int len,j; char buf[120]; //缓冲区 printf("Number : "); if(scanf("%s",buf) == 1){ strncpy(stu->number,buf,NUMLEN-1); }else{ return 0; //ctrl+z退出 } printf("Name : "); if(scanf("%s",buf) == 1){ len = strlen(buf); stu->name = (char *)malloc(len+1); strcpy(stu->name,buf); }else{ return 0; } printf("Scores : "); for(j = 0;j < SCORES;j++) if(scanf("%d",stu->scores+j) != 1) break; if(j == 0){ //一个成绩也没有录入,清空name所占有的内存 free(stu->name); return 0; } for(;j<SCORES;j++) stu->scores[j] = 0; return 1; } /* 输出学生信息 */ void writeStu(struct student *stu){ int i; printf("Number : %s\n",stu->number); printf("Name : %s\n",stu->name); printf("Scores : "); for(i = 0;i < SCORES;i++) printf("%4d ",stu->scores[i]); printf("\n\n"); } int main() { int n,i,j,t; //获取学生信息 for(n = 0; readstu(stus+n); n++); for(i = 0;i < n;i++){ order[i] = i; for(t = 0,j = 0;j < SCORES;j++){ t += stus[i].scores[j]; } total[i] = t; } //冒泡排序输出 for(i = 0;i < n;i++){ for(j = 0;j < n-1;j++){ if(total[order[j]] < total[order[j+1]]){ //交换 t = order[j]; order[j] = order[j+1]; order[j+1] = t; } } } for(j = 0;j <n;j++){ writeStu(stus+order[j]); } return 0; }
下面是我的输出的结果:
相关文章推荐
- 2015届华为校园招聘机试题<二>
- JAVA基础第三天,eclipse软件的应用和if语句的编写(15-6-18)
- hdu 1247 Hat’s Words
- 一个简单的排序,练练手
- lvs+keepalived高可用负载均衡集群双主实现
- tracert 路由跟踪信息
- hdu 2222 AC自动机
- PopupMenu的简单用法
- Android工程中三种库的区别:Private Libraries、Referenced Libraries、Dependency Libraries
- PopupWindow的简单用法
- Java基础(三)
- Bootstrap 模态对话框只加载一次 remote 数据的解决办法
- Windows Phone 十、数据绑定
- myBatis应用
- java基础 ArrayList集合基本方法演示
- tableView - 数据刷新
- Linux Pthread 深入解析
- IOS编译报错:objc-class-ref in AppDelegate.o之解决方案
- oracle物化视图的两个典型应用场景
- 学习jetty server