C语言-实验10-结构体与共用体
本系列将以一个学习者的眼光,从零基础一步一步学会最基础的C语言编程,本文将讲解C语言第十个板块:结构体与共用体。
在C语言中,基础数据类型(int、char、float等)只能存储单一类型的数据,但实际开发中,我们常需要处理一组关联的、不同类型的数据(比如学生信息包含学号、姓名、成绩)。这时就需要用到C语言提供的自定义复合数据类型——结构体、共用体、枚举。本文将从概念、用法、区别和实战场景出发,帮你彻底掌握这三种核心自定义类型。
结构体
1.结构体的定义
结构体是C语言中最常用的自定义复合类型,它允许我们将不同类型的变量组合成一个整体,每个变量作为结构体的”成员”,拥有独立的内存空间。可以把结构体理解为一个”自定义的数据包”,专门用来封装一组相关数据。
2.核心语法
// 1. 定义结构体类型(格式:struct 结构体名 { 成员列表; })struct 结构体名 { 数据类型 成员名1; 数据类型 成员名2; // ... 更多成员};// 2. 定义结构体变量(三种方式)// 方式1:先定义类型,再定义变量struct 结构体名 变量名;
// 方式2:定义类型的同时定义变量struct 结构体名 { 成员列表;} 变量名1, 变量名2;
// 方式3:匿名结构体(仅定义变量,无法复用类型)struct { 成员列表;} 变量名;// 3. 访问成员(使用 . 操作符;指针访问用 ->)变量名.成员名;结构体指针->成员名;共用体
1.共用体的定义
共用体(也叫联合)和结构体语法相似,但核心区别是:所有成员共享同一块内存空间,同一时间只有一个成员能有效存储数据。共用体的大小等于其最大成员的大小,适合在不同场景下复用同一块内存。
2.核心语法
// 定义共用体类型union 共用体名 { 数据类型 成员名1; 数据类型 成员名2; // ... 更多成员};// 定义变量、访问成员的方式和结构体完全一致union 共用体名 变量名;变量名.成员名;3.区别
| 特性 | 结构体(struct) | 共用体(union) |
|---|---|---|
| 内存分配 | 各成员独立占内存,总大小累加 | 所有成员共享内存,总大小=最大成员 |
| 数据有效性 | 所有成员可同时有效 | 同一时间只有一个成员有效 |
| 核心用途 | 封装关联数据(不同类型共存) | 内存复用(不同类型分时存储) |
枚举
1.枚举的定义
枚举是将一组整型常量命名,本质是”符号化的常量”,让代码更易读(比如用MON代替1表示周一)。枚举的每个成员默认是整型,值从0开始递增,也可手动指定。
2.核心语法
// 定义枚举类型enum 枚举名 { 枚举成员1, // 默认值0 枚举成员2, // 默认值1 枚举成员3 = 5,// 手动指定值5 枚举成员4 // 后续成员自动+1,值为6};// 定义枚举变量enum 枚举名 变量名;typedef
1.typedef的定义
typedef是C语言的关键字,作用是为已存在的数据类型创建一个新的别名(注意:不是定义新类型,只是给原有类型起外号)。它不分配内存,仅简化类型名称,尤其适合冗长的自定义类型(如 struct Student)。
2.核心语法
// 格式:typedef 原有类型名 新别名;typedef 原类型 别名;3.typedef与自定义类型的结合
1.与结构体结合
#include <stdio.h>#include <string.h>
struct _Student { int id; char name[20];};typedef struct _Student Student;
typedef struct { int id; char name[20];} Student2;
int main() { Student stu1 = {1001, "张三"}; Student2 stu2 = {1002, "李四"}; printf("stu1:学号=%d,姓名=%s\n", stu1.id, stu1.name); printf("stu2:学号=%d,姓名=%s\n", stu2.id, stu2.name); return 0;}2.与共用体结合
#include <stdio.h>
typedef union { int num; float f; char ch;} Data;
int main() { Data data; data.num = 100; printf("data.num = %d\n", data.num); data.f = 3.14f; printf("data.f = %.2f\n", data.f); return 0;}3.与枚举结合
#include <stdio.h>
typedef enum { MON, TUE, WED, THU, FRI, SAT, SUN} Week;
int main() { Week today = WED; printf("今天是周%d\n", today); return 0;}4.与指针结合
#include <stdio.h>
typedef struct { int id; char name[20];} Student, *StudentPtr;
int main() { Student stu = {1001, "张三"}; StudentPtr p = &stu; printf("通过指针访问:学号=%d,姓名=%s\n", p->id, p->name); return 0;}4.区别
| 特性 | typedef | #define |
|---|---|---|
| 本质 | 给类型起别名(编译器处理) | 文本替换(预处理器处理) |
| 作用域 | 有作用域(局部/全局) | 无作用域(宏定义到文件结束) |
| 类型检查 | 会进行类型检查 | 仅文本替换,无类型检查 |
| 指针处理 | 避免歧义(如 typedef int* Ptr;) | 易产生歧义(如 #define Ptr int*) |
示例
1.结构体(struct):基础示例
#include <stdio.h>
struct Point { int x; int y;};
int main() { struct Point p1 = {10, 20}; printf("坐标点p1:x=%d,y=%d\n", p1.x, p1.y); p1.x = 30; printf("修改后p1:x=%d,y=%d\n", p1.x, p1.y); return 0;}输出:
坐标点p1:x=10,y=20修改后p1:x=30,y=20
2.共用体(union):基础示例
#include <stdio.h>
union Value { int num; char ch;};
int main() { union Value v; v.num = 65; printf("存储整数:num=%d\n", v.num); printf("此时访问ch:%c(ASCII码对应)\n", v.ch); v.ch = 'B'; printf("\n存储字符:ch=%c\n", v.ch); printf("此时访问num:%d(ASCII码值)\n", v.num); return 0;}输出:
存储整数:num=65此时访问ch:A(ASCII码对应)存储字符:ch=B此时访问num:66(ASCII码值)
3.枚举(enum):基础示例
#include <stdio.h>
enum Switch { OFF, ON};
int main() { enum Switch light = ON; if (light == ON) { printf("灯的状态:开启(值=%d)\n", light); } else { printf("灯的状态:关闭(值=%d)\n", light); } return 0;}输出:
灯的状态:开启(值=1)
4.typedef:基础示例
#include <stdio.h>
typedef int INT;
typedef struct { char name[10]; int age;} Person;
int main() { INT a = 100; Person p = {"小明", 18}; printf("a = %d\n", a); printf("Person:name=%s,age=%d\n", p.name, p.age); return 0;}输出:
a = 100Person:name=小明,age=18
5.typedef:给枚举/共用体起别名
#include <stdio.h>
typedef enum { MON, TUE, WED} Week;
typedef union { float score; int rank;} Result;
int main() { Week day = TUE; Result res; printf("今天是周%d\n", day); res.score = 98.5; printf("成绩:%.1f\n", res.score); return 0;}输出:
今天是周1成绩:98.5
应用
7-1 sdut-C语言实验-检查宿舍卫生
SDUT希望培养学生的德智体美劳全面素质,因此也会检查个人卫生和宿舍卫生的的情况。假设检查宿舍卫生分为五项成绩:垃圾桶得分、挂钩得分、桌子得分、床铺得分和窗台得分。每项满分20分,总分满分为100分。按照检查规定,宿舍成绩在85分以下就要算作不合格。某天,宿管阿姨给了你一个检查完宿舍的打分表,让你帮忙统计下有多少个宿舍没有达到85分(等于85分是可以的),并且统计成绩最高分。
输入格式:第一行为一个整数 n (0 < n <= 100),代表你要统计的宿舍的总数,接下来 n 行每行为 5 个整数,代表宿舍五项成绩的得分。
输出格式:输出只有一行,由一个空格分隔的两个整数:总分不合格的宿舍数和宿舍总分最高分,如果最高分仍小于85分,则输出为不合格的宿舍数和“No”(不包含引号)。
输入示例:
51 2 3 4 510 20 10 20 2020 20 20 20 2015 15 15 20 2010 10 10 10 10输出示例:
3 100
7-1 解答:
#include <stdio.h>
typedef struct { int bin_score; int hook_score; int table_score; int bed_score; int window_score; int total;} Sushe;
int main(){ int n; scanf("%d",&n); int a=0,b=0; for(int i=0;i<n;i++){ Sushe room; scanf("%d %d %d %d %d",&room.bin_score,&room.hook_score,&room.table_score,&room.bed_score,&room.window_score); room.total=room.bin_score+room.hook_score+room.table_score+room.bed_score+room.window_score; if(room.total<85){ a++; } if(room.total>b){ b=room.total; } } if(b>=85){ printf("%d %d",a,b); }else{ printf("%d No",a); } return 0;}7-2 sdut-C语言实验-宣传部招聘
2023年的烧烤让全国的人民了解到了淄博,来自天津的小杨同学也被淄博的温暖所吸引考入了山东理工大学。小杨同学具备天津人的幽默和乐观,于是顺利地进入到学校学生会的宣传部工作,并且协助招聘1名宣传委员。
报名的人很多,每人首先交1张照片,小杨同学需要从n个照片里根据特征值选择1人(序号从 0 到 n - 1),每个参加招聘的同学都有自己的风格,可以按特征划分出 3 个特征值 w1 , w2 , w3 ,宣传部需要 w1 特征值高的同学,不太看重 w3 ,于是小杨同学对于每个特征都赋予一个权重,分别对应为0.7 0.2 0.1,你能帮小杨同学选出宣传部需要的人吗?
输入格式:第一行给出一个整数 n (n <= 1000) ,之后有 n 行数。
每行数有三个整数 w1, w2, w3,表示三个特征值。
不存在权值和相等的情况。
输出格式:输出n 个应聘同学中权值和最高的序号。
输入示例:
31 5 105 1 1010 5 1输出示例:
2
7-2 解答:
#include <stdio.h>
typedef struct{ int w1; int w2; int w3; int total;}people;
int main(){ int n; int max=0,a=0; scanf("%d",&n); for(int i=0;i<n;i++){ people person; scanf("%d %d %d",&person.w1,&person.w2,&person.w3); person.total=person.w1*0.7+person.w2*0.2+person.w3*0.1; if(person.total>max){ max=person.total; a=i; } } printf("%d",a); return 0;}7-3 sdut-C语言实验-选票统计
某校学生会主席由全校学生投票选举产生,共有m名候选人报名参选,编号为1到m(0<m<1000),全校有n名学生(0<n<30000),每人都可以投票。但每人只能投一票,每票只能选1名候选人。请你设计一个程序能够统计出哪个候选人得票最高,得了多少票。不会出现得票数相同的情况。
输入格式:第一行输入候选人数m和学生数n,以空格分开;
下面依次输入每个学生所选的候选人的编号。
输出格式:第一行输出得票最多的候选人编号;
第二行输出该候选人所得的票数。
输入示例:
3 101 2 3 2 3 1 2 3 1 3输出示例:
34
7-3 解答:
#include <stdio.h>
typedef struct{ int id; int vote;}toupiao;
int main(){ int m,n; scanf("%d %d",&m,&n); toupiao Number[1000]; for(int i=0;i<m;i++){ Number[i].id=i+1; Number[i].vote=0; } int vote_id; for(int i=0;i<n;i++){ scanf(" %d",&vote_id); for(int j=0;j<m;j++){ if(Number[j].id == vote_id){ Number[j].vote++; break; } } } int max_vote = 0; int max_id = 0; for (int i = 0; i < m; i++) { if (Number[i].vote > max_vote) { max_vote = Number[i].vote; max_id = Number[i].id; } } printf("%d\n", max_id); printf("%d\n", max_vote); return 0;}7-4 sdut-C语言实验-小南同学选宾馆
疫情期间到淄博隔离的山大学子们受到了淄博当地家人般的照顾,于是山大的学子们疫情后仍然会坐火车到淄博转一转,体会这座城市的温暖。这不,山大的小南同学在一个周末和同学又来到了八大局买扇子,听说都是有收藏价值呢。
到了晚上了,小南跟他的同学们要选一个宾馆住下了。但是形形色色的宾馆让小南不知所措。
对于一个宾馆来说,有许多特征,比如「价格」、「舒适度」。小南会对每个特征都有一个满意度。小南会选择出满意度更高一些的宾馆。其中,「价格」对于小南来说是最重要的,其次是「舒适度」。
如果有两个宾馆,如果对「价格」的满意度相同,那么根据「舒适度」进行选择;如果有多个宾馆条件相同,输出编号最小的宾馆。
你能帮他按照他的意愿找到小南最满意的宾馆吗?
输入格式:给出 n (n <= 5000) 代表 n 个宾馆(编号从 1 - n),随后有 n 行数据。
每行数据有两个整数,分别代表小南对「价格」、「舒适度」的满意程度,数值越大满意程度越高,满意度的范围从0 - 5000。
输出格式:输出按照描述的条件中小南最满意的宾馆编号,如果有多个宾馆条件相同,输出编号最小的宾馆。
输入示例:
40 11 01 11 0输出示例:
3
7-4 解答:
#include <stdio.h>
typedef struct{ int price; int comfortable;} house;
int main(){ int n; scanf(" %d",&n); house room[5000]; for(int i=0;i<n;i++){ room[i].price=0; room[i].comfortable=0; } for(int i=0;i<n;i++){ scanf("%d %d",&room[i].price,&room[i].comfortable); } int id = 1; for(int i=1;i<n;i++){ if(room[i].price > room[id-1].price){ id = i+1; } else if(room[i].price == room[id-1].price){ if(room[i].comfortable > room[id-1].comfortable){ id = i+1; } } } printf("%d",id); return 0;}7-5 sdut-C语言实验-排名次
SDUT某实验室集训队的选拔又要开始了,集训队需要根据参加者的分数排名来决定谁能够进入集训队。 先要求你写一个自动排名的程序,根据每一个参与选拔的同学的分数进行排名,集训队需要根据大家的分数排名来决定谁能够进入集训队。 你能完成这个程序么?
输入格式:输入的第一行为n ( 0<n<=50) ;
之后给出n 行,每行为一个人名和ta所得到的分数。保证没有相同的分数。
人名为英文单词,长度不超过10。
输出格式:输出为n行,每行一个人名与他的得分。每一行最后没有多余的空格。
具体输出格式见样例。
输入示例:
3Dan 10John 50Danny 30输出示例:
John 50Danny 30Dan 10
7-5 解答:
#include <stdio.h>
typedef struct{ char name[11]; int score;}stu;
int main(){ int n; scanf("%d",&n); stu students[50]; for(int i=0;i<n;i++){ scanf("%s %d",students[i].name,&students[i].score); } for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - 1 - i; j++) { if (students[j].score < students[j+1].score) { stu temp = students[j]; students[j] = students[j+1]; students[j+1] = temp; } } } for(int i=0;i<n;i++){ printf("%s %d\n",students[i].name,students[i].score); } return 0;}7-6 sdut-C语言实验-最终排名
《程序设计基础》组织了一次程序设计竞赛,比赛完后需要产生一个最终排名,排名按照题数多少来决定。但是有太多的队伍参与,手动计算排名已经不能满足比赛的需求。现在有一份名单记录各个队伍的ID和做出的题目数,需要你写一个程序,产生最终的排名。
为了简化题目,这里的排名规则为:做出题目数量多的队伍排在前面,如果题数相等,保持输入时的相对顺序不要改变。。
输入格式:第一行有一个正整数N(1 < N ≤ 10000),表示队伍数量。
接下来N 行包含两个整数,1 ≤ ID ≤ 10^7, 0 ≤ M ≤ 100。ID为队伍的编号,M为做出的题数。
输出格式:输出包含N行;
第i行有两个整数,ID和M表示排在第i位的队伍的ID和做出的题数。
输入示例:
81 216 311 220 33 526 47 122 4输出示例:
3 526 422 416 320 31 211 27 1
7-6 解答:
#include <stdio.h>
typedef struct{ int id; int M;}stu;
int main(){ int n; scanf("%d",&n); stu team[10000]; for(int i=0;i<n;i++){ scanf("%d %d",&team[i].id,&team[i].M); } for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - 1 - i; j++) { if (team[j].M < team[j+1].M) { stu temp = team[j]; team[j] = team[j+1]; team[j+1] = temp; } } } for(int i=0;i<n;i++){ printf("%d %d\n",team[i].id,team[i].M); } return 0;}7-7 sdut-C语言实验-选夫婿
倾国倾城的大家闺秀潘小姐要选夫婿啦!武林中各门各派,武林外各大户人家,闻讯纷纷前来,强势围观。前来参与竞选的男生藏龙卧虎,高手云集,才子遍布,帅哥纷纭,更不乏富二代,官二代,可谓声势空前。
7-7 sdut-C语言实验-选夫婿 每个人参与竞选的帅哥除了进行一段激情洋溢的求婚演讲以外,还要报上自己姓名、身高和体重,以及个人简历。最后再进行文武选拔,最后夺魁者方能得到潘小姐的芳心。
潘小姐不爱名利,只看人,第一关就是身高和体重要合格,即必须在其要求的范围内,否则直接排除在外,不允许参加下一轮的选拔。
作为一个程序员,你没有钱也没有权,擅长的也就是编程了。潘小姐也发现了这一点,所以把首轮根据身高体重进行选拔的任务交给了你,如果完成的好,你可以直接进入下一轮选拔,你笑了。
输入格式:潘小姐给你了所有报名男生的信息。
输入数据的第一行是一个正整数N (0 < N < 1000)。
之后N 行数据,每行包含三部分,用空格隔开。第一部分是报名者的姓名name(长度小于20的字符串),然后是整数身高h(0 < h < 300),第三部分是整数体重w (0 < w < 200)。
最后一行是四个整数a,b,c,d.表示身高的合格范围是[a,b],体重的合格范围是[c,d](0 < a < b < 200, 0 <C< d < 300)。
输出格式:你需要把合格的男生信息按照身高从低到高输出,格式跟输入一样,也是每行三个信息,共N行,如果身高相同则按体重从轻到重输出,若没有合格人选则输出No,具体格式见样例。
输入示例:
8武大郎 70 40西门庆 180 70李逵 160 150燕青 175 69鲁智深 180 100武松 180 75小泉纯一狼 30 20孙二娘 169 60165 190 60 90输出示例:
孙二娘 169 60燕青 175 69西门庆 180 70武松 180 75
7-7 解答:
#include <stdio.h>
typedef struct { char name[20]; int h; int w;} Boy;
int main() { int N; scanf("%d", &N); Boy boys[1000]; for (int i = 0; i < N; i++) { scanf("%s %d %d", boys[i].name, &boys[i].h, &boys[i].w); } int a, b, c, d; scanf("%d %d %d %d", &a, &b, &c, &d); Boy bingo[1000]; int bingo_count = 0; for (int i = 0; i < N; i++) { if (boys[i].h >= a && boys[i].h <= b && boys[i].w >= c && boys[i].w <= d) { bingo[bingo_count++] = boys[i]; } } for (int i = 0; i < bingo_count - 1; i++) { for (int j = 0; j < bingo_count - 1 - i; j++) { if (bingo[j].h > bingo[j+1].h) { Boy temp = bingo[j]; bingo[j] = bingo[j+1]; bingo[j+1] = temp; } else if (bingo[j].h == bingo[j+1].h) { if (bingo[j].w > bingo[j+1].w) { Boy temp = bingo[j]; bingo[j] = bingo[j+1]; bingo[j+1] = temp; } } } } if (bingo_count == 0) { printf("No\n"); } else { for (int i = 0; i < bingo_count; i++) { printf("%s %d %d\n", bingo[i].name, bingo[i].h, bingo[i].w); } } return 0;}7-8 sdut-C语言实验-老—质价比
给出n件物品,每件物品有质量和价格两种属性。你要做的是按质量升序排序,若质量相同则按价格降序排序。
输入格式:第一行输入一个正整数n(1<=n && n <= 100),代表有n件物品。
接下来的一行有n个正整数Wi(1<= Wi && Wi <= 10000),代表每件物品的质量。
再接下来的一行有n个正整数Pi(1 <= Pi && Pi <= 10000),代表每件物品的价格。
输出格式:输出n行,每行两个数Wi,Pi。顺序为题目描述所要求。
输入示例:
31 2 23 2 3输出示例:
1 32 32 2
7-8 解答:
#include <stdio.h>
typedef struct { int Wi; int Pi;}wupin;
int main(){ int n; scanf("%d",&n); wupin item[100]; for(int i=0;i<n;i++){ scanf(" %d",&item[i].Wi); } for(int i=0;i<n;i++){ scanf(" %d",&item[i].Pi); } for(int i=0;i<n-1;i++){ for(int j=0;j<n-1-i;j++){ if(item[j].Wi>item[j+1].Wi){ wupin temp = item[j+1]; item[j+1]=item[j]; item[j]=temp; }else if(item[j].Wi==item[j+1].Wi){ if(item[j].Pi<item[j+1].Pi){ wupin temp = item[j+1]; item[j+1]=item[j]; item[j]=temp; } } } } for(int i=0;i<n;i++){ printf("%d %d\n",item[i].Wi,item[i].Pi); } return 0;}7-9 sdut-C语言实验-共用体练习
给定n和m,接下来有n个描述,每个描述包含一个类型标志和一组相应的数据。
类型标志共3种:INT DOUBLE STRING,然后对应一组相应的数据。
紧接着有m个询问,每个询问仅包含一个整数x,要求输出第x个描述对应的数据(STRING类型保证不含空格,每组对应STRING数据不会超过19个字符)。
输入格式:输入的第一行为两个整数,n和m (n<=100000, m<=100000 ), 分别代表描述的个数和询问的个数。
接下来为 n 行描述;
最后为m行询问,具体格式见样例输入输出。
输出格式:对于每个询问,输出对应的结果,注意:浮点数保留两位小数。
输入示例:
5 4INT 456DOUBLE 123.56DOUBLE 0.476STRING welcomeToCSTRING LemonTree0124输出示例:
456123.560.48LemonTree提示:必须使用共用体完成
7-9 解答:
#include <stdio.h>#include <string.h>
typedef union { int int_val; double double_val; char str_val[20];} Data;
typedef struct { char type[7]; Data data;} Content;
Content Arr[100000];
int main() { int n, m; scanf("%d %d", &n, &m); for (int i = 0; i < n; i++) { char type[7]; scanf("%s", type); strcpy(Arr[i].type, type);
if (strcmp(type, "INT") == 0) { scanf("%d", &Arr[i].data.int_val); } else if (strcmp(type, "DOUBLE") == 0) { scanf("%lf", &Arr[i].data.double_val); } else if (strcmp(type, "STRING") == 0) { scanf("%s", Arr[i].data.str_val); } } for (int i = 0; i < m; i++) { int ids; scanf("%d", &ids); if (strcmp(Arr[ids].type, "INT") == 0) { printf("%d\n", Arr[ids].data.int_val); } else if (strcmp(Arr[ids].type, "DOUBLE") == 0) { printf("%.2f\n", Arr[ids].data.double_val); } else if (strcmp(Arr[ids].type, "STRING") == 0) { printf("%s\n", Arr[ids].data.str_val); } } return 0;}7-10 sdut-C语言实验-简单枚举类型——植物与颜色
请定义具有red, orange, yellow, green, blue, violet六种颜色的枚举类型color,根据输入的颜色名称,输出以下六种植物花朵的颜色:
Rose(red), Poppies(orange), Sunflower(yellow), Grass(green), Bluebells(blue), Violets(violet)。如果输入的颜色名称不在枚举类型color中,例如输入purple,请输出I don’t know about the color purple.
输入格式:第一行输入一个n, 代表有n 组询问。( 1 <= n <= 10)
接下来的n行, 每行有一个字符串代表颜色名称,颜色名称最多30个字符。
输出格式:输出n 行。
每行输出对应颜色的植物名称。
例如:Bluebells are blue. 如果输入的颜色名称不在枚举类型color中,例如purple, 请输出I don’t know about the color purple.
输入示例:
3blueyellowpurple输出示例:
Bluebells are blue.Sunflower are yellow.I don't know about the color purple.
7-10 解答:
#include <stdio.h>#include <string.h>
enum color { red, orange, yellow, green, blue, violet, unknown};
int main() { int n, i; char str[31]; enum color c; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%s", str); if(strcmp(str,"red")==0){ c=red; } else if(strcmp(str,"orange")==0){ c=orange; } else if(strcmp(str,"yellow")==0){ c=yellow; } else if(strcmp(str,"green")==0){ c=green; } else if(strcmp(str,"blue")==0){ c=blue; } else if(strcmp(str,"violet")==0){ c=violet; } else{ c=unknown; } switch (c) { case red: printf("Rose are red.\n"); break; case orange: printf("Poppies are orange.\n"); break; case yellow: printf("Sunflower are yellow.\n"); break; case green: printf("Grass are green.\n"); break; case blue: printf("Bluebells are blue.\n"); break; case violet: printf("Violets are violet.\n"); break; default: printf("I don't know about the color %s.\n", str); } } return 0;}总结
OK了,今天你学会了C语言程序的结构体、共用体、枚举及其相关知识点!下一章:链表将会继续使用此结构哦,难度会更大一点哦!一起加油吧!
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
