本次通過乙個小例程來回顧和整理【c 語言入門】系列的知識點,相信你掌握了這個小例程後,你將進入 c 語言的大門,迎接 c 語言程式設計的大千風情。下面獻上例程,本例程已經上傳至 github。
開發環境:visual studio 2017
example:鍵入5個學生的名稱、語文成績、數學成績和英語成績,輸出各個學生的成績等級和各科成績的排名。源**如下。
#include
#define student_num 5 // 統計總人數
#define score_num 3 // 科目總數
/* score 為各科成績分數.
* score[0] 為語文成績,
* score[1] 為數學成績,
* score[2] 為英文成績.
* grade 為各科成績的分數等級
* grade[0] 為語文成績等級,
* grade[1] 為數學成績等級,
* grade[2] 為英文成績等級.
* name 為 student name
*/struct student
;student s_array[student_num]; // 宣告學生陣列
void input_message(void);
void printf_grade(student *stu_pc);
void bubble_method(int *score_buf, char *stuname_buf);
/* * function: 鍵入每個學生的資訊,包括:姓名、語文成績、數學成績和英語成績
* note:
* 先鍵入學生名稱,再鍵入語文成績,再鍵入數學成績,最後鍵入英語成績
* 資訊鍵入需要注意空格!
*/void input_message(void)}/*
* function: 將單個學生的各科的成績結果劃分等級, 輸出各科的成績等級
* note:
* [0 , 60) 為 d
* [60, 75) 為 c
* [75, 85) 為 b
* [85, 100] 為 a
* 其餘輸入值會被認為是錯誤值,顯示 e
*/void printf_grade(student *stu_pc)
else
if ((60
<= stu_pc->score[i]) && (75 > stu_pc->score[i]))
else
if ((75
<= stu_pc->score[i]) && (85 > stu_pc->score[i]))
else
if ((85
<= stu_pc->score[i]) && (100 >= stu_pc->score[i]))
else
printf("%c ", stu_pc->grade[i]);
}printf("\r\n");}/*
* function: 使用冒泡法,對單科成績進行排名
*/void bubble_method(int *score_buf, char *stuname_buf)
}}}/*
* function: main
* 迴圈鍵入 5 個學生的 student name,語文、數學和英語成績。
* 輸出每個學生的各科成績等級。
* 輸出各科成績的排名。
*/int main(void)
// 採用冒泡法對各科成績進行排序
bubble_method(&score_temp[0], studentname_temp[0]);
// 輸出各科成績資訊
switch (k)
for (i = student_num - 1; i >= 0; i--)
}return
0;}
執行結果:
下面將重點的知識點從例程中抽離出來,逐個分析。
資料型別
基本資料型別:這裡沒什麼好說的,重點關注它們的取值範圍即可,例程中主要用到的是 int 、char 這兩種基本資料型別。
派生資料型別:例程中使用了結構體、陣列兩種派生資料型別。其中,
struct student
;student s_array[student_num]; // 宣告學生陣列
那怎麼給 s_array 陣列的陣列元素賦值呢?下面的 example 演示了怎麼給陣列元素 s_array[0] 的 score 成員賦值。
example:給陣列元素 s_array[0] 的 score 成員賦值。
// score 成員具有 3 個陣列元素,需要單獨賦值
s_array[0].score[0] = 0
;s_array[0].score[1] = 1
;s_array[i].score[2] = 2
;
指標型別:為追求更快的執行速度和效率,例程中的 printf_grade 和 bubble_method 函式都使用指標作為傳參。相對於將整個陣列拷貝到函式,採用指標作為傳參的執行速度更快、效率更高。 下面通過 example 分析 printf_grade 函式是怎麼使用指標做傳參,以及使用過程是怎麼進行的。
example:
void printf_grade(student *stu_pc)
printf_grade(&s_array[i]);
if
((0<= stu_pc->score[i]) && (60 > stu_pc->score[i]))
空型別:例程中的 input_message、printf_grade 和 bubble_method 函式的型別均是空型別,這意味著這 3 個函式均是沒有返回值。其中,input_message 的傳參為 void,也就是說 input_message 是不需要傳入引數。
void input_message(void);
void printf_grade(student *stu_pc);
void bubble_method(int *score_buf, char *stuname_buf);
常量與變數
常量:使用字元 student_num 和 score_num 分別代替整形常量 5 和 3 。
#define student_num 5 // 統計總人數
#define score_num 3 // 科目總數
控制語句與結構化
for 語句實現迴圈結構:例程在很多地方使用 for 語句實現迴圈結構。比如:input_message 函式使用 for 迴圈實現了迴圈鍵入學生資訊的功能; printf_grade 函式使用 for 迴圈實現了迴圈列印某個學生的各科科目成績等級;bubble_method 函式更是使用巢狀的 for 語句實現了氣泡排序法。
if 語句實現選擇結構:例程中的 printf_grade 函式使用了 if-elseif-…-else 實現了將學生各科的成績結果劃分等級的功能。bubble_method 函式使用了 if 語句實現了氣泡排序中的比較換位功能。
Lua語言入門小例程
最近要做機械臂 和實物的程式設計,發現很多都是使用lua這門指令碼語言來進行程式設計控制的,因此就學習了一下,並且寫了幾個入門的小例程,在這裡分享一下。0.軟體安裝 列印直接使用print語句。注釋使用 多行注釋用兩個中括號,資料型別有string number function boolean等。...
C語言 指標例程 《C和指標》例程6 3 注釋
c和指標 的107頁 程式6.3 在一組字串中查詢 版本2 程式如下 include include define true 1 define false 0 intfind char char strings,char value 1 strings 5 return false int main...
C語言條件編譯例程
1.條件編譯概念 一般情況下,源 檔案中的所有行都參加編譯,但有時需要指定一部分 在某個條件下才被編譯,這就叫做 條件編譯 2 條件編譯詳解 條件編譯 發生在預處理階段,在c中,主要通過 if elif else ifdef ifndef endif來給一段 附加上編譯條件,然後 預處理器 收集滿足...