void calc(struct student *p,int n); 累加總分函式
定義變數i作為迴圈變數
for i=0 to n-1
p[i].sum=0; 將陣列都賦予初值0
for j=0 to 2
p[i].sum= p[i].sum+ p[i].score[j]; 將3個學科的分數加到總分上
end for
void sort(struct student *p,int n); 按總分從大到小排名
定義乙個結構變數struct student m;
定義i,j作為迴圈變數
for i=0 to n-1 用選擇排序法,找最大值先排列
for j = i+1 to n-1
遍歷sum陣列找出最大分p[i].sum
struct time ; //該結構體表示時間的小時,分鐘,秒
定義結構陣列存放資料 struct time t[200]; 定義較大以免超範圍
定義兩個字元變數來輸入兩個:號char ch,op;
輸入資料後進行判斷 小時,分鐘及秒加上n秒後有沒有大於等於60 有就用時間進製
還有最後判斷小時是否為24,是則歸為0;
最後輸出
struct address; //定義結構儲存姓名,生日,性別,號碼 ,固話
定義結構陣列 struct address p[1000];
for i=0 to n-1
進行通訊錄的錄入
end for
輸入要查詢的個數 k
for i=0 to k-1
輸入要查詢的編號x 判斷x是否在範圍內
是則輸出下標為x的結構陣列所有內容
否則輸出 no found
最後判斷x是否屬於範圍內少了x>=0這個範圍導致部分正確
冒泡法用指標來實現,不用返回值,直接對陣列內的值進行交換
可以用遞迴的方法進行數字的逆序輸出
- 結構體的定義:
struct student //結構體型別的說明與定義分開。 宣告
; - 結構型別變數的儲存布局按其型別定義中成員的先後順序排列,先定義的排在前面。
- 結構陣列的元素成員引用通過' . ' 號來指定 ,還可以用 -> 號來訪問指標指向的結構成員 如p ->num = 333(p為位址)
- 在用指標訪問結構成員時(*p).num = 333 中()是不可少的。
- 1.同乙個記憶體段可以用來存放幾種不同型別的成員,但是在每一瞬間只能存放其中的一種,而不是同時存放幾種。換句話說,每一瞬間只有乙個成員起作用,其他的成員不起作用,即不是同時都在存在和起作用。
- 2.共用體變數中起作用的成員是最後一次存放的成員,在存入乙個新成員後,原有成員就失去作用。
- 3.共用體變數的位址和它的各成員的位址都是同一位址。
- 4.不能對共用體變數名賦值,也不能企圖引用變數名來得到乙個值。
- 5.共用體型別可以出現在結構體型別的定義中,也可以定義共用體陣列。反之,結構體也可以出現在共用體型別的定義中,陣列也可以作為共用體的成員。
- 它的定義格式為:
union 共用體名;
共用體有時也被稱為聯合或者聯合體,這也是 union 這個單詞的本意。
結構體和共用體的區別在於:結構體的各個成員會占用不同的記憶體,互相之間沒有影響;而共用體的所有成員占用同一段內 存,修改乙個成員會影響其餘所有成員。
結構體占用的記憶體大於等於所有成員占用的記憶體的總和(成員之間可能會存在縫隙),共用體占用的記憶體等於最長的成員占用的記憶體。共用體使用了記憶體覆蓋技術,同一時刻只能儲存乙個成員的值,如果對新的成員賦值,就會把原來成員的值覆蓋掉。
共用體也是一種自定義型別,可以通過它來建立變數,例如:
union data;
union data a, b, c;
上面是先定義共用體,再建立變數,也可以在定義共用體的同時建立變數:
union data a, b, c;
如果不再定義新的變數,也可以將共用體的名字省略:
union a, b, c;
列舉型別的定義形式為:
enum typename;
enum是乙個新的關鍵字,專門用來定義列舉型別,這也是它在c語言中的唯一用途;typename是列舉型別的名字;
valuename1, valuename2, valuename3, ......是每個值對應的名字的列表。注意最後的;不能少。
例如,列出乙個星期有幾天:
enum week;
可以看到,我們僅僅給出了名字,卻沒有給出名字對應的值,這是因為列舉值預設從 0 開始,往後逐個加 1(遞增);也就是說,week 中的 mon、tues ...... sun 對應的值分別為 0、1 ...... 6。
我們也可以給每個名字都指定乙個值:
enum week;
更為簡單的方法是只給第乙個名字指定值:
enum week;
這樣列舉值就從 1 開始遞增,跟上面的寫法是等效的。
列舉是一種型別,通過它可以定義列舉變數:
enum week a, b, c;
也可以在定義列舉型別的同時定義變數:
enum week a, b, c;
有了列舉變數,就可以把列表中的值賦給它:
enum week;
enum week a = mon, b = wed, c = sat;
或者:enum week a = mon, b = wed, c = sat
以為當n為負數的時候再進行遞迴就會發生錯誤導致選了d,後來老師上課講解了才知道
沒有理解透徹遞迴,導致錯誤
先進行除10 在進行遞迴,最後輸出的是n%10 的值使這遞迴不能逆序輸出,而還是輸出7534
C語言部落格作業 結構體
第乙個函式的編寫 首先要遍歷結構體陣列使sum得初始值為0,遍歷陣列中的score與sum相加。第二個函式編寫 先定義乙個結構體中間量temp 用選擇排序法進行排序,進行第二個函式的操作。本題沒有問題認為可以將第乙個函式中的 s用p去操作可以節約空間,還有就是可以用typedef對結構體取別名這樣會...
C語言部落格作業 結構體
1.本題pta提交列表 2.設計思路 void calc struct student p,int n void sort struct student p,int n 3.截圖 4.本題除錯過程碰到問題及pta提交列表情況說明 碰到的問題 最開始用冒泡法,排序反了 解決方法 改變冒泡法內層迴圈的判...
C語言部落格作業 結構體
struct student 該結構體表示學生的學號 姓名 成績和等級 struct worker 結構體表示職員的姓名 基本工資,浮動工資 支出 實際工資 定義結構陣列s n 迴圈輸入n個職員的資訊 for i 0 to i n 1 計算s i sjgz end for 輸出n個職員姓名和實際工資...