結構體和鏈表


一、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"};

 在結構體內不可以進行賦值






























免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM