標籤:組織 簡潔 post 靈活 答案 自訂資料類型 部落格 處理 code
一、PTA實驗作業題目1: 結構體數組按總分排序1. 本題PTA提交列表
2. 設計思路
求出每名學生的總分定義i,j迴圈變數for i=0 to n for j=0 to 3 p[i].sum+=p[i].score[j]將三個成績累加即為總分end總分從高到低排序定義i,j迴圈變數定義結構體中間變數tfor i=0 to 5 for j=0 to 5-i 冒泡排序從高到低end
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明。
解決辦法:將中間變數定義成結構體變數,交換時將結構體的內容整體交換
題目2:有理數比較1. 本題PTA提交列表
2. 設計思路
struct y{ int mol; int den;}n,m; //定義表示分子分母的結構體 //並同時定義兩個結構體變數m,n定義a,b,c,d存放原始值輸入兩個有理數兩個有理數進行通分比較兩分子大小 並利用a,b,c,d輸出結果
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明。
解決辦法:定義四個變數放原本的值,最後利用他們輸出。
題目3:時間換算1. 本題PTA提交列表
2. 設計思路
struct time{ int hh; int mm; int ss;} now,result; //定義表示時間分鐘秒鐘的結構體 //並同時定義一個現在時間的和一個結果時間結構體變數定義n為要加的秒數輸入結構體變數now和n利用時間60進位來換算出結果時間(此處運算不太好表述) result.ss=(now.ss+n)%60;//根據各自與60的進位關係計算 result.mm=(now.mm+(now.ss+n)/60)%60; result.hh=now.hh+(now.mm+(now.ss+n)/60)/60;if result.hh等於24 令它等於0
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明。
解決辦法:加入一個條件判斷
二、本周題目集的PTA最後排名。
三、閱讀代碼整數分解為若干項之和
這道題是周三上機的一道題目,當時看了題目有思路,但是一直做不出來。回來以後上網一查,發現原來可以用遞迴的思路來解決這道題,確實簡單很多。
從上面的代碼不難看出他的遞迴出口是累加的總和等於了輸入的 N。但是我覺得遞迴的特點是形式簡單,但是實際上細節繁多。需要注意非常多細節。
#include<stdio.h>int N;int s[31]; // 存放劃分結果 int top = -1; // 數組指標 int count = 0; // 統計輸出的次數 int sum = 0; // 拆分項累加和 void division (int i);int main (){ scanf ("%d", &N); division (1); return 0; }void division (int i) { if (sum == N) { count ++; printf("%d=", N); int k; for (k=0; k<top; k++) { printf("%d+", s[k]); } if (count%4 == 0 || s[top] == N) { printf("%d\n", s[top]); } else { printf("%d;", s[top]); } return; } // 輸出部分 if (sum > N) { return; } for (int j=i; j<=N; j++) { s[++top] = j; sum += j; division (j); sum -= j; top --; } // 演算法主體 }
時間換算
這是戴潔的代碼,她的方法簡單明了,將所有時間都換成秒數,最後在換算回去。理解上面比我的60進位好很多,而且她最後輸出也利用的時%02d來解決0點的問題,不用像我一樣再加一個if判斷。
四、本周學習總結1.總結本周學習內容結構體、共用體、枚舉這種構造資料類型特點
結構體是把不同類型的資料群組合成一個整體的自訂資料類型,它更像是數組的進化版,數組中的元素必須類型相同。
struct student{ int num; char name; int grade;};
結構體型別宣告描述結構的組織形式,不分配記憶體。
共用體是使幾個不同類型的變數共佔一段記憶體(相互覆蓋)
union 共用體名{ 類型標識符 成員名; 類型標識符 成員名; .........};
枚舉元素按常量處理,在定義時由程式員指定,之後不能對他們賦值。
遞迴函式原理
遞迴函式就是直接或者間接的調用自己本身的函數。
缺點:遞迴快速耗記憶體,不方便閱讀和維護,效率低
優點:簡潔,適合解決階乘、涉及相反順序的編程問題
尾遞迴:最簡單的調用函數,無需返回調用,相當於迴圈。
宏定義:用宏來定義一些符號變數,方便程式的編製。
- 用途:
符號常量,如PI,數組定義大小,以增加程式的靈活性
簡單的函數功能實現
為程式書寫帶來一些方便
2.羅列本周一些錯題。
- 這道題的第二個空確實不會,聽老師講完後才明白為什麼要這樣定義。
C語言第十次部落格作業--結構體