struct的使用
2015-08-27 19:26
330 查看
编写一个学生struct,成员有学号(id)、姓名(name)、成绩(5门课程),随机生成多个学生的学号、姓名和成绩存储到结构体数组。再根据总分进行排名并输出学生的信息和总分。
stu.h
stu.c
main.c
stu.h
#ifndef STU_H #define STU_H #include<stdio.h> #include<stdlib.h> #include<time.h> #define LEN 3 #define NUM 5 typedef struct Student { int id; char name[LEN]; int score[NUM]; }STU; //初始化 void id_init(int *val); void name_init(char *name, int len); void score_init(int *array, int num); void stuArray_init(STU *stuArray, int num); //打印学生数组信息 void printArray(STU *stuArray, int num); //求一个学生的成绩总分 int sum(STU stu, int num); //比较操作 int cmp(const void* left, const void* right); #endif
stu.c
#include "stu.h" //初始化 void id_init(int *val) { *val = 2000 + rand() % 1000; } void name_init(char *name, int len) { int i; for(i = 0; i < len; i++) { if(i == 0) name[i] = 'A' + rand() % 26; else name[i] = 'a' + rand() % 26; } name[i] = '\0'; } void score_init(int *array, int num) { int i; for(i = 0; i < num; i++) array[i] = rand() % 100 + 1; } void stuArray_init(STU *stuArray, int num) { int i; for(i = 0; i < num; i++) { id_init(&stuArray[i].id); name_init(stuArray[i].name,LEN); score_init(stuArray[i].score,NUM); } } //求一个学生的成绩总分 int sum(STU stu, int num) { int total = 0; int i; for(i = 0; i < num; i++) total += stu.score[i]; return total; } //打印学生数组信息 void printArray(STU *stuArray, int num) { int i; for(i = 0; i < num; i++) printf("%5d\t %s\t %3d %3d %3d %3d %3d %4d\n",stuArray[i].id,stuArray[i].name,stuArray[i].score[0],stuArray[i].score[1],stuArray[i].score[2],stuArray[i].score[3],stuArray[i].score[4],sum(stuArray[i],NUM)); } //比较操作 int cmp(const void* left, const void* right) { int sum_left, sum_right; STU *stu_left = (STU*)left; STU *stu_right = (STU*)right; sum_left = sum(*stu_left,NUM); sum_right = sum(*stu_right,NUM); if(sum_left < sum_right) return 1; else if(sum_left == sum_right) return 0; else return -1; }
main.c
#include "stu.h" int main() { STU array[5]; srand(time(NULL)); stuArray_init(array,5); printArray(array,5); printf("\n--------------------排序后------------------\n\n"); qsort(array,5,sizeof(STU),&cmp); printArray(array,5); system("pause"); return 0; }
相关文章推荐
- 【转】在CentOS上安装tomcat
- Cocos2dx学习笔记7:精灵(Sprite)
- React学习笔记(4)---react属性与状态
- 播放视频
- Java LinqCollection 仿Linq的list常用函数
- 各种页面高度
- linux中root密码忘了怎么办?
- NOIP 2014 day1第二题 联合权值
- Metasploit(三)--Msfcli命令
- PIC16F883单片机EUSART串口通信
- hdu 5311 Hidden String (dfs)
- Cheering up the Cows,2008nov,usaco
- javascript float转int
- Vector Quantization(学习Free Mind知识整理)
- Struts2笔记——ONGL表达式语言
- Struts2笔记——ONGL表达式语言
- GCD和NSOperation多线程技术
- 【转】CentOS上安装 jdk:rpm安装和源码安装
- LCS 最长公共子序列
- Eclipse技巧:[5]eclipse js提示