結構體和鏈表

1、PTA實驗做業數組

題目1、7-2 通信錄排序(20 分)函數

輸入n個朋友的信息,包括姓名、生日、電話號碼,本題要求編寫程序,按照年齡從大到小的順序依次輸出通信錄。題目保證全部人的生日均不相同。學習

輸入格式:

輸入第一行給出正整數n(<10)。隨後n行,每行按照「姓名 生日 電話號碼」的格式給出一位朋友的信息,其中「姓名」是長度不超過10的英文字母組成的字符串,「生日」是yyyymmdd格式的日期,「電話號碼」是不超過17位的數字及+-組成的字符串。spa

輸出格式:

按照年齡從大到小輸出朋友的信息,格式同輸出。設計

輸入樣例:

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

輸出樣例:

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

一、本題PTA提交列表

二、設計思路調試

定義一個結構體,裏面依次存放名字,生日,電話號碼code

而後定義結構數組,實現存放多人的通信信息排序

利用循環,依次輸入第一個、第二個、第三個。。。的名字,生日,電話號碼字符串

利用循環,將這些人進行排序,按年齡大小進行輸出class

 

 結構圖

代碼截圖

三、調試過程

本題出錯緣由是在於再將通信錄排序的時候,兩個結構體交換的時候出錯,交換下標時會出錯,將其改爲t=s[i];s[i]=s[j];s[j]=t就能夠成功了

 
    
 
    
7-3 找出總分最高的學生(15 分)
題目2、

給定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
一、本題pta提交列表

二、設計思路

定義結構體,存放學號 姓名 成績1 成績2 成績3;

在定義結構體數組,實現存放多人的信息,定義一個max,用於找出總分最高的人

先輸入n(n個學生),在循環輸入n個學生的成績存放於數組中

先讓max=s【0】;

以後讓max去和全部人進行比較,若是有找到比他大的數就讓max=s【i】;直至找到最後一個

最後輸出max;

 

結構圖:

代碼截圖

三、調試過程

因爲本題一次正確,無錯誤調試;

可是須要注意的是在給max附初值的時候要用if條件;

不然每次循環的時候max都會先等於s【0】;至關於後面的語句即便是生效了但在下一次進入循環的時候是沒有體現的


7-12 單向鏈表4(10 分)
題目3、

定義單向鏈表:輸入若干個正整數(輸入-1爲結束標誌),要求按輸入數據的逆序並輸出。

輸入輸出示例:括號內爲說明

輸入樣例:

1 2 3 4 5 6 7 -1

輸出樣例:

7 6 5 4 3 2 1

一、本題PTA提交列表

二、設計思路

先利用循環,循環輸入數,直到-1結束

在從n-1開始輸出到i=0的時候

 

結構圖

代碼截圖

三、調試過程

一開始我採用的是冒泡排序法進行排序後輸出,但意識到若是輸入的值不是恰好從小到大的話,那麼就會出錯

只須要將他從最後一位輸到第一位就能夠了


 

2、同窗代碼互評

咱們兩我的的思路差很少,只是在尋找的時候,個人是邊輸邊找,張瑜的是所有輸完以後再找

我比較喜歡個人代碼

4、本週學習總結

本週經過結構體的學習,

結構體的定義和初始化

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

 在結構體內不能夠進行賦值

相關文章
相關標籤/搜索