目录
一、结构体
为什么会有结构体呢?它的作用是什么呢?其实C语⾔已经提供了内置类型,如:char、short、int、long、float、double等,但是只有这些内置类型还是不够的,假设我想描述学⽣,描述⼀本书,这时单⼀的内置类型是不⾏的。描述⼀个学⽣需要 名字、年龄、学号、⾝⾼、体重等;描述⼀本书需要作者、出版社、定价等。为了解决这个问 题,增加了结构体这种⾃定义的数据类型。
结构是⼀些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量,如: 标量、数组、指针,甚⾄是其他结构体。
结构如下:tag 为结构体的名字(标签),如stu(student)等等
member-list 为成员列表,如name,age,id,score等等
variable-list 通常为tag[100]等
例子:
注意:进行初始化处理,,如struct Stu s1 = {"zhangsan", 20};
二、访问操作符
结构体成员的直接访问是通过点操作符(.)访问的
如 .name就是访问struct中的数值
其中p.x为x的值,p.y为y的值
三、冒泡排序
冒泡排序的核⼼思想就是:两两相邻的元素进⾏⽐较
由低到高排序
9 1 2 3 4 5 因为9大于1,所以9向右移动 以下同理 |
1 9 2 3 4 5 |
1 2 9 3 4 5 |
1 2 3 9 4 5 |
1 2 3 4 9 5 |
1 2 3 4 5 9 |
最终结果为 1 2 3 4 5 9 乱序同理
依靠于两个for循环解决,i循环为一个数的排序,当确定了一个数时就少了一次循环
如9 1 2 3 4 5 —>1 2 3 4 5 9 因为9已经确定了,所以就只需判断前5个数了 这是为什么sz-i
int tmp可以理解为暂时存储arr[j]的值,依靠第三变量来实现两个值的交换
四、例题解说
依托于前面的主要知识点的讲解,我们来研究这道题
解题如下
1、建立struct stu来存储数据
2、在int main函数中通过scanf函数输入学生人数
注意:加入开头 #define _CRT_SECURE_NO_WARNINGS 1 防止编译器发生警报
3、通过for循环连续输入学生信息
注意:1.由于输入时为整数,平均数可能为浮点数,通过n*1.0可使结果带有小数
2.i=1方便printf中 请输入第%d个学生的学号 的%d的赋值
3.&stu[i].id的意思是把输入的值放在stu中存储
4.%.2f的意思是保留两位小数
4.通过冒泡序列来交换学号和分数的位置,形成递减序列
注意:1.同上i=1(便于第%d名 stu[i].id等打印)
2.由于最终要打印学号和分数,所以有两个值交换
3.通过for循环打印出新的序列(由高到低)
5.结尾为小于60分的学号打印
通过if函数比较
五、附加知识点说明
1.int main()
{
return 0;
}
2.printf为库函数,所以要包含头文件#include<stdio.h>
3.赋值为0是初始化,使程序更安全
4.转义操作符:\n 换行
5.&:取地址符号
6.scanf为输入函数,但较为危险,需包含#define _CRT_SECURE_NO_WARNINGS 1
7.F10为调试键 F11可进入函数调试
8.if(为真即不为0就可执行)
{
括号降低错误的产生
}
答案如下:
运行结果如下:
很高兴您的阅读,我殷切地希望成长之路与您同行,未来可期!
初次写作如有不足还请指点,欢迎与您交流 邮箱:2744235537@qq.com
一句话送正在学习的我们:那些看似不起波澜的日复一日,会突然在某一天,让人看到坚持的意义