欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
c語(yǔ)言中的輸入輸出
輸入字符getchar()
getchar函數是對單個(gè)字符進(jìn)行輸入的函數。它的功能是:從標準輸入設備上(鍵盤(pán))輸入一個(gè)且只能是一個(gè)字符,并將該字符返回為getchar函數的值。
格式: getchar()
例如:
char ch;
ch = getchar();
ch為字符型變量,上述語(yǔ)句接收從鍵盤(pán)輸入的一個(gè)字符并將它賦給ch。
例1:getchar函數應用。
#include <stdio.h>
main()
{
int i;
i=getchar();
printf("%c:%d\n",i,i);
}
執行本程序時(shí),按下字符‘A’并回車(chē)后,顯示結果如下:
A:65
在使用getchar函數時(shí),要注意以下幾點(diǎn):
1)getchar函數是不帶參數的庫函數,但是()不能省略。
2)用戶(hù)輸出一個(gè)字符后,只當按“回車(chē)”鍵之后輸入的字符才有效;
3)getchar函數只接受一個(gè)字符,而非一串字符。上例中:若輸入abcde,getchar函數也只接受第一個(gè)字符‘a’。
4)getchar函數得到的字符可以賦給一個(gè)字符變量或整型變量,也可以不賦給任何變量而是作為表達式的一部分。
5)getchar函數不能夠顯示輸入的數據,如果希望顯示該數據,必須調用相應的輸出函數(例如putchar()庫函數)來(lái)實(shí)現。
還有一個(gè)與之相接近的函數是getch()函數。getch()函數表示當用戶(hù)在鍵盤(pán)上輸入一個(gè)字符后,該字符立即被計算機接受,可以通過(guò)輸出函數顯示出來(lái),而無(wú)需等待“回車(chē)”命令。
輸出字符()
函數是對單個(gè)字符進(jìn)行輸出的函數。它的功能:將指定表達式的值所對應的字符輸出到標準設備(終端),每次只能輸出一個(gè)字符。
格式:putchar(輸出項)
putchar()必須帶輸出項,輸出項可以是字符型常量或變量,putchar函數功能與printf函數中的%c相當。
例2:putchar函數的應用
#include"stdio.h"
main()
{
char o=‘O’,k=’K’;
putchar(o);
putchar(k);
putchar(‘\n’);
putchar(‘*’)
}
執行結果為:
OK
*
使用putchar函數時(shí),應注意以下幾點(diǎn):
1)輸出的數據只能是單個(gè)字符,不能是字符串。’abc’或“abc”都是錯誤的。
2)被輸出的字符常量必須用單引號括起來(lái),如:’\n’、’*’。不能用雙引號,導致錯誤。
3)當輸出項是表達式的時(shí)候,可以寫(xiě)成a+’32’等形式,不能寫(xiě)成a\n等形式。
另外,與putchar函數的功能和使用方法一樣,putch函數也可以輸出一個(gè)字符。
scanf函數的調用格式
scanf函數原型包含在標準輸入輸出頭文件“stdio.h”中。調用格式:
格式:scanf("格式控制字符串",輸入項地址列表);
scanf函數有兩項參數,用“”引起來(lái)的格式控制字符串和需要接收數據的內存地址。
格式控制字符串:規定數據輸入的格式,由轉換說(shuō)明符和普通字符組成,轉換說(shuō)明符和百分號(%)一起使用,用來(lái)說(shuō)明輸入數據的數據類(lèi)型(格式字符)。
輸入項地址列表:需要接收數據的變量地址,這些輸入項與格式控制字符串在類(lèi)型和數量上要對應,當有多個(gè)輸入項時(shí),各個(gè)地址名之間以逗號“,”分隔。輸入格式和變量類(lèi)型要保持一致。
在C語(yǔ)言中,一個(gè)變量的地址可以通過(guò)地址運算符&得到。例如:定義int a,b;則a,b的地址為&a,&b。(見(jiàn)指針一章)
scanf()函數中的輸入項是變量地址,輸入數據將被放入變量地址所指示的內存單元中,所以在變量前要加地址運算符“&”。
提示
忘記變量前加地址操作符“&”是初學(xué)時(shí)容易犯的一個(gè)錯誤?,F階段只要記住scanf語(yǔ)句中的每個(gè)變量名前面都要有&,例外的情況在以后討論。
——摘自高克寧 雒興剛主編《高級語(yǔ)言程序設計》
scanf函數的格式說(shuō)明
格式說(shuō)明字符串規定了輸入項中的變量將以何種類(lèi)型的數據格式(由轉換說(shuō)明符給出)被輸入,格式控制字符串的一般形式:
% [修飾符] 轉換說(shuō)明符
其中修飾符為任選項。
1)格式轉換說(shuō)明符:用于指定相應輸入項內容的輸入格式,常用格式見(jiàn)下表1。表1 scanf函數轉換說(shuō)明符 格式
意義
d
輸入一個(gè)十進(jìn)制整數
o
輸入一個(gè)八進(jìn)制整數
x
輸入一個(gè)十六進(jìn)制整數
i
輸入一個(gè)有符號或無(wú)符號的十進(jìn)制、八進(jìn)制、十六進(jìn)制整數
u
輸入一個(gè)無(wú)符號十進(jìn)制整數
f 、e或E、 g或G
輸入一個(gè)小數形式或指數形式的浮點(diǎn)數
c
輸入一個(gè)字符
s
輸入一個(gè)字符串
例如:
int x;
scanf(“%d”,&x);
它有兩個(gè)參數“%d”和&x,第一個(gè)參數是格式控制字符串,由%后接一個(gè)類(lèi)型轉換說(shuō)明符構成,指出用戶(hù)應該輸入的數據類(lèi)型,轉換說(shuō)明符%d說(shuō)明輸入的數據應該是一個(gè)整數。第二個(gè)參數是變量x的地址,&與變量名連用是將變量x的內存地址告訴scanf函數,計算機然后就會(huì )將輸入的數據存儲在這個(gè)地址單元中。
計算機在執行scanf語(yǔ)句時(shí),等待用戶(hù)輸入變量x的值,用戶(hù)通過(guò)鍵入一個(gè)整數并按下回車(chē)鍵響應請求,計算機把用戶(hù)的輸入值賦給變量x,操作完成后,對x的引用就會(huì )使用這個(gè)值。scanf函數(及后面學(xué)習的printf函數)提高了用戶(hù)與計算機之間的交互性。
在有多個(gè)輸入項時(shí),如果格式控制字符串中沒(méi)有普通字符或轉義字符作為讀入數據之間的分隔符,則一般采用空格符、<Tab>符或回車(chē)鍵作為讀入數據的分隔符,當C語(yǔ)言的編譯系統空格符、<Tab>符或回車(chē)鍵以及非法字符時(shí),會(huì )自動(dòng)認為數據輸入結束。計算機等待所有的數據輸入結束后的最后一次<回車(chē)鍵>,將讀入的數據分別付給對應的變量所指定的內存單元。如果數據的輸入少于格式控制字符串中指定的轉換說(shuō)明符的個(gè)數,則計算機將一直等待數據的輸入,直到所有數據全部被鍵入為止。
例如:
int x,y;
scanf(“%d%d”,&x,&y);
讀入數據的方式可以是:
1<空格>2<回車(chē)>
或者
1<回車(chē)>
2<回車(chē)>
或者
1 <Tab>2<回車(chē)>
采用“%d%d”形式的格式字時(shí),不能使用其它的數據讀入方式。例如:1,2<回車(chē)>,會(huì )使得只有1被送入x單元,而y單元不能夠得到數據2。
但是,在輸入多個(gè)帶有字符型數據時(shí),若以空格符作為分隔符,可能產(chǎn)生非預期的結果。此時(shí),空格將被作為有效字符處理。
例如:
int a;
char ch;
scanf(“%d%c”,&a,&ch);
如果數據讀入方式為:123<空格>a<回車(chē)>,本意是期望變量a的值為數值32,變量ch的值為字符a,但實(shí)際上用于分隔數據的空格被作為有效字符數據讀入并賦予給字符變量ch。為了避免這種情況,可以在格式控制字符串中加入空格作為分隔符。將上面例句改為:scanf(“%d %c”,&a,&ch);此處的%d后的空格,就可以跳過(guò)字符‘a’前所有的空格,從而保證非空格數據的正確錄入。
2)修飾符
scanf函數的修飾符有:數據讀入寬度(域寬)、*和長(cháng)度。修飾符和意義見(jiàn)下表2。
表2 修飾符以及意義
標識符
意義
域寬
指定輸入數據的寬度
*
跳過(guò)相應數據不作處理
l或h
讀入長(cháng)整型、雙精度型或短整型數據
①域寬
可以用一個(gè)十進(jìn)制數指定輸入數據的數據寬度,系統自動(dòng)按域寬截取輸入數據。
例如:
int a;
scanf(“%3d”,&a);
表示按寬度3輸入一個(gè)整數給變量a。如果讀入數據為:123456<回車(chē)>,則變量a實(shí)際接收的值為123。
例如:
int a,b,c;
scanf(“%2d%3d%4d”,&a,&b,&c);
如果讀入數據為:123456789<回車(chē)>,則變量a、b 、c 的值分別是12、345和6789??梢詫?shí)現數據的自動(dòng)截取。 ②字符*
*表示按指定格式讀入數據但不賦予相應的變量,作用是跳過(guò)相應的讀入數據。
例如:
int a,b,c;
scanf(“%d%*d%d”,&a,&b,&c);
執行該語(yǔ)句,若輸入為1? 2? 3<回車(chē)>,結果為a=1,b=3,c未賦值,2被跳過(guò)。
例1:一個(gè)實(shí)際問(wèn)題——處理一個(gè)日期數據。
假設日期讀入的格式為: 12-2-2003或12/02/2003,該數據格式中的年、月、日三個(gè)數據需要保存,但是連接年、月、日數據的連接符需要被廢棄。
當用戶(hù)以12-02-2003形式鍵入日期數據時(shí),該數據中的每一個(gè)數值(年、月、日)需要被讀入對應的變量year、month、date內存單元中,為了去掉不需要的將年、月、日數據分開(kāi)的連接符,直接方法是將這些字符包含在scanf的格式控制串中。
例如將語(yǔ)句寫(xiě)成:scanf(“%d─%d─%d’,&date,&month,&year);這條語(yǔ)句可以去掉以12-2-2003形式讀入數據中的連字符,但是當用戶(hù)輸入如下格式的日期數據::12/2/2003或12:2:2003時(shí),該語(yǔ)句語(yǔ)句不僅不能去掉不需要的字符(/或:),還會(huì )造成數據錯誤(只能正確得到date數據)。如果在輸入格式字符串中使用scanf函數提供的*,將語(yǔ)句寫(xiě)成:
scanf(“%d%*c%d%*c%d’,&date,&month,&year);就能夠從輸入數據中讀取有效數據并廢棄任何%*c所指定的數據(不將其賦給某個(gè)變量)。
程序清單如下:
#include<stdio.h>
main( )
{
int month, day,yaer;
printf("Enter a date in the form d-m-y:");
scanf("%d%*c%d %*c%d",&date,&month,,&year);
printf("date=%d month=%d year=%d\n",date ,month,year);
}
運行結果:
Enter a date in the from d-m-y:12/3/2003
day=12,month=3,year=2003
③l和h
用于說(shuō)明輸入的數據時(shí)長(cháng)整型(l)或短整型(h)。l和h可以和轉換說(shuō)明符d、o、x一起使用,形式為%ld、%lo、%lx、%hd、%ho、%hx,此外l還可以與f或e一起(%lf或%le)表示輸入double型數據。
例如:
long a;
short b;
scanf(“%10ld%hd”,&a,&b);
表示變量a的數據按寬度為10的長(cháng)整型讀入,而變量b的數據按短整型讀入。
3)普通字符(非格式字符)
格式控制字符串中除了格式字與修飾符外,還可以包含普通字符,這些普通字符包括:可打印字符、空格和轉義字符。
①可打印字符:對scanf函數,如果格式控制字符串中的說(shuō)明符之間包含有其他字符,那么在輸入數據時(shí),必須在相應位置讀入這些字符。
例如 :
int a,b;
scanf(“%d,%d”,&a,&b);
若數據輸入:1<空格>2;則只有變量a的數據是正確的,變量b則會(huì )發(fā)生錯誤。這是因為格式控制字符串中存在可打印字符“,”,所以在讀入數據時(shí),必須以“,”作為輸入數據的分隔符。
正確地讀入數據方式應為:1,2<回車(chē)>
又如:scanf(“a=%d,b=%f,c=%c”,&a,&b,&c);當輸入為:1,2,a時(shí),雖然采用了“,”分隔數據,但也會(huì )產(chǎn)生錯誤,因為在格式控制字符串中還有其他的可打印字符(如:“a=”,“b=”,“c=”等)。也就是說(shuō),這些字符作為輸入數據的分隔符,在scanf函數讀入數據時(shí)自動(dòng)去掉。因此正確地數據讀入方式應為:a=1,b=2.1,c=a<回車(chē)>
②空格
格式控制字符串中的空格可以分隔數據,在多個(gè)數據輸入過(guò)程中,如果沒(méi)有普通字符做數據的分隔符,則在數值數據輸入時(shí),可以用空格作為讀入數據的分隔符,但在字符數據輸入時(shí),空格則不能作為數據之間的分隔符,它將被作為有效數據處理。
③轉義字符
在以%c格式的數據讀入中,轉義字符被作為有效字符處理。而在格式控制字符串中的轉義字符具有輸入轉義字符所代表的控制代碼或特殊字符的功能。
請分析下面程序代碼:
main()
{
int a,b;
scanf("%d%d\n",&a,&b);
printf("a=%d,b=%d\n",a,b);
}
如果輸入1 2,會(huì )發(fā)生什么現象?應該怎樣讀入數據,才能得到執行結果?
提示 盡量不要在scanf()函數的格式控制字符串中出現普通字符,特別是轉義字符,它會(huì )增加讀入數據的難度并可能造成不可預料的錯誤。
printf函數的調用格式
printf函數是一個(gè)標準庫函數,能夠以精確的格式輸出程序運算的結果。printf函數的調用格式為:
printf(“格式控制字符串”,輸出項列表);
printf函數有兩項參數:用“”引起來(lái)的格式控制字符串和向標準設備輸出的數據。每次調用printf函數時(shí)都要包含描述輸出格式的 “格式控制字符串”。
格式字符串是由格式字符(包括:轉換說(shuō)明符、標志、域寬、精度)和普通字符組成,轉換說(shuō)明符和百分號(%)一起使用,用來(lái)說(shuō)明輸出數據的數據類(lèi)型、標志、長(cháng)度和精度。
輸出項列表可以是常量、變量和表達式,也可以沒(méi)有輸出項,這些輸出項必須與格式控制字符串在類(lèi)型和數量上完全對應,否則,結果將不可預測。當有多個(gè)輸出項時(shí),各個(gè)輸出項之間用逗號‘,’分隔。 提示
在開(kāi)始使用printf函數時(shí)最常犯的錯誤是忘記用雙引號將格式控制字符串括起來(lái)。
——摘自高克寧 雒興剛主編《高級語(yǔ)言程序設計》
printf函數的最簡(jiǎn)單的使用
當沒(méi)有輸出項時(shí),函數的參數只有“格式字符串”。函數完成的功能就是將“”中的字符串輸出(顯示在屏幕上)。
例1: 輸出字符串hello Cprogramming!
main()
{
printf(“hello Cprogramming!”);
}
可以在顯示器屏幕上看到輸出結果為:hello Cprogramming!
printf函數永遠不會(huì )自動(dòng)換行,如果想將hello Cprogram!分行輸出,輸出形式如下:
hello
Cprogram!
則需要引入轉移字符\n,或者多次調用printf函數分段輸出。程序如下:main()
{
printf(“hello\n Cprogram!”);
}
或:
main()
{
printf(“hello\n”);
printf(“Cprogram!”); }
其中:“\n”是一個(gè)轉移字符,是控制字符。它的作用是使計算機執行printf函數時(shí),指示從下一行的右邊開(kāi)始的換新一行輸出。所以顯示器上出現了兩行字符。如果在字符串中忘記了“\n”,那么輸出的結果就沒(méi)有換行(盡管可以多次調用printf函數)。例如下面的程序:
main()
{
printf(“hello”);
printf(“Cprogram!”);
}
輸出結果仍為:hello Cprogram!
轉義字符的含義參見(jiàn)下表。
轉義字符
意義
\n
換新行起始符
\r
回車(chē)(到本行起始)
\b
退格符
\f
換頁(yè)符
\t
橫向制表符
\v
縱向制表符
\\
反斜杠
\'
單引號
\"
雙引號
\?
問(wèn)號
\0
空字符(NULL)
\ddd
1到3為八進(jìn)制數所代表的字符
\xhh
1到2位十六進(jìn)制樹(shù)所代表的字符
轉義字符只能是用小寫(xiě)字母,每個(gè)轉移字符被看成是一個(gè)字符常量。如:‘\0’但是:用單引號‘’括起來(lái)的一個(gè)漢字如‘好’則不是字符常量;同樣用雙引號“”括起來(lái)的單個(gè)字符如“a” 也不是字符常量,它是字符串常量。
因為雙引號“”、單引號‘’、反斜杠\等在C語(yǔ)言中的特殊作用,如果要在字符串重新打印這些字符,則不能直接使用這些字符,而要使用轉義字符“\””、“\’”、“\\”等。
例如:輸出“hello Cprogram!”,程序應改為:
main()
{
printf(“\”hello Cprogram!\””);
}
提示
可以在printf()函數中適當的運用轉義字符,以增加輸出效果。但是要注意每個(gè)轉義字符的不同含義,不要弄混。
——摘自高克寧 雒興剛主編《高級語(yǔ)言程序設計》
格式化輸出在使用printf函數時(shí),當系統遇到輸出的轉換說(shuō)明符后,會(huì )自動(dòng)用后面對應的輸出項的值代替它的位置,然后輸出。格式控制字符串中的轉換字符應與輸出列表中的待輸出項之間應一一對應,這些轉換字符控制對應的輸出項以該格式輸出。數據類(lèi)型必須與格式符相匹配。
格式控制字符串的一般形式:
% [修飾符] 轉換說(shuō)明符
其中修飾符為可選項,包括標志修飾符、寬度修飾符、精度修飾符、長(cháng)度修飾符,用于確定輸出數據的寬度、精度、對齊方式等,用于產(chǎn)生更加規范、整齊、美觀(guān)的數據輸出形式,當沒(méi)有修飾符時(shí),以上各項按系統缺省值設定顯示。
1)轉換說(shuō)明符
轉換說(shuō)明符規定了對應輸出項的輸出格式,即將輸出的數據轉換為指定的格式輸出。該項不能省略。常用的轉換說(shuō)明符及其含義見(jiàn)表1。表1 轉換說(shuō)明符及其含義 轉換說(shuō)明符
意義
C
按字符型輸出
d或i
按十進(jìn)制整數輸出
u
按無(wú)符號十進(jìn)制整數輸出
f
按浮點(diǎn)型小數輸出
E或e
按指數形式(科學(xué)計數法)輸出
o
按八進(jìn)制整數輸出(不輸出前綴o)
X或x
按十六進(jìn)制整數輸出(不輸出前綴ox)
s
按字符串輸出
G或g
按e和f格式中輸出寬度較短的一種形式輸出
轉換說(shuō)明符要與%一起使用,不能省略%。上表中的字符只有放在%的后面才作為輸出的轉換說(shuō)明。
例如:
int max;
printf(“%d”,max);
表示變量max的值以十進(jìn)制整數形式輸出。
又如:
int d=15;
printf(“d=%d”,d);
在該格式控制字符串中,第1個(gè)d不是輸出格式字而是一個(gè)普通字符,需要按原字符形式輸出,第3個(gè)d是一個(gè)變量名,是輸出項,只有放在%后的第2個(gè)d才是轉換說(shuō)明符, 說(shuō)明變量d的值(15)以十進(jìn)制整數形式輸出。輸出格式是:d=15。
提示
printf()函數中的格式字中,除格式說(shuō)明符E、G、X外,其它格式說(shuō)明符必須小寫(xiě)。
例1:輸出格式控制符的使用。
main( )
{
int a1=+400,a2=-400;
float b=3.1415926,e=31415.26535898;
float g=3.140000;
char c='a';
double d=3.1415926535898;
printf("a1=%d\n",a1);
printf("a1=%o\n",a1);
printf("a1=%x\n",a1);
printf("a1=%u\n",a1);
printf("a2=%d\n",a2);
printf("a2=%u\n",a2);
printf("b=%f\n",b);
printf("e=%e\n",e);
printf("g=%g\n",g);
printf("d=%f\n",d);
printf("c=%c\n",c);
printf("s=%s\n", "Cprogram");
}
執行程序,輸出結果為:
a1=400
a1=620
a1=190
a1=400
a2=-400
a2=65136
b=3.141593
e=3.141593e+04
g=3.14
d=3.141593
c=a
s=Cprogram
從輸出結果可以看出:只有減號(-)才會(huì )被打印出來(lái),加號(+)是不打印的。?使用%u格式控制符打印正整數時(shí),該數不發(fā)生變化,但是打印負整數時(shí),該負整數將被轉換為無(wú)符號整數并打印出來(lái)。?缺省情況下,使用%f、%e、%E打印出來(lái)的值帶有6個(gè)小數位,如果小數位數不夠6位,則在最后添0補位。?單精度數一般有7位有效數位。使用%e和%E打印的帶有指數的值,在指數前打印出字母e或E,同時(shí)小數點(diǎn)左側的數字僅打印一位(科學(xué)計數法)。雙精度數可以用%f格式輸出,它的有效位一般為16位,6位小數位。 %g不打印輸出數據的小數部分尾部的0。
一個(gè)轉換說(shuō)明符是以%開(kāi)始,以表3-2中的字符結束。其中可以插入修飾符。
2)長(cháng)度修飾符
常用的長(cháng)度修飾符有兩種:l(長(cháng))表示按長(cháng)整型量輸出,h(短)表示按短整型量輸出??梢院洼敵鲛D換說(shuō)明符d、f、u等連用。其用法和含義見(jiàn)表2。
表2 長(cháng)度修飾符的意義
格式
意義
%ld
用于長(cháng)整型數據的輸出
%hd
用于短整型數據的輸出
%lf
用于雙精度型數據的輸出
例2:長(cháng)度修飾符的使用。
main()
{
long int a=1234567;
int b=12345;
double d=1234567.123456789;
printf("a=%ld\n",a);
printf("b=%hd\n",b);
printf("d=%lf\n",d);
}
執行程序,結果如下:
a=1234567
b=12345
d=1234567.123457
例3:讀入數據與輸出數據類(lèi)型的匹配。
main( )
{
int a;
printf(“enter a data:\n”);
scanf("%d",&a);
printf("%d\n",a);
}
程序運行結果:
enter a data:
100000000
-520036096
由于輸入數據的類(lèi)型為整型,讀入的數據本身已超出基本整型范圍,使計算結果發(fā)生錯誤,同時(shí),輸出函數的輸出格式字為長(cháng)整型,造成輸出結果與輸入數據不相符。因此應將程序修改如下:
main( )
{
long int a;
clrscr();
printf("enter a data:\n");
scanf("%ld",&a);
printf("%ld\n",a);
}
enter a data:
10000000l
10000000
提示
輸入長(cháng)整型數據時(shí),應在數據的后面加上字母‘l’或‘L’。
3)寬度修飾符和精度修飾符
寬度修飾符用來(lái)指定printf()函數輸出數據的占位寬度,用一個(gè)十進(jìn)制整數表示輸出數據的位數,插在百分號%與轉換說(shuō)明符之間,其作用是控制打印數據的寬度,也稱(chēng)為“域寬”。
也可以在prinf函數中指定輸出數據的精度。以一個(gè)小數點(diǎn)開(kāi)始,后緊跟著(zhù)一個(gè)十進(jìn)制整數表示精度,插在百分號%與轉換說(shuō)明符之間。對于不同數據類(lèi)型,精度的含義也不相同:在使用%d時(shí),精度表示最少要打印的數字的個(gè)數。在使用%f、%e、%E時(shí),精度是小數點(diǎn)后面顯示的數字個(gè)數。在使用%s時(shí),精度表示輸出的字符串中字符的個(gè)數。
提示
scanf不允許指定精度輸入。
寬度和精度也可以同時(shí)使用,其使用形式是:域寬.精度。
常用的寬度修飾符與精度修飾符說(shuō)明以及含義見(jiàn)表3。
表3 寬度修飾符與精度修飾符說(shuō)明
修飾符及說(shuō)明格式
意義
%md
以寬度m輸出整型數,不足m位數時(shí)左側補以空格。
%0md
以寬度m輸出整型數,不足m位數時(shí)左側補以0(零)。
%m.nf
以寬度m輸出實(shí)型數,小數位數為n位。
%ms
以寬度m輸出字符串,不足m位數時(shí)左側補以空格。
%m.ns
以寬度m輸出字符串左側的n個(gè)字符,不足m位數時(shí)左側補以空格。
例3:寬度修飾符和精度修飾符的使用。
main()
{
printf("%3d\n",1);
printf("%3d\n",10);
printf("%3d\n",100);
printf("%3d\n",1000);
printf("%0.3d\n",1);
printf("%0.3d\n",10) ;
printf("%0.3d\n",100);
printf("%0.3d\n",1000);
printf("%.3d\n",1);
printf("%.3d\n",10);
printf("%.3d\n",100);
printf("%.3d\n",1000);
printf("%7.2f\n",123.4567);
printf("%5.2f\n",123.4567);
printf("%2.7f\n",123.4567);
printf("%5s\n","Cprogram");
printf("%7.3s\n","Cprogram");
printf("%2.6s\n","Cprogram");
}
執行程序,結果如下:
1
10
100
1000
001
010
100
1000
001
010
100
1000
123.46
123.46
123.4567000
Cprogram
Cpr
Cprogr
分析程序的結果,可以看出:
如果被打印的實(shí)際數據的寬度小于指定的寬度,則缺省下在寬度內為右對齊。左補空格或補0。直到總的數據個(gè)數滿(mǎn)足寬度的要求。
當指定的輸出數據寬度小于數據的實(shí)際寬度時(shí),則按實(shí)際數據的位數輸出打?。▽挾茸詣?dòng)增加);對于整數而言,按該數的實(shí)際寬度輸出;對于浮點(diǎn)數,按實(shí)際位數輸出,但如果制定了浮點(diǎn)數的精度,則相應的小數位按精度的位數四舍五入;對于字符串,按實(shí)際串長(cháng)度輸出。
通常情況下,精度用于描述浮點(diǎn)數的小數位數,但是,當采用精度描述整數或字符串時(shí),如果被打印的整數數據包含的數字個(gè)數小于指定的精度,就在被打印數據的前面加0,直到總的數字個(gè)數等于該精度為止。而對于被打印的字符串,則精度確定該字符串左側的字符個(gè)數,這些字符輸出在指定域寬的右側。不足域寬位數時(shí)左側補以空格。
在實(shí)際程序應用中,還有一種更為靈活的寬度和精度的控制方法,用整型常量或整型變量的值作為輸出數據的域寬和精度。方法是以“*”取代域寬修飾符和精度修飾符放在%的后面,以計算出來(lái)的整數表達式的值作為寬度和精度。
例如:
float a=123.45;
printf(“%*.*f”,6,1,a);
此處6為輸出寬度,1為輸出精度,輸出結果為: 123.5,右對齊。
提示
沒(méi)有為要打印的數據提供足夠大的寬度,使得其他被打印的數據發(fā)生位置偏移,從而產(chǎn)生令人費解的輸出格式。
4)標志修飾符
在printf 函數中,可以使用標志修飾符控制輸出格式。常見(jiàn)的標志修飾符見(jiàn)表4。
表4 標志修飾符及其作用
標志修飾符
意義
-
“左對齊”方式:輸出數據左對齊,右側補空格。缺省時(shí)輸出數據則為右對齊,左補格。
+
輸出數據為正時(shí),在數據之前顯示一個(gè)+號,為負時(shí),在數據之前顯示一個(gè)-號。
#
輸出數據為八進(jìn)制時(shí)加前綴0,為十六進(jìn)制時(shí)前綴0x。
空格
輸出數據為正值時(shí),在數據之前打印空格,為負時(shí),數據之前顯示一個(gè)-號。
例4:標志修飾符的使用。
main()
{
printf("%10d\n",123);
printf("%-10d\n",123);
printf("%10.2f\n",123.45678);
printf("%-10.2f\n",123.45678);
printf("%10s\n","Cprogram");
printf("%-10s\n","Cprogram") ;
printf("\n");
printf("%+5d\n",12345);
printf("%+5d\n",-12345);
printf("% 5d\n",12345);
printf("% 5d\n",-12345);
printf("\n");
printf("%#o\n",100);
printf("%o\n",100);
printf("%#x\n",100);
printf("%x\n",100);
}
執行程序,結果如下:
123
123
123.46
123.46
Cprogram
Cprogram
+12345
-12345
12345
-12345
0144
144
0x64
64
提示
數據輸出時(shí),注意輸出格式基對齊方式的統一,否則造成輸出數據難以讀懂。
例如:
int x=123,y=456;
printf(“%3d%-3d”,x,y);
其結果是:123456
5)普通字符
格式控制字符串中可以包含大量的可打印字符和轉義字符,可打印字符主要是一些說(shuō)明字符,這些字符將按原書(shū)寫(xiě)樣式顯示在屏幕上,如果有漢字系統支持,也可以輸出漢字。轉義字符是不可打印字符,用以控制產(chǎn)生特殊的輸出效果。
例如:
int a=123,b=12345;
printf("a=%d,",a);
printf("b=%d\n",b);
其輸出結果為:a=123,b=12345
在第一個(gè)printf函數的格式控制字符串中,’a’、’=’和’,’都是普通字符,可以打印出來(lái)。第二個(gè)printf函數的格式控制字符串中的’b’和’=’也是可打印字符,但\n時(shí)是轉義字符,不能夠打印出來(lái),表示要換行輸出。將該程序改動(dòng)一下,其輸出形式也將發(fā)生改變。
int a=123,b=12345;
printf("a=%d\n",a);
printf("b=%d\n",b);
輸出形式為:
a=123
b=12345
在第一個(gè)printf函數的格式控制字符串中,a和=是普通字符,打印出來(lái)。’\n’雖然沒(méi)有打印出來(lái),但是它指示第二個(gè)printf函數換到下一行左側輸出。
——摘自高克寧 雒興剛主編《高級語(yǔ)言程序設計》
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C語(yǔ)言scanf()函數:格式化輸入函數(2014-11-11)
C語(yǔ)言scanf函數詳細解釋
c語(yǔ)言設計初學(xué)者的十八顆“地雷”
C語(yǔ)言格式修飾符洋解
C 之數據輸入輸出
C語(yǔ)言格式輸入函數scanf()詳解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久