正文 第13章 基本輸入輸出(2 / 3)

voidmain()

floatr,s;

r=21;

s=314*r*r;

編譯運行該程序都沒有問題,但是運行後我們無法查看結果(麵積是多少?),原因是所求的麵積是保存在變量s中的,但是程序並沒有輸出s的值,所以無法看到結果。

作如下修改:

#include

voidmain()

floatr,s;

r=21;

s=314*r*r;

printf("area=s");

為程序添加了一條輸出語句,再次運行該程序發現有輸出了,但輸出的是“area=s”,而並不是具體的數值,也就是它輸出了變量s的變量名而不是變量值。原因還是上一小節所說的printf函數會原樣輸出格式控製字符串的非格式字符內容,此例的printf函數中的s是一個普通字符而非格式字符。那麼要輸出s的值該怎麼做呢?

對程序再作如下修改:

#include

voidmain()

floatr,s;

r=21;

s=314*r*r;

printf("area=%f",s);

運行程序後的輸出結果是:area=13847399。此時可以看出上例中的“%f”就是一種格式字符,輸出時用輸出列表中的相應值代替它(該例的輸出列表相應值就是變量s的值)。

下麵具體介紹格式字符的形式和分類。

格式字符由“%”開始(如上例的“%f”),後跟類型控製符。不同類型的數據輸出要使用不同的格式字符。

(1)d格式符:用來輸出十進製整數。

[例44]

#include

voidmain()

inta=3;

printf("a=%d",a);

編譯運行程序後輸出結果為:

a=3

d格式符還有以下幾種用法:

%md:m為指定的輸出數據的寬度。如果輸出數據的位數小於m,則左端補以空格,如大於m,則按實際位數輸出,如:

inta=234,b=23456;

printf("a=%4d,b=%4d",a,b);

輸出為:a=凵234,b=23456。

%-md:與%md的作用相似,不同點在於當輸出數據的位數小於m時,是在右端補空格,同樣的,如果數據位數大於m,則按實際位數輸出,如:

inta=234,b=23456;

printf("a=%-4d,b=%-4d",a,b);

輸出為:a=234凵,b=23456。

%ld:輸出長整型數據,如:

longa=138890;

printf("a=%ld",a);

(2)f格式符:用來輸出實數(包括單、雙精度),以小數形式輸出。

[例45]

#include

voidmain()

floata=123456789;

doubleb=12345678;

printf("a=%f,b=%f",a,b);

運行後輸出結果為:a=12345679,b=12345678。

f格式符還有以下幾種用法:

%m.nf:指定輸出的數據共占m列,其中有n位小數。如果數值長度小於m,則左端補空格,注意小數點要占1位。

%-m.nf:與上一用法相似,隻是當數據長度小於m時,在右端補空格。

(3)c格式符:用來輸出一個字符,例如:

charc=a;

printf("%c",c);

輸出字符“a”。注意:%c中的c是格式符,逗號右邊的c是變量名。

scanf函數稱為格式輸入函數,即按用戶指定的格式從鍵盤將數據輸入到指定的變量之中。

1.scanf函數的一般形式

scanf函數的一般形式為:

scanf("格式控製字符串",地址表列);

其中,格式控製字符串的作用與printf函數的相同,但不能顯示非格式字符串,也就是不能顯示提示字符串。地址表列中給出各變量的地址。地址是由地址運算符“&”後跟變量名組成的。例如:

&a,&b

[例46]編程實現輸入一個圓的半徑,輸出其麵積。