当前位置: 首页 > article >正文

【C语言】结构体(二)

一,结构体的初始化

和其它类型变量一样,对结构体变量可以在定义时指定初始值

4831b5b9e5304ef6ad93eaceed393bab.png

#include <stdio.h>
#include <stdlib.h>
struct books    // 结构体类型
{
	char title[50];
	char author[50];    //结构体成员
	char subject[100];
	int book_id;
}book = { "C 语言","zhangsan","编程语言",12345 };  //结构体变量的初始化
int main()
{
	printf("title : %s\nauthor: %s\nsubject: %s\nbook_id: %d\n", book.title, book.author, book.subject, book.book_id);
	return 0;
}

二,结构体成员的访问

1,访问手段:使用成员访问运算符(.)用一个点来访问

2,访问手段的使用:<结构体类型变量名> . <成员名> 结构体名 点 成员名

2d2f8fbe782a47269152bb9c22d85610.png

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct           // 无标签名,匿名结构体
{
	char name[20];  //姓名
	int num;     //学号
	int age;     //年龄
	char group;   // 所在小组
	float score;  // 成绩
}stu1;            // 结构体变量

int main()
{
	// 给结构体成员赋值
	stu1 = { "zhangsan",1,20,'A',149.5f };
	printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);
	return 0;
}

注:结构体是一种自定义的数据类型,是创建变量的模板不占用内存空间结构体变量包含了实实在在的数据需要内存空间来存储。

三,结构体数组

1,是什么?

答:数组中的每一个元素都是结构体(元素是结构体)

2,为什么(要有)?

用来表示一个拥有相同数据结构的群体

3,怎么做?

答:如图所示

9c73cbf09ee9480c8d72996d80d9841c.png

是什么中:

数组指的是一个班级

每一个元素指的是一个班的不同学生

结构体指的是不同学生的信息

为什么中:

相同数据结构指的是不同学生的信息的种类

注:

结构体数组在定义的同时也可以初始化

对数组中全部元素赋值时,也可以不给出数组长度

 

练习题:计算全班学生的总成绩、平均成绩和140分一下的人数

ad1a162bf119487fb6fb0e1ad2dc7e0c.png

#include <stdio.h>
#include <stdlib.h>
struct stu
{
	char name[20];
	int num;
	int age;
	char group;
	float score;
} ban[5] = {
	{"xing",5,18,'c',145.0},{"ao",4,19,'a',130.5},
	{"sheng",1,18,'a',148.5},{"pei",2,17,'f',139.0},
	{"yuan",3,17,'b',144.5}
};      // 表示一个班有5个人
int main()
{
	int i, num_140 = 0;
	float sum = 0;
	for (i = 0; i < 5; i++) {
		sum += ban[i].score;
		if (ban[i].score < 140) num_140++;
	}
	printf("sum=%.2f\naverage=%.2f\nnum_140=%d\n", sum, sum / 5, num_140);
	return 0;
}

未完待续。。。


http://www.kler.cn/a/419808.html

相关文章:

  • 12.2深度学习_项目实战
  • Springboot入门教程系列HelloWorld
  • Creating Server TCP listening socket *:6379: bind: No error
  • SpringBoot3 + Vue3 由浅入深的交互 基础交互教学2
  • 服务器数据恢复—服务器raid0阵列硬盘指示灯显示黄颜色的数据恢复案例
  • ubuntu的用户使用
  • thinkphp自定义分页组件
  • 【Leetcode】26.删除有序数组中的重复项
  • Centos7安装MySQL8.0详细教程(压缩包安装方式)
  • mac终端自定义命令打开vscode
  • kube-proxy的iptables工作模式分析
  • 如何使用Python进行下载对应的视频地址
  • Python学习第十五天--魔术方法
  • Kong API Gateway 深度解析与实战指南
  • 【Linux内核】ashmem pin/unpin
  • Python毕业设计选题:基于django+vue的校园影院售票系统
  • CasaOS个人云存储系统使用Gopeed打造你的私人云端下载中心
  • Spring Boot自定义启动banner
  • 基于深度学习的甲状腺结节影像自动化诊断系统(PyQt5界面+数据集+训练代码)
  • 在 Ubuntu 使用 fonts-noto-cjk 设置 Matplotlib 支持中文的完整教程
  • Makefile 入门指南:构建自动化编译流程
  • java 反射 详解
  • Ubuntu 20.04 下 ROS 工作空间的详解与应用
  • rustdesk远程桌面使用
  • Milvus Cloud 2.5:易用性飞跃,助力用户高效管理向量数据库
  • 一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库