

C语言两结构体之间的成员互换 - 椰果奶茶866
source link: https://www.cnblogs.com/hx2001/p/17017530.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

C语言两结构体之间的成员互换
今天在写一个通讯录实现程序的时候,遇到个让我突然卡壳的问题,不知道怎么进行两个结构体之间的成员互换......结构体成员有“姓名”,“性别”,“年龄”,“地址”,“电话”,目的就是实现一个通过年龄进行sort排序的功能,作为一个努力学习的编程小白来说,有太多的东西需要学习了..........代码如下:
一、结构体的创建代码展示
1 #define Max 1000 2 #define Num_Name 10 3 #define Num_Sex 4 4 #define Num_Tele 13 5 #define Num_Address 20 6 7 struct Pepinfo //创建通讯录结构体 8 { 9 char Name[Num_Name]; 10 char Sex[Num_Sex]; 11 int Age; 12 char Tele[Num_Tele]; 13 char Address[Num_Address]; 14 }; 15 16 struct contact 17 { 18 struct Pepinfo data[Max]; 19 int size; 20 };
提示:由于通讯录需要19行的size来记录存入的成员个数,所以在这里使用了嵌套的结构体;想要创建1000个有着第七行Pepinfo的结构信息的成员。
二、main主函数实现代码展示
1 int main() 2 { 3 int input=0; 4 struct contact pepnum; 5 Initpepnum(&pepnum);// 初始化结构体 6 do 7 { 8 menu();// 打印提示信息 9 scanf("%d", &input); 10 switch (input) 11 { 12 case 1:// 增 13 Add(&pepnum); 14 printf("添加成功!"); 15 break; 16 case 2:// 删 17 Dele(&pepnum); 18 break; 19 case 3:// 查 20 Search(&pepnum); 21 break; 22 case 4:// 改 23 Modify(&pepnum); 24 break; 25 case 5:// 显示成员信息 26 Show(&pepnum); 27 break; 28 case 6:// 成员排序 29 Sort(&pepnum); 30 break; 31 case 0:// 退出程序 32 printf("操作结束,保存成功!"); 33 break; 34 default: 35 printf("输入错误!\n"); 36 break; 37 } 38 } while (input); 39 return 0; 40 }
提示:这么些行代码,其实紧要的只有第29行,进行sort的实现。
三、sort函数实现
1 void Sort(struct contact* so) 2 { 3 if (so->size == 0) 4 { 5 printf("通讯录信息不足!\n"); 6 } 7 else 8 { 9 for (int j = 0; j <so->size-1 ; j++) 10 { 11 for (int i = 0; i < so->size - 1-j; i++) 12 { 13 struct Pepinfo tmp; 14 if (so->data[i].Age > so->data[i + 1].Age) 15 { 16 //结构体交换 17 tmp = so->data[i]; 18 so->data[i] = so->data[i + 1]; 19 so->data[i + 1] = tmp; 20 } 21 } 22 23 } 24 } 25 Show(so); 26 printf("排序成功!!\n"); 27 };
提示:以上的是正确代码,我之前写的是直接根据年龄进行冒泡排序,排序要交换两个结构体的Age的值,交换之后,其他成员并不会也进行交换,所以在第13行需要再次进行创建一个tmp的结构体作为结构体成员互换的中间站,结构体的成员互换并不需要进行挨个成员进行互换,直接进行整体的交换就可以了,成员之间是会相互对应的,如上图17行到19行所示。
Recommend
-
90
-
66
当学生与家长角色互换后,就是这么屌
-
58
程序员 - @LuLiangDev - 博客 友链互换提供内容头像 url: http://blog.luliangdev.cn/medias/avatar.png介绍:Android 搬砖工博客链接: http
-
35
印度酒店预订初创公司 OYO 今日宣布与携程达成战略合作,双方将在流量互换、场景互通、数据运营、品牌宣传等方面展开深度合作。OYO 酒店方面称,将与携程合作为消费者提供更加便捷、优质的住宿体验。 OYO 未来将与携程进一步探索合作...
-
25
上周我们报道,iFixit以及拆解达人发现,互换两台iPhone12的摄像头模组会导致一系列问题出现,比如变焦异常、前摄失灵、提示面板更换等,想要解决的话,必须使用苹果的维修配置工具重编程。达人HughJeffreys更进一步,他尝试互换两台iPhone12的主板,理论上应该没...
-
8
小明在某个C语言项目开发中定义了一个结构体 parent,该结构体包含一个数组成员 char text[255],相关C语言代码如下,请看:typedef struct _parent { float calc ; char text[255] ; int used ; } parent_t ; 小明的问...
-
21
C语言结构体大小等于它的所有成员大小之和吗? 发表于 2019-08-12 20:08:37...
-
7
C语言结构体里只有一个成员,有什么特别意义吗? 发表于 2019-01-30 21:01:1...
-
15
结构体在各种编程语言中,都是建立自定义数据体的一种非常好的途径。但是有时忽略结构体成员自动对齐,带来的结果会让人迷惑。此外,获取结构体成员在结构体中的偏移,方法很多。最近常用C语言,今天发现了一种非常不错的获取结构体成...
-
10
c语言中结构体成员如何作为函数参数进行传递 - OSCHINA - 中文开源技术交流社区 开源问答...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK