结构体和链表

Posted on 2018-01-20 14:51  海团  阅读(171)  评论(0编辑  收藏  举报

一、PTA实验作业

题目1:通讯录排序

(输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。)

1. 本题PTA提交列表


2. 设计思路:先定义10个朋友的结构体数组,数组内包括姓名,生日和号码,将结构体名称定为friends,

再定义结构体变量temp,作为交换位置时的临时变量。用一个for循环输入几个朋友的信息,

定义一个index作为下角标标识,再用两个for循环来对结构体数组进行重新排序,

外循环将i赋值给index,内循环比较friends【j】.birthday和friends【index】.birthday,

再对friends【j】和friends【index】进行大小位置调换,循环结束,最后用一个for循环重新输出排序后的数组。

(包括流程图)

3.本题调试过程碰到问题及PTA提交列表情况说明

本题提交一次性通过

二、同学代码结对互评
1.同学互评照片
我的代码(左),嘉慧的代码(右)

2.我和同学代码不同在嘉慧的代码更加精简,但有些量的名称与题目不太相符,不容易一眼看出,

我的代码 将各个量都用相应的英文表示,容易理清思路,但我还是更喜欢嘉慧的代码,非常简洁明了。

 

题目2:通讯录的录入与显示

(通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 本题要求编写程序,录入N条记录,并且根据要求显示任意某条记录。

1. 本题PTA提交列表


2. 设计思路:先定义一个结构体数组存放每个人的基本信息,将结构体名称定为argv,输入一个数N,再用while 循环输入N个人的信息,定义一个K表示要查询的个数,定义一个数组num用于存放输入要查询的编号,用一个for循环输入查询的编号,再用一个for循环查找编号信息,用if语句判断输入的编num 是否在人数0到N之间,如果是则输出下标为num【i】的结构体数组,不是则输出Not Found。

(包括流程图)

3.本题调试过程碰到问题及PTA提交列表情况说明
本题提交一次性通过

二、同学代码结对互评
1.同学互评照片。
我的代码(左),嘉慧的代码(右)

2.我习惯用完整的英文单词定义的一些量的名称,程序看起来会有些复杂,而嘉慧喜欢用简单的字母来表示,他的程序看上去会简洁许多,但我觉得我的方式更好,因为具体单词容易看懂每一个量代表的意义。

题目3:一帮一

(“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。)

1. 本题PTA提交列表


2. 设计思路:先定义a,b两个字符数组,分别用于存放性别和名字,输入全班人数N,用for()循环输入排名,

再用两个for()循环进行分配安排,外循环表示从0开始的学生,内循环表示从最后一位同学开始,

用if语句对两位同学的性别作比较,如果不相同,则先将2分别赋值给代表两位同学性别的数组

(以便在下一次循环对比中将匹配过得同学跳过,以免出现错误),在内循环中直接输出两位同学,

下标与性别下标相同的名字数组,跳出循环,如此循环即可达到匹配一帮一的母的。

(包括流程图)

3.本题调试过程碰到问题及PTA提交列表情况说明
本次提交一次通过

二、同学代码结对互评
1.同学互评照片。

我的代码(左),嘉慧的代码(右)

2.我和同学代码不同在:我的代码将学生的姓名和性别用两个数组分开定义,操作过程比较简单,代码难度系数低,但不够严谨;嘉慧的代码是用一个结构数组对学生的性别和姓名,进行打包存放,难度系数较高,程序更加的严谨,我觉得嘉慧的程序个具有优势,我更喜欢嘉慧的代码。

 

三、截图本周题目集的PTA最后排名

 

四、本周学习总结
1.我学会了定义结构体数组,用结构体来打包成员信息,并应用结构体处理数据。

2.本周的内容,你还不会链表的操作。

Copyright © 2024 海团
Powered by .NET 8.0 on Kubernetes