结构体和链表
Posted L-HUI
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体和链表相关的知识,希望对你有一定的参考价值。
结构体
一、PTA实验作业
7-1
给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。
1. 本题PTA提交列表
2. 设计思路
在循环中对书籍价格进行判断,令i=0,则max=s[i],min=s[i];再进行判断如果max.price<s[i].price,则max=s[i],如果max.price>s[i].price,则min=s[i];
最后分别输出价格最高和低的书籍的名称和价格。
3.本题调试过程碰到问题及PTA提交列表情况说明。
(1) 错误点 编译错误
第3,4行 忘记加分号。编译中定义变量需要加分号
解决方法:在第3和第4行后加分号。
第一次调试结果
(1) 错误点 段错误
数组越界问题(没懂,自己在想)
(2)书籍名称是字符串,字符串的输入要用getchar(); ,scanf只能输入一个单词或字母
解决方法:第11和16行添加getchar();
第二次的调试结果
输出打错,正确格式%.2lf
第三次调试结果:
输出的格式有误,导致答案错误
Double 要用%f输出,字符串要用%s输出
第12行,循环结束条件错误,数组下标不能到n,所以i不可以等于n。循环条件出错,计算结果就会出错
解决方法:第12行,将i<=n改为i<n;
第四次调试:
仔细检查后发现,输出格式与题目不符,导致格式错误
解决方法:在“%.2lf”后加一个空格
最后调试结果
7-3
找出总分最高的学生
给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。
1. 本题PTA提交列表
2、设计思路:
用第一个与后面的依次比较,一旦遇到总和大于第一个,则令max为其的下标;然后把这个数再与后面的比较,再遇到比这个数大的,则下标再次改变,这样找出成绩最高的下标
3.本题调试过程碰到问题及PTA提交列表情况说明。
(1) 错误点:答案错误
①在找成绩最高的人中,思路错误。如果从i=0,开始循环,则一旦遇到sum[i]>sum[i+1],就会输出较大的一个,没有实现找出所有人中成绩最高的一个,所以if的判断条件也不正确
②不能把输出放在循环内部,这样的会使结果有多个输出,与题意不符
解决方法:
①循环的初始条件改为从i=1开始,新定义一个max,并令其为0;把判断条件改为sum[max]<sum[i],满足则max=i;
②把输出放在循环外部
第一次调试结果:
(1)错误点:答案错误
输出中,最后一个总和忘记修改对应数据
解决方法:result改为sum[max]
第二次调试结果:
(1)错误点:最长字符串出现错误
题目要求学号是由5个数字组成的字符串,这里定义成整型,所以错了
解决方法:学号用char定义为字符串,char num)
输出改为%s(字符串)
第三次调试结果:
(1)错误点:段错误
与上一次类同,题目要求学号是由5个数字组成的字符串,应该定义一个数组,没有数组,只能表示一个字符
解决方法:将其定义为数组char num[6]
最后调试正确结果:
7-4 通讯录的录入与显示
通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 本题要求编写程序,录入N条记录,并且根据要求显示任意某条记录。
1. 本题PTA提交列表
2. 设计思路
用循环输入基本信息,再输入要查询的信息条数,利用循环,在循环中输入编号,如果编号比录入的信息条数多则输出Not Found,否则输出对应编号的基本信息。
3.本题调试过程碰到问题及PTA提交列表情况说明。
二、同学代码结对互评
陈冰艳的代码
我的代码
不同点:
我和同学的代码思路基本一致,不同点在于
①我定义的的结构体变量是数组s[10],同学直接定义了一个变量名,然后都有用定义的结构体变量引用其中的元素
②她的代码将循环变量i的初始值定义为1,我将循环变量初始值定义为i=0,但本质上是一样的。
三、截图本周题目集的PTA最后排名
四、本周学习总结
1.你学会了什么?
①结构体的变量定义和初始化
可以单独定义也可以混合定义;
结构的嵌套定义中必须先定义成员的结构类型,再定义主结构类型。
②结构体变量的引用
格式为 结构体变量名.结构体成员名;
结构体变量可以整体赋值。
③结构体数组的使用
2、本周的内容,你还不会什么?
①结构体指针变量的使用
②利用结构体构成链表
③不会的题:PTA 7-5
链表
一、PTA实验作业
7-12 单向链表4
定义单向链表:输入若干个正整数(输入-1为结束标志),要求按输入数据的逆序并输出。
1. 本题PTA提交列表
2. 设计思路
利用头插法,逆序输出
3、本题调试过程碰到问题及PTA提交列表情况说明
链表一共4题,我只会做这一题,所以只写了这一题
二、同学代码结对互评
7-12
陈冰艳的代码
我的代码
不同点:
同学的代码用while循环判断,而我用的是for循环;
同学在循环内部实行动态分配空间,我在循环外部独立实现动态分配空间
其他的思路一致
我更喜欢同学的代码,用while循环让结构更清晰
三、截图本周题目集的PTA最后排名
四、本周学习总结
1.你学会了什么?
①动态分配存储空间,创建结点
②用结构嵌套定义单向链表结点数据
2、本周的内容,你还不会什么?
链表的删除结点
不会的题:PTA 7-10、7-11、7-13
以上是关于结构体和链表的主要内容,如果未能解决你的问题,请参考以下文章