voidmain()
{
floatr,s;
r=21;
s=314*r*r;
}
編譯運行該程序都沒有問題,但是運行後我們無法查看結果(麵積是多少?),原因是所求的麵積是保存在變量s中的,但是程序並沒有輸出s的值,所以無法看到結果。
作如下修改:
#include
voidmain()
{
floatr,s;
r=21;
s=314*r*r;
printf("area=s");
}
為程序添加了一條輸出語句,再次運行該程序發現有輸出了,但輸出的是“area=s”,而並不是具體的數值,也就是它輸出了變量s的變量名而不是變量值。原因還是上一小節所說的printf函數會原樣輸出格式控製字符串的非格式字符內容,此例的printf函數中的s是一個普通字符而非格式字符。那麼要輸出s的值該怎麼做呢?
對程序再作如下修改:
#include
voidmain()
{
floatr,s;
r=21;
s=314*r*r;
printf("area=%f",s);
}
運行程序後的輸出結果是:area=13847399。此時可以看出上例中的“%f”就是一種格式字符,輸出時用輸出列表中的相應值代替它(該例的輸出列表相應值就是變量s的值)。
下麵具體介紹格式字符的形式和分類。
格式字符由“%”開始(如上例的“%f”),後跟類型控製符。不同類型的數據輸出要使用不同的格式字符。
(1)d格式符:用來輸出十進製整數。
[例44]
#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格式符:用來輸出實數(包括單、雙精度),以小數形式輸出。
[例45]
#include
voidmain()
{
floata=123456789;
doubleb=12345678;
printf("a=%f,b=%f",a,b);
}
運行後輸出結果為:a=12345679,b=12345678。
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
[例46]編程實現輸入一個圓的半徑,輸出其麵積。