结构体的学习

news2024/11/16 19:35:16

结构体与共用体,枚举

1.数据类型复习:

2结构体.

eg;统计全校同学信息    需要记录的点--- 姓名,班级,性别,成绩,年龄
        统计名字:char s[ ] [ 100 ] = { "Tmo" }
        统计班级:int ; 统计性别: char     ;  统计成绩 : float   ; 统计年龄: int
一个人的相关信息要用到5个数组,想有一种数据可以描述一个人的相关信息,就可以用结构体:

结构体:struct
描述一些原先基本数据类型不好描述的,复杂的数据类型
语法:struct + 结构体类型名
          {       
          };            //定义了一个“数据类型”   --  用户自定义的数据类型
eg:描述学生的个人信息----
struct  student                 
{
      char  name[20];       //放名字
      unsigned  char  age;    //放年龄
      等 - - - 
};
于是乎: struct student  s   ------   学生这种数据类型(等价于基本类型的种类),定义了一个s变量            按照给的类型顺序来用   struct student  s = {"Tom",20,59.5,110}  ---  名字,年纪,成绩,

注意:1.结构体 - 用来实现自定义的数据类型
           2.用结构体 : 先构造数据类型,用数据类型定义i变量,数组,指针等

访问结构体:  .  //结构体成员运算符
打印输出: printf("%d",  s . 定义的数据类型中的名字(如 name,aage))         
eg;printf(”%d“,s.name)

-> : 指向结构体成员

3.结构体的对齐规则:
1.在32位的平台上,默认都是按4字节对齐的。
2.对于成员变量,各自在自己的自然边界上对齐。
3.如果 成员变量中有比4字节大。此时整个结构体按照4字节对齐。(64位默认为8字节)
4.如果成员变量中没有有比4字节大。
此时整个结构体按照最大的那个成员对齐。


相关程序实现

1.编写一个“老师”的结构体,写出一个输入、输出的函数,打印出来

struct teacher
{
	char name[20];
	int tno;
	float salary;
};


void printfteacher(struct teacher *t)
{
	printf("name   = %s\n",t-> name);
	printf("tno    = %d\n",t-> tno);
	printf("salary = %2.f\n",t-> salary);

}

void inputteacher(struct teacher *t)
{
	printf("name :");
	scanf("%s",t->name);
	printf("tno :");
	scanf("%d",&t->tno);
	printf("salary :");
	scanf("%f",&t->salary);
}


int main(void)
{
	struct teacher t={0};
	inputteacher(&t);
	printfteacher(&t);

}

2.编写一个学生的结构体,编写输入输出函数,找到最大成绩的学生打印信息,以学生成绩做一个排序

struct student
{
	char name[20];
	int sno;
	float score;
};

void printfstudent(struct student *t,int len)
{
	int i;
	printf("name\tsno\tscore\t\n");
	for(i=0;i<len;i++)
	{
		printf("%s\t",(t+i)->name);
		printf("%d\t",(t+i)->sno);
		printf("%.2f\t\n",(t+i)->score);
	}
}


void inputstudent(struct student *t,int len)
{
	int i;
	for(i=0;i<len;i++)
	{
	printf("name :");
	scanf("%s",(t+i)->name);
	printf("sno :");
	scanf("%d",&(t+i)->sno);
	printf("score :");
	scanf("%f",&(t+i)->score);
	}

}

void maxstudent(struct student *t,int len)
{
	int i=0;
	float max=t->score;
	int j=0;
	for(i=0;i<len;i++)
	{
		if(max<(t+i)->score)
		{
			max=(t+i)->score;
			j=i;
		}
	}

		printf("max = %s %d %.2f\n",(t+j)->name,(t+j)->sno,(t+j)->score);
}

int compare(const void *a,const void *b)
{
	const struct student *p1=a;
	const struct student *p2=b;
	return p1->score - p2->score;
}


int main(void)
{
	struct student s[3]={0};
	inputstudent(s,3);
	maxstudent(s,3);
	qsort(s,3,sizeof(struct student),compare);
	printfstudent(s,3);
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1423655.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux ---- Shell编程三剑客之sed

一、sed工具概述 1、sed概念 Sed&#xff08;Stream EDitor&#xff09;是一个强大而简单的文本解析转换工具可以读取文本&#xff0c;并根据指定的条件对文本内容进行编辑&#xff08;删除、替换、添加、移动等&#xff09;&#xff0c;最后输出所有行或者仅输出处理的某些行…

ONLYOFFICE文档8.0现已发布,功能全新升级!

本文目录-ONLYOFFICE 前言&#xff1a;ONLYOFFICE介绍一、经济实惠的开源选择二、自主部署保证数据安全三、灵活的定制与集成四、强大的跨平台全面支持ONLYOFFICE文档8.0更新内容更新一&#xff1a;显示协作者头像更新二&#xff1a;插件UI界面更新更新三&#xff1a;可填写的P…

springboot 怎么设置局域网访问

如何配置Spring Boot应用以实现局域网访问 在开发一个Spring Boot应用时&#xff0c;我们通常会通过localhost来访问和测试我们的应用。但是&#xff0c;当我们想要在局域网中分享我们的应用&#xff0c;供其他设备访问时&#xff0c;仅仅使用localhost是不够的。本文将引导你…

数据据库八之 视图、触发器、事务

【零】准备数据 【1】创建表 &#xff08;1&#xff09;部门表 d_id是部门的编号d_name是部门的名字 # 确保表不存在 drop table if exists department; # 创建表 create table department( d_id int auto_increment primary key, d_name varchar(6) )auto_increment 501 …

市场复盘总结 20240131

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 昨日主题投资 连板进级率 5/23 21.7% 二进三: 进级率低 50% 最常用的二种方法: 方法一:指标选股找强势股 select * from dbo.ResultAll where 入…

git diff查看比对两次不同时间点提交的异同

git diff查看比对两次不同时间点提交的异同 用 git diff命令&#xff1a; git diff commit-id-1 commit-id-2 不同commit-id在不同的时间点提交产生&#xff0c;因为也可以认为git diff是比对两个不同时间点的代码异同。 git diff比较不同commit版本的代码文件异同_git diff c…

postman用法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、postman怎么使用json输出 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0…

使用企业微信一年要花费多少钱?

从今天开始&#xff0c;大力将为大家呈现一个新的话题——“企微问答”&#xff0c;大家有什么问题可以回复我们的公众号&#xff0c;如果你是严肃认真的提问&#xff0c;我们会严肃认真的给你一个答案。今日问题 &#xff1a;用企业微信一年要花多少钱 使用企业微信要花多少钱…

洛谷 P3366 【模板】最小生成树

题目描述 如题&#xff0c;给出一个无向图&#xff0c;求出最小生成树&#xff0c;如果该图不连通&#xff0c;则输出 orz。 输入格式 第一行包含两个整数 N,M&#xff0c;表示该图共有 N 个结点和 M 条无向边。 接下来 M 行每行包含三个整数Xi​,Yi​,Zi​&#xff0c;表示…

力扣题目训练(6)

2024年1月30日力扣题目训练 2024年1月30日力扣题目训练367. 有效的完全平方数374. 猜数字大小383. 赎金信99. 恢复二叉搜索树105. 从前序与中序遍历序列构造二叉树51. N 皇后 2024年1月30日力扣题目训练 2024年1月30日第六天编程训练&#xff0c;今天主要是进行一些题训练&…

1 月 30 日算法练习-思维和贪心

文章目录 重复字符串翻硬币乘积最大 重复字符串 思路&#xff1a;判断是否能整除&#xff0c;如果不能整除直接退出&#xff0c;能整除每次从每组对应位置中找出出现最多的字母将其他值修改为它&#xff0c;所有修改次数即为答案。 #include<iostream> using namespace …

太美医疗冲刺港交所上市:融资“数据打架”,老虎基金提前退出

1月29日&#xff0c;浙江太美医疗科技股份有限公司&#xff08;下称“太美医疗”或“太美医疗科技”&#xff09;递交招股书&#xff0c;准备在港交所主板上市。特别说明的是&#xff0c;该公司曾于2021年12月29日在上海证券交易所科创板递交上市申请。 据贝多财经了解&#x…

容器算法迭代器初识

#include<iostream> using namespace std; #include<vector> //vetor容器存放内置数据类型 void test01() {//创建了一个vector容器&#xff0c;数组 vector<int> v;//向容器中插入数据v.push_back (10);//尾插 v.push_back (20);v.push_back (30);v.push_ba…

vue-Router 路由

一、什么是路由&#xff1f; 在Web开发中&#xff0c;路由&#xff08;Routing&#xff09;是指根据用户访问的URL来决定应用程序应该显示哪个页面或者加载哪个组件的过程。简单来说&#xff0c;路由就是将不同的URL映射到不同的功能模块或页面上。当用户点击链接或者直接输入…

ADI 配合 USRP 使用的相控阵天线 cn0566

相控阵天线 在这里插入图片描述

利用Excel批量生成SQL语句

根据对应的数据库结构书写模板SQL&#xff0c;如&#xff1a; INSERT INTO Person VALUES(1,吕布,25,男,13500000001)然后选择表格后的单元格&#xff0c;并复制SQL语句&#xff08;注意最前方有一个号&#xff0c;整个SQL用 “ ” 包裹&#xff09;&#xff1a; "INSER…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例5-5 Canvas 绘制三角形

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>Canvas 绘制三角形</title> </head><body><canvas id"cavsElem">您的浏览器不支持Canvas&#xff0c;请升级浏览器</canvas…

墨鱼AI导航系统源码/小白也能即拿即用+视频教程

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买) 墨鱼AI导航源码/小白也能即拿即用+视频教程,AI目前大火,估计未来3年内都将是风口。本系统墨鱼AI导航,顺着AI的风口,…

【Godot4自学手册】第十节将场景添加到TileSet绘制背景,主人公走到房子后面房子变得半透明

这节主要学习将场景添加到TileSet作为TileMap来搭建背景。同时&#xff0c;主人公进入房子后面&#xff0c;房子变得半透明&#xff0c;离开房子后房子变的不透明。 一、创建新场景 首先导入房子素材&#xff0c;最终文件系统内容如下&#xff1a; 点击新建场景按钮&#x…

Origin 2022下载安装教程,操作简单,小白也能轻松搞定,附安装包,带软件使用教程

前言 Origin是一个科学绘图、数据分析软件&#xff0c;支持各种各样的2D/3D图形&#xff0c;包括统计&#xff0c;信号处理&#xff0c;曲线拟合以及峰值分析&#xff0c;Origin具有强大的数据导入功能和多样的图形输出格式。 准备工作 1、Win7及以上系统 2、提前准备好 Or…