標籤:nio gpo 指派陳述式 複數 har 姓名 不能 允許 浮動
一、PTA實驗作業題目1:6-1 計算兩個複數之積1. 本題PTA提交列表
2. 設計思路
struct complex{ int real; int imag;};//該結構體表示複數的實部和虛部struct complex multiply(struct complex x, struct complex y)//定義Function Compute複數間的乘法定義struct complex變數result表示函數的傳回值result.real=x.real*y.real-x.imag*y.imag計算result的實部result.imag=x.real*y.imag+x.imag*y.real計算result的虛部返回result
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明。原本想直接return運算式但沒辦法同時返回虛部和實部,於是設定stuct complex變數result並返回題目2:7-1 計算職工工資1. 本題PTA提交列表
2. 設計思路
struct staff{ char n[10]; float j_money; float f_money; float z_money; float s_money;};//該結構體表示員工姓名,基本工資,浮動工資,支出和實發工資定義struct staff 變數p[999]存放員工資訊,定義變數N表示輸入員工資訊的個數,變數i表示迴圈次數輸入Nfor i=0 to i=N-1輸入 員工的姓名,基本工資,浮動工資,支出end forfor i=0 to i=N-1計算員工實發工資=基本工資+浮動工資-支出end forfor i=0 to i=N-1輸出員工姓名 實發工資end for
3.代碼
4.本題調試過程碰到問題及PTA提交列表情況說明。一開始設定變數p數組長度為50但是提示不夠大,於是設為999題目3:7-2 時間換算1. 本題PTA提交列表
2. 設計思路
struct time{ int h; int m; int s;}; //該結構體表示時間的小時,分鐘,秒設定struct time 變數p設定變數n,k,l表示n秒後經過幾分鐘,幾小時輸入起始時間輸入n秒IF 起始秒+n秒<60 則秒=起始秒+n否則 k=(起始秒+n秒)/60 , 秒=(起始秒+n秒)%60 //表示超過幾分鐘IF 起始分鐘+k<60 則分鐘=起始分鐘+k否則 l=(起始分鐘+k)/60 ,分鐘=(起始分鐘+k)%60IF 起始小時+l<24 則小時=起始小時+l否則 小時=(起始小時+l)%24end IF輸出新的時間
4.本題調試過程碰到問題及PTA提交列表情況說明。不是很理解這道題和結構體之間的關係二、本周題目集的PTA最後排名
三、閱讀代碼1-如果一個數組中的所有元素儲存的都是指標,那麼我們就稱它為指標數組。
arr 是一個指標數組,它包含了 3 個元素,每個元素都是一個指標。parr 是指向數組 arr 的指標。啟示了我們數組裡也可以存放地址,然後設定成指標數組,但parr的定義形式應該理解為int
(parr),括弧中的
表示 parr 是一個指標,括弧外面的int 表示 parr 指向的資料的類型。arr 第一個元素的類型為 int
,所以在定義 parr 時要加兩個 。2-輸入一個結構體類型變數的成員,並輸出。
程式使用了嵌套結構簡潔地表示出學生資訊,用student->的方式指向比(*student).省略兩個字元更加簡潔。通過C提供的函數malloc()來為指標分配安全的地址。函數sizeof()傳回值是計算給定資料類型所佔記憶體的位元組數。四、本周學習總結1.總結本周學習內容。
結構體、共用體、枚舉這種構造資料類型特點。
結構體和數組一樣都是構造型資料類型,和數組不同的是,結構體可以處理不同類型的資料。共用體是一種多變數共用儲存空間的構造類型,它允許幾種不同的變數共用同一儲存空間。共用體和結構體的區別: 1.結構體每一位成員都用來表示一種具體事務的屬性,共用體成員可以表示多種屬性(同一儲存空間可以儲存不同類型的資料)。 2.結構體總空間大小,等於各成員總長度,共用體空間等於最大成員佔據的空間。 3.共用體不能賦初值。 4.共用體變數中的值是最後一次存放的成員的值如 a.i = 1; a.ch = ‘a‘; a.f = 1.5; 完成以上三個指派陳述式後共用體邊量的值是 1.5而 a.i=1 和 a.ch=‘a‘已無意義 共用體變數不能初始化例 union data { int i; char ch; float f; }a={1,‘a‘, 1.5} 錯誤!!!
共用體的定義形式union 共用體名
成員列表
變數列表
遞迴函式原理
遞迴(recursion)就是子程式(或函數)直接調用自己或通過一系列調用語句間接調用自己,是一種描述問題和解決問題的基本方法。
遞迴通常用來解決結構自相似的問題。所謂結構自相似,是指構成原問題的子問題與原問題在結構上相似,可以用類似的方法解決。具體地,整個問題的解決,可以分為兩部分:第一部分是一些特殊情況,有直接的解法;第二部分與原問題相似,但比原問題的規模小。實際上,遞迴是把一個不能或不好解決的大問題轉化為一個或幾個小問題,再把這些小問題進一步分解成更小的問題,直至每個小問題都可以直接解決。因此,遞迴有兩個基本要素:
(1)邊界條件:確定遞迴到何時終止,也稱為遞迴出口。
(2)遞迴模式:大問題是如何分解為小問題的,也稱為遞迴體。遞迴函式只有具備了這兩個要素,才能在有限次計算後得出結果
在遞迴函式中,調用函數和被調用函數是同一個函數,需要注意的是遞迴函式的調用層次,如果把調用遞迴函式的主函數稱為第0層,進入函數後,首次遞迴調用自身稱為第1層調用;從第i層遞迴調用自身稱為第i+1層。反之,退出第i+1層調用應該返回第i層。
遞迴函式的內部執行過程
一個遞迴函式的調用過程類似於多個函數的嵌套的調用,只不過調用函數和被調用函數是同一個函數。為了保證遞迴函式的正確執行,系統需設立一個工作棧。具體地說,遞迴調用的內部執行過程如下:
(1)運動開始時,首先為遞迴調用建立一個工作棧,其結構包括值參、局部變數和返回地址;
(2)每次執行遞迴調用之前,把遞迴函式的值參和局部變數的當前值以及調用後的返回地址壓棧;
(3)每次遞迴調用結束後,將棧頂元素出棧,使相應的值參和局部變數恢複為調用前的值,然後轉向返回地址指定的位置繼續執行。
2.羅列本周一些錯題。
C語言部落格作業--結構體