结构体和链表

一、PTA实验作业

题目一、7-2 通讯录排序(20 分)

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

输入格式:

输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+-组成的字符串。

输出格式:

按照年龄从大到小输出朋友的信息,格式同输出。

输入样例:

3
zhang 19850403 13912345678
wang 19821020 +86-0571-88018448
qian 19840619 13609876543

输出样例:

wang 19821020 +86-0571-88018448
qian 19840619 13609876543
zhang 19850403 13912345678

1、本题PTA提交列表

2、设计思路

定义一个结构体,里面依次存放名字,生日,电话号码

然后定义结构数组,实现存放多人的通讯信息

利用循环,依次输入第一个、第二个、第三个。。。的名字,生日,电话号码

利用循环,将这些人进行排序,按年龄大小进行输出

 

 结构图

代码截图

3、调试过程

本题出错原因是在于再将通讯录排序的时候,两个结构体交换的时候出错,交换下标时会出错,将其改成t=s[i];s[i]=s[j];s[j]=t就可以成功了





题目二、
7-3 找出总分最高的学生(15 分)

给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。

输入格式:

输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。

输出格式:

在一行中输出总分最高学生的姓名、学号和总分,间隔一个空格。题目保证这样的学生是唯一的。

输入样例:

5
00001 huanglan 78 83 75
00002 wanghai 76 80 77
00003 shenqiang 87 83 76
10001 zhangfeng 92 88 78
21987 zhangmeng 80 82 75

输出样例:

zhangfeng 10001 258
1、本题pta提交列表

2、设计思路

定义结构体,存放学号 姓名 成绩1 成绩2 成绩3;

在定义结构体数组,实现存放多人的信息,定义一个max,用于找出总分最高的人

先输入n(n个学生),在循环输入n个学生的成绩存放于数组中

先让max=s【0】;

之后让max去和所有人进行比较,如果有找到比他大的数就让max=s【i】;直至找到最后一个

最后输出max;

 

结构图:

代码截图

3、调试过程

由于本题一次正确,无错误调试;

但是需要注意的是在给max附初值的时候要用if条件;

否则每次循环的时候max都会先等于s【0】;相当于后面的语句即使是生效了但在下一次进入循环的时候是没有体现的



题目三、
7-12 单向链表4(10 分)

定义单向链表:输入若干个正整数(输入-1为结束标志),要求按输入数据的逆序并输出。

输入输出示例:括号内为说明

输入样例:

1 2 3 4 5 6 7 -1

输出样例:

7 6 5 4 3 2 1

1、本题PTA提交列表

2、设计思路

先利用循环,循环输入数,直到-1结束

在从n-1开始输出到i=0的时候

 

结构图

代码截图

3、调试过程

一开始我采用的是冒泡排序法进行排序后输出,但意识到如果输入的值不是刚好从小到大的话,那么就会出错

只需要将他从最后一位输到第一位就可以了


 

二、同学代码互评

我们两个人的思路差不多,只是在寻找的时候,我的是边输边找,张瑜的是全部输完之后再找

我比较喜欢我的代码

四、本周学习总结

本周通过结构体的学习,

结构体的定义和初始化

struct stu{

 int xuehao;//学号

int score;//分数

char name[10];//名字

}xiaohong = {141089,60,"xiaohong"};//结构体写完需要加分号,因为它虽然有大括号,但它不是一个函数,而是一个数据定义和初始化的过程,像 int x;

上面是一种初始化的方法,还可以这样写

struct stu xiaoming = {414090,100,"xiaoming"};

typedef 可以把它看成是一个命名规则,比如:

typedef struct stu{

int xuehao;

int score;

char name[10];

}STU;

初始化或者定义结构体变量就可以这么写:

STU xiaohu = {414091,59,"xiaohu"};

 在结构体内不可以进行赋值





























posted on 2018-01-20 15:23  huangyilin  阅读(2869)  评论(0编辑  收藏  举报