C 筆記二 華氏溫度轉(zhuǎn)攝氏溫度

使用公式 °C = ( 5 / 9 ) (°F - 32) 打印 0 ~ 300 之間華氏溫度對應(yīng)的攝氏溫度(間隔為20)。

/* fahr2Celsius.c */
#include <stdio.h>

int main() {
    int fahr, celsius;
    int lower, upper, step;
    
    lower = 0;
    upper = 300;
    step = 20;
    
    fahr = lower;
    while (fahr <= upper) {
        celsius = 5 * (fahr - 32) / 9;
        printf("%d\t%d\n", fahr,celsius);
        fahr = fahr + step;
    }
    return 0;
}

C 語言中所有變量都應(yīng)該先聲明后使用。聲明用于說明變量的屬性,由一個類型名和其后的變量表組成:

int fahr, celsius;
int lower, upper, step;

int 表示其后的變量都是整數(shù),float 表示其后變量為浮點數(shù)(帶有小數(shù)部分)。
除了例子中用到的 intfloat 類型之外,C 語言還提供了其他一些基本數(shù)據(jù)類型:
char : 字符,一個字節(jié)
short : 短整形
long : 長整形
double : 雙精度浮點型
類型對象的取值范圍取決于具體的機器。
C 語言中的每一條語句都必須以分號結(jié)束!否則編譯器會進(jìn)行報錯(一般會出現(xiàn)在該語句的下一個語句起始處)。

下面的語句為各個變量賦值:

lower = 0;
upper = 300;
step = 20;
fahr = lower;

在進(jìn)行溫度轉(zhuǎn)換的時候,每一個華氏溫度都是通過同一個公式來計算其對應(yīng)的攝氏溫度,為了避免書寫重復(fù)的計算步驟,C 語言提供了幾個循環(huán)語句,這里用到的其中一個 while 循環(huán)語句:

/* 圓括號內(nèi)為 條件*/
while ( fahr <= upper) {
    /*
     * 循環(huán)體
     */
}

while 的執(zhí)行方式:
step 1. 測試圓括號內(nèi)的條件,條件為真,則執(zhí)行步驟 2;條件為假,循環(huán)結(jié)束;
step 2. 依次執(zhí)行循環(huán)體內(nèi)的語句,返回步驟 1。

while 語句的循環(huán)體如果有多條語句,則需要用花括號括起來,如果只有一條語句,可以省略花括號,像下面這樣:

while (expression) 
    statement;

建議只有一條語句的時候也加上花括號,以防后面需要向循環(huán)體添加額外操作時由于忘記加上花括號而引發(fā)奇怪的錯誤。

while 循環(huán)體內(nèi)的語句縮進(jìn)了一個制表位,對 C 語言來說這并不是必要的,但是適當(dāng)?shù)目崭窈涂s進(jìn)對代碼的可讀性極為重要。

循環(huán)體執(zhí)行了溫度轉(zhuǎn)換計算,并將計算結(jié)果打印出來。注意下面計算語句和公式 °C = ( 5 / 9 ) (°F - 32) 的形式:

celsius = 5 * (fahr - 32) / 9;

C 語言中,兩個整數(shù)的除法運算,其結(jié)果也是整數(shù),小數(shù)部分將被舍棄,因此 5 / 9 的結(jié)果是 0。這樣公式就變成了 °C = 0 * (°F - 32)。

printf 是一個用于打印輸出的庫函數(shù),可對參數(shù)進(jìn)行格式化輸出。% 及其后面的字符指定了參數(shù)的輸出類型,且 % 的數(shù)目必須與后面的參數(shù)在數(shù)量和類型上嚴(yán)格匹配。

fahr = 12;
/* 下面操作將打印出錯誤的結(jié)果 */
printf("%d\t%d\n", fahr);
/* 
 * 我的編譯器上運行的結(jié)果為:
 * 12    4135088
 */

在上面的例子中:

printf("%d\t%d\n", fahr,celsius);

%d 指定了一個整形參數(shù),第一個 %d 對應(yīng) fahr,第二個 %d 對應(yīng) celsius。兩者之間的 \t 表示打印一個制表符。

程序的編譯運行結(jié)果如下:

$ ./fahr2Celsius.out
0   -17
20  -6
40  4
60  15
80  26
100 37
120 48
140 60
160 71
180 82
200 93
220 104
240 115
260 126
280 137
300 148

用浮點算術(shù)運算替代整型算術(shù)運算可以得到更精確的結(jié)果。
下面的例子采用浮點算術(shù)運算,打印攝氏溫度對應(yīng)的華氏溫度表。

/* celsius2Fahr.c*/

#include <stdio.h>

int main() {
    float fahr, celsius;
    int lower, upper, step;
    
    lower = 0;
    upper = 300;
    step = 20;
    
    /* 這里先將 lower 轉(zhuǎn)換為浮點型,再進(jìn)行賦值 */
    celsius = lower;

    while (celsius <= upper) {
         /* 5.0 / 9.0 是兩個浮點數(shù)相除,其結(jié)果也是浮點數(shù) */
        fahr = 9.0 / 5.0 * celsius + 32;

        /* %6.1f 表示打印的浮點數(shù)至少占 6 個字符的寬度,且小數(shù)點后保留一位有效數(shù)字 */
        printf("%3.0f\t%6.1f\n", celsius, fahr);
        celsius += step;
    }
    
    return 0;
}
$ ./celsius2Fahr.out 
  0   32.0
 20   68.0
 40  104.0
 60  140.0
 80  176.0
100  212.0
120  248.0
140  284.0
160  320.0
180  356.0
200  392.0
220  428.0
240  464.0
260  500.0
280  536.0
300  572.0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容