2015-10-15 129 views
-1

我開始學習C,所以我需要一個能解釋以下程序的人,該程序應該將攝氏溫度轉換成華氏度,反之亦然。一步步。我需要了解這個C代碼

#include <stdio.h> 

#define TF2TC 

    main() { 
    double tc, tf, offset, conv; 

    offset = 32.; 

#ifdef TF2TC 
    conv = 5./9.; 
    printf("Fahrenheit Value= "); 
    scanf("%lf",&tf); 
    tc = (tf - offset) * conv; 
    printf("celsius value= %f\n",tc); 
#endif 
#ifndef TF2TC 
    conv = 9./5.; 
    printf("celsius value= "); 
    scanf("%lf",&tc); 
    tf = tc * conv + offset; 
    printf("fahrenheit value= %f\n",tf); 
#endif 
} 
+3

當人們開始學習C時,哪裏有人想出這樣的程序?這不是......我能想象的最好的學習計劃。只要閱讀K&R或其他一些合理的書。 :) – unwind

+1

發佈的代碼不能幹淨地編譯。編譯時始終啓用所有警告。 (對於gcc,至少使用:'-Wall -Wextra -pedantic')然後修復警告。注意:main()函數的聲明總是返回一個'int' – user3629249

回答

1
double tc, tf, offset, conv; // --> declaring 4 doubles 

    offset = 32.; // --> assigning 32.0 to offset 

#ifdef TF2TC // --> if the macro TF2TC was defined do this: 
    conv = 5./9.; // --> assigning 5./9. to conv 
    printf("Fahrenheit Value= "); // --> printing "Fahrenheit Value= " 
    scanf("%lf",&tf); // --> scanning user input and storing it in tf 
    tc = (tf - offset) * conv; // --> assigning (tf - offset) * conv to tc 
    printf("celsius value= %f\n",tc); // --> printing "celsius value= {value of tc}" 
#endif 
#ifndef TF2TC // --> if the macro TF2TC wasn't defined do this: 
    conv = 9./5.; // --> assigning 5./9. to conv 
    printf("celsius value= "); // --> printing "celsius value= " 
    scanf("%lf",&tc); // --> scanning user input and storing it in tf 
    tf = tc * conv + offset; // assigning tc * conv + offset to tf 
    printf("fahrenheit value= %f\n",tf); // --> printing "fahrenheit value= {value of tf} " 
#endif 
0

這裏是貼碼的主要概念。 (A)如果定義了TF2TC宏,則編譯代碼以將用戶輸入從華氏溫度轉換爲攝氏溫度。 (B)如果未定義TF2TC宏,則編譯代碼以將用戶輸入從攝氏度轉換爲華氏度。

在發佈的代碼中,TF2TC宏定義爲:#define TF2TC,因此編譯(A)代碼並忽略其他代碼塊。