学生信息结构体数组拷贝和排序(结构体,结构体数组,结构体指针)
主函数使用下面结构体定义和函数,从控制台输入n(n<=40)各学生信息,按平均成绩降序后输出所有女生信息。
1.定义一个学生结构体,信息包括学号(字符串,长度小于20)、姓名(字符串,长度小于20)、性别(整数,0表示女生,1表示男生)、年龄(整数)、五门课成绩(浮点数)、平均成绩(浮点数);
2.编写函数create(), 通过控制台输入学生信息;
3.编写函数copy(),将所有女生信息复制到另一个结构数组中,并按平均成绩的降序排序;
输入样例:
5
2021001 zhangsan 0 20 90 90 90 90 90
2021002 lisan 0 21 80 80 80 80 80
2021003 haiqing 1 20 85 85 85 85 85
2021004 litong 1 22 75 75 75 75 75
2021005 wangming 0 23 95 95 95 95 95
输出样例:
2021005 wangming 0 23 [ 95.00 95.00 95.00 95.00 95.00 95.00 ]
2021001 zhangsan 0 20 [ 90.00 90.00 90.00 90.00 90.00 90.00 ]
2021002 lisan 0 21 [ 80.00 80.00 80.00 80.00 80.00 80.00 ]
代码如下:
#include<stdio.h>struct student//定义一个学生结构体
{char num[20];//学号char name[20];//姓名int sex;//性别int age;//年龄float score[5];//五门成绩float average;//平均成绩
};void create(struct student *p,int n)
{int i,j;for(i = 0 ; i < n ; i++)//依次输入n个学生的信息{//依次输入输入学号、名字、性别、年龄scanf("%s %s %d %d",(p + i) -> num, (p + i) ->name, &(p + i) -> sex, &(p + i) -> age);//依次输入五门成绩,并计算平均成绩for(j = 0; j < 5; j++){scanf("%f",((p + i) -> score) + j);(p + i) -> average += (p + i) -> score[j] / 5;//储存平均成绩}//for}//for
}//createvoid copy(struct student *ps, int n, struct student *pg, int *ngirl)
{int i, j ;*ngirl = 0;//女生人数for(i = 0; i < n;i++){//拷贝女生信息if((ps + i) -> sex == 0 ){*(pg + (*ngirl)) = *(ps + i) ;(*ngirl)++;}//if}//forfor(i = 0; i < (*ngirl) - 1; i++){//对女生平均成绩进行降序排序for(j = i + 1; j < *ngirl; j++){int a= 0;if(((pg + i)-> average) < ((pg + j) -> average)){struct student t = *(pg + i);//交换*(pg + i) = *(pg + j);*(pg + j) = t;}//if}//for}//for
}//copyvoid print(struct student stu[],int n)//输出学生信息
{int i,j;for(i=0;i<n;i++){printf("%s %s %d %d [ ",stu[i].num,stu[i].name,stu[i].sex,stu[i].age);//输出学号、姓名、性别、年龄for(j=0;j<5;j++){printf("%.2f ",stu[i].score[j]);//输出五门成绩}//forprintf("%.2f ]",stu[i].average);//输出平均成绩printf("\n");}//for
}//printint main()
{int n, ngirl;struct student stu[40];struct student girl[40];//输入学生人数(不大于40);scanf("%d",&n);create(stu, n);//调用函数创建班级信息copy(stu, n, girl, &ngirl);//调用函数实现女生按平均成绩降序print(girl, ngirl); // 输出所有女生信息return 0;
}
学生信息结构体数组拷贝和排序(结构体,结构体数组,结构体指针)相关推荐
- 【韩老师零基础30天学会Java 09】Math Arrays 数组拷贝 自然排序 System BigDecimal 银行家算法舍入 日期类LocalDateTime转换 String翻转
Math abs绝对值 pow求幂 ceil向上取整 floor向下取整 round四舍五入 sqrt求开方 random求随机数 思考: 请写出获取a-b之间的一个随机整数,a,b均为整数?2-7 ...
- 二维数组按行排序C语言,二维数组对每一行进行排序。。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我的代码..问题出在换行的时候sum[i][j]的值还保存着上一行的值.. #include "stdafx.h" #includ ...
- python 数组拷贝,如何将数据从一个numpy数组复制到另一个数组
为了回答你的问题,我玩了一些变体,并对它们进行了分析. 结论:将数据从一个numpy数组复制到另一个使用内置的numpy函数numpy.array(src)或numpy.copyto(dst, src ...
- 二维字符数组按长度排序_字符串长度 字符数组长度
1.不带转义字符的字符 如:"abc!x=/",其长度为 7 2.带转义字符的字符串 (1) 字符串"abcn":其中的'n'为转义字符(换行符),计算字符串长 ...
- 定义一个学生信息结构体,包含姓名,学号,语文成绩、数学成绩,和英语成绩,定义结构体数组存放不同学生的信息,可以在终端录入学生的信息,在基础上添加一个计算平均值和按照平均值排序以及删除指定学号的学生信息
1. 代码如下: 头文件 chx.h #include<stdio.h> #include<string.h>struct chx{char name[128];int sn ...
- 在学生信息结构体中再添加一个计算平均值和按照平均值排序以及删除指定学号的学生信息
定义一个学生信息结构体,包含姓名,学号,语文成绩.数学成绩,和英语成绩,定义结构体数组存放不同学生的信息,可以在终端录入学生的信息,可以实现对于学生成绩的排序,排序可以按照语文.数学或者英语的任意一个 ...
- C++ 定义学生信息结构体,按照学号顺序排序
定义学生信息结构体,录入学生信息,根据学生的学号顺序进行排序. struct student 定义学生信息,学生信息中Score sc 为一个结构体类型的变量,存放学生的成绩信息: input(),d ...
- linux c之memcpy拷贝结构体到结构体、拷贝字符数组到结构体
1 memcpy 我们知道这个函数主要是拷贝内存数据,我们一般可以使用拷贝结构体到结构体.也可以拷贝字符数组到结构体,但是这个字符数组数据应该是同一个结构体拷贝先拷贝到这个字符数组,如果是其他格式的字 ...
- c语言链表成绩管理系统排序,【C项目】 文件,结构体,链表,排序, 学生信息管理系统...
1.密码登录: 2.通过键盘输入学生信息,包括学生学号.姓名.成绩: 3.将输入的信息保存到指定文件中: 4.从文件中读取学生信息: 5.显示全部学生信息: 6.按学生总分进行降序排序: 7.删除学生 ...
最新文章
- 【转】VMware虚拟机中CentOS设置固定IP
- C语言博客作业--数据类型
- Java通过JDBC连接SQL Server2017数据库
- Linux 常用命令使用方法
- return 关键字 c
- oracle 10 升级补丁
- 关于go语言中的JWT(JSON WEB TONKE)ECHO
- SharePoint 2010 网站模板要求在网站集中激活功能
- iozone测试文件系统
- python编程案例教程-Python程序开发案例教程
- java基础总结06-常用api类-时间日期类
- 智能小区计算机网络系统,智能住宅小区综合布线系统方案
- [原创开源项目]EPUBBuilder一款在线的epub电子书编辑工具
- 示波器的主要功能 示波器作用介绍
- Matlab isnan isinf median circshift 函数
- 【设计模式】—-(12)代理模式(结构型)
- 获取地理位置定位信息-app端
- 手机计算机打字教程,分享电脑打字熟记技巧,想要学习赶紧来学哦!
- 16 tia 内容说明 安装包_系统分区空间不足的情况下如何安装TIA Portal和TIA Portal更新包?...
- matlab局部放大曲线功能