C 語言入門 Demo 例程

2021-08-20 07:12:45 字數 4072 閱讀 4881

本次通過乙個小例程來回顧和整理【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來給一段 附加上編譯條件,然後 預處理器 收集滿足...