正文 第5章 簡單的C語言程序設計(3 / 3)

運行結果:

a+b+c=102

程序分析:

(1)本程序的主函數體分為兩部分,一部分為說明部分,另一部分為執行部分。

說明部分是指變量的類型說明,它是C語言源程序結構中很重要的組成部分。C語言規定,程序中所有用到的變量都必須先說明,後使用,否則將會出錯。例21和例22中未使用任何變量,因此無說明部分。說明語句由一個類型名和若幹需要說明的變量名組成,本例中inta,b,c,sum;中的int為整型類型名,a、b、c、sum為定義的4個變量名,通過該語句可以知道a、b、c、sum4個變量都可以用來存放整型數據。除了int數據類型外,C語言還提供了其他數據類型,如float(單精度浮點型)、char(字符型)等,這些將在本書的後續章節中進行介紹。

執行部分(也稱執行語句部分)一般在說明部分之後,用以完成程序的功能,本例中的第4到第8行為執行部分。程序的第4至第6行分別給變量a、b、c賦值,當a、b、c有了具體的數值之後便可以按照第7行的表達式進行相加,然後把結果存放在sum變量中。第8行是用printf函數輸出變量sum的值,即a、b、c的和。

(2)本程序中的第4至第7行都是賦值語句,其中“=”是賦值號。如第7行的sum=a+b+c;語句中,賦值號的左邊是變量sum,右邊是表達式a+b+c,該語句的作用就是將右邊表達式的值賦給左邊的變量sum,也就是執行了賦值語句後,sum變量的存儲單元中存放的數值為102,其數據類型也是整型。

(3)本程序中仍然用到了printf函數,但其格式和前兩個例子又不完全相同。本例中printf函數的參數由兩個部分組成:格式控製串和變量參數表。格式控製串是一個字符串,必須用雙引號括起來,它表示了輸出量的數據類型。在printf函數中還可以在格式控製串內出現非格式控製字符,這時在顯示屏幕上將原字符進行輸出。變量參數表中給出了要輸出的數據。當有多個數據時,用逗號間隔。本例的printf("a+b+c=%d\n",sum)中,非格式字符“a+b+c=”按照原樣在屏幕上輸出,%d為格式字符,表示對應的sum變量按照整型格式進行輸出。如果把本例中printf("a+b+c=%d\n",sum)改為printf("%d+%d+%d=%d\n",a,b,c,sum),程序的輸出結果會發生怎樣的變化呢?請讀者自己上機調試體驗printf函數的功能。有關printf函數中各種類型的格式表示法。

經過以上的程序分析,我們可以知道例23的功能是計算三個整數之和並進行格式化的輸出,但是這三個數a、b、c的值都是在程序中直接賦值的,如果要進行其他整型數據的相加,那就必須重新修改程序,這顯然不是我們所期望的,那我們能否考慮由用戶從鍵盤輸入來分別為a、b、c進行賦值呢?答案是肯定的,我們隻要對例23的程序進行稍加修改,但必須用到C語言中的另一個庫函數scanf函數。scanf函數為格式輸入函數,用戶可以按照指定的格式從鍵盤進行輸入,從而完成相應變量的賦值。

[例24]從鍵盤輸入三個整數,並計算其和。

voidmain()

inta,b,c,sum;

printf("pleaseinputthereintegernumber:");

/*調用printf函數,在屏幕上顯示提示字符串*/

scanf("%d,%d,%d",&a,&b,&c);

/*調用scanf函數,由鍵盤輸入a,b,c的值*/

sum=a+b+c;

printf("%d+%d+%d=%d\n",a,b,c,sum);

/*按指定格式輸出a,b,c的和*/

運行結果:

pleaseinputthereintegernumber:267,123,498

267+123+498=888

程序分析:

(1)本例中程序的執行過程是:首先在屏幕上顯示提示字符串,請用戶輸入三個整數,當用戶從鍵盤上鍵入三個數,如267,123,498,按下回車鍵,就會在屏幕上顯示計算結果。本程序中第4行語句的功能是在鍵盤輸入之前顯示一些提示性的信息,增強程序的可讀性。本例中,當用戶從鍵盤輸入不同的三個整數時,最後屏幕上顯示的計算結果便不相同,和例23相比,程序的功能得到了進一步的增強。

(2)鍵盤輸入函數scanf的作用是從鍵盤輸入三個整型數據分別賦給變量a、b、c。其中,%d的含義與前麵介紹的printf函數中的相同,表示輸入的數據類型為十進製整型,“&a,&b,&c”中的“&”表示取地址,用戶從鍵盤輸入的三個整數分別存放到a、b、c在內存的單元中,注意不要漏寫“&”。

和前三個例子相比,本例中增加了提示性信息和數據的輸入,從而讓C語言程序的結構更加完整和合理。