C語言教程 - 制作單位轉(zhuǎn)換器

C 語言是一個強(qiáng)大而通用的編程語言。這款誕生于 1972 年的編程語言起初用于開發(fā) UNIX 操作系統(tǒng),而它如今已是廣泛用于開發(fā)各類操作系統(tǒng)、數(shù)據(jù)庫、編譯器及其他軟件等的主流編程語言。
作為編程界的奠基語言之一,學(xué)習(xí) C 語言有助于軟件編程領(lǐng)域的學(xué)生甚至專業(yè)人士深入了解編程原理。學(xué)習(xí) C 語言其實(shí)非常簡單,C 語言本身的語言結(jié)構(gòu)化,而其高效的程序編譯過程也能讓初學(xué)者深入淺出地掌握編程知識,從最基礎(chǔ)的程序開始到復(fù)雜的操作系統(tǒng)都能實(shí)現(xiàn)。
這篇教程通過使用 C 語言編寫簡易單位轉(zhuǎn)化器,從而講解如何從最基本的編輯器開始接觸 C 語言,通過說明變量類型、繪制程序流程、編寫程序等過程,講解編程中的邏輯、函數(shù)功能及原理。
編輯器選擇
縱使 C 語言是編程語言的老——,我們依舊可以借助比 C 語言更年輕的編輯器來進(jìn)行編程。如果將編輯器與編程語言相對比,那么編輯器就像紙筆一樣,只要是自己用的稱心的紙筆都能寫程序。編輯器的選擇有很多,但好的編程體驗(yàn)從合適的編輯器開始,而類似 C 語言在線編譯器 Lightly 就能滿足我們的編程需求。

在信息爆炸的年代,好的編輯器能提高編程效率,降低學(xué)習(xí)編程的成本。原本復(fù)雜的環(huán)境部署程序,在 Lightly 只需要登錄編輯器,選擇 C 語言在線編程即可。
引入 C 語言庫
#include <stdio.h>
是 C 語言的標(biāo)準(zhǔn)庫頭文件,其中的 std 為英語 Standard 的縮寫,i/o 分別表示 input 和 output,而 .h
則是頭文件 header 的后綴。另外,這篇教程也會使用 #include <stdlib.h>
,即 Standard Library。
C 語言的標(biāo)準(zhǔn)庫頭文件中包含 printf()
、scanf()
、system()
、exit()
等常用的功能函數(shù),這篇教程將重復(fù)使用這些函數(shù),從而鞏固大家對這些函數(shù)的應(yīng)用能力。
定義變量

在 C 語言中,變量大致可分為以上幾種類型。我們在 C 語言中使用變量之前,需要為這些變量定義,以便程序識別變量類型。
看到長串的變量先不必慌張,我們只需要養(yǎng)成建立變量清單的習(xí)慣,在編寫程序的過程中逐個添加即可。注意:每一行程序末端需要寫上分號 ;
,以結(jié)束一行程序,否則編譯的時候就會報錯。
繪制程序流程圖
我們在開始編程之前,可以養(yǎng)成繪制流程圖的習(xí)慣,以便編寫程序的時候邏輯更加清洗。這種流程圖不一定需要用軟件繪制,即便是最原始的紙筆有時候也能有效地幫助我們理清程序思路。

編寫主程序
我們的主程序一般寫在 int main()
函數(shù)內(nèi),其中的程序內(nèi)容包含在花括號 { ... }
中。
也許有細(xì)心的同學(xué)發(fā)現(xiàn),我們的主程序函數(shù)和前面列出的子程序函數(shù)不太一樣,主程序的變量使用的是 int
整數(shù)而非 void
空變量。沒錯,主程序本身確實(shí)會返回整數(shù)!當(dāng)我們結(jié)束程序時,一般會使用 return 0
或 exit(0)
。如此一來,主程序就會讀取變量,根據(jù)返回的變量判斷程序是否運(yùn)行。
int main()
和 void main()
之間的差別
當(dāng)我們使用 void 變量來保存函數(shù)時,這類函數(shù)并不會保存整數(shù)。因此,當(dāng)我們需要程序完整運(yùn)行,而非使用 exit()
函數(shù)終止程序時,我們就可以使用 void 作為變量類型。然而,當(dāng)我們需要返回特定整數(shù)時,void 變量就不再適用。因此,我們需要適當(dāng)?shù)嘏袛喑绦蛴猛緛磉x擇變量類型。

在我們的主程序中,除了前面已經(jīng)講解過的 int main()
,我們還使用了幾種不同的新函數(shù)。
While 循環(huán)
while()
是 C 語言中的一種循環(huán)類型,當(dāng)變量與括號 ()
中數(shù)值相符時,程序便會持續(xù)運(yùn)行。
Printf 輸出
printf()
即輸出括號中的內(nèi)容。其中的內(nèi)容可以是文本,也可以是數(shù)字。如果需要在文本下方空格,還可以輸入 \n
。
Scanf 輸入
scanf()
即監(jiān)聽輸入。我們通過這個函數(shù)向程序輸入數(shù)據(jù)并保存在相應(yīng)的變量中。其中,"%c"
表示數(shù)據(jù)類型為文本,另外也有 "%d" 等表示整數(shù)的輸入類型;而后者的 &category
則表示儲存數(shù)據(jù)的變量。
Switch 切換
switch()
可根據(jù)輸入的內(nèi)容切換子程序,我們需要在括號內(nèi)填入讀取的變量內(nèi)容,然后通過不同的 case
切換程序。
System 系統(tǒng)
system("clear")
即清屏。
編寫子程序
完成主程序編寫后,我們可以再逐個轉(zhuǎn)到子程序。這種區(qū)分主次的編程方法可以讓程序變得更加簡潔,減少代碼出錯。如果代碼出現(xiàn)錯誤,我們只需根據(jù)報錯修改相應(yīng)的代碼即可,而其他程序之間也不會因此受到影響。
與主程序中的 switch()
函數(shù)不同,我們在編寫溫度轉(zhuǎn)換器時使用了 if()
、else if()
和 else
函數(shù)切換程序。
If 條件
在 if()
函數(shù)中,程序通過判斷變量是否符合條件來執(zhí)行接下來的步驟。若條件不符,則程序會直接執(zhí)行 else
中的內(nèi)容。
在 printf()
中調(diào)用變量
在我們的轉(zhuǎn)換器子程序中,我們同樣通過 scanf()
函數(shù)監(jiān)聽所輸入的數(shù)據(jù),然后再通過相應(yīng)的公式計算出結(jié)果。在 printf()
中調(diào)用結(jié)果時,同樣可以使用 "%d"
指定數(shù)據(jù)類型,但指定的變量則無需添加 &
,直接寫入變量名稱即可。
即便在子程序中,我們也同樣可以引用類似 backTemp()
等更多的子程序,減少代碼的重復(fù)性,也讓代碼變得更簡潔。
恭喜你,你已完全解鎖制作單位轉(zhuǎn)換器所需要的編程知識!通過這一方法繼續(xù)完成另外兩個貨幣轉(zhuǎn)換器 currencyConverter()
及質(zhì)量轉(zhuǎn)換器 massConverter()
中的程序,即可完成程序流程圖中所列出的所有內(nèi)容。完整程序代碼可查看:https://ed88ed3901-share.lightly.teamcode.com