c語言中d中間加個數字在printf和scanf中有什麼不同

2021-03-22 01:14:08 字數 6920 閱讀 5497

1樓:金色潛鳥

printf 是 輸出語句, %4d 表示輸出的場寬為4位,%1d 表示輸出的場寬為1位, 但另有附加規定:當所給場寬度不足時,按實際需要佔位輸出。所以 輸出 10 ,給 %1d 仍將 輸出 10, 不會只輸出 1,不輸出0。

scanf 是輸入語句,%4d 表示 讀入的數 為 4位整數,超出4位 只讀4位,不足4位則按實際位數 讀入, %1d 表示 讀入的數 為 1位整數,超出1位 只讀1位。

例如: scanf("%1d%4d",&x,&y);

拍入 987654321回車

x 讀入9,y讀入 8765, 餘下的 4321 留在輸入緩衝區 供 後面的 輸入語句使用。

2樓:皚虎

精確度。要輸入輸出多少位。不夠的補零

c語言中 %d之間加了個數字什麼作用?

3樓:追憶小土豆

printf 是 輸出語句, %4d 表示輸出的場寬為4位,%1d 表示輸出的場寬為1位, 但另有附加規定:當所給場寬度不足時,按實際需要佔位輸出。所以 輸出 10 ,給 %1d 仍將 輸出 10, 不會只輸出 1,不輸出0。

scanf 是輸入語句,%4d 表示 讀入的數 為 4位整數,超出4位 只讀4位,不足4位則按實際位數 讀入, %1d 表示 讀入的數 為 1位整數,超出1位 只讀1位。

例如: scanf("%1d%4d",&x,&y);

拍入 987654321回車

x 讀入9,y讀入 8765, 餘下的 4321 留在輸入緩衝區 供 後面的 輸入語句使用。

4樓:匿名使用者

表示輸出或者輸入時 輸出的寬度

如%4d= x, 輸出的x在第四個字元···前面有3個空格 4是正數 所以從左到右依次輸入····如果是-4 則是%-4d=4 ,後面3個空格···謝謝採納····

%d 是個佔位符 前面加數字 相當於修飾%d 的寬度是多大舉個例子

main()

如果不加6的話

輸出結果:13。從冒號到13有0個空格

如果加了6

輸出結果: 13,從冒號到13有6個空格懂了嗎?

5樓:匿名使用者

加入常數 如%nd

表示輸出佔n位寬度

不足n位 輸出左側補空格

超過n位,按實際寬度輸出

比如printf("%4d", 10); 會輸出兩個空格加10而printf("%4d",12345); 則直接輸出12345 不補空格,也不會截斷。

6樓:匿名使用者

%6d表示輸出6位,如果資料不足六位就在左端補0,例如000333,超過六位就按實際資料輸出

7樓:匿名使用者

謝謝 我也是初學者 謝謝幫助

在c語言中,%d中間加個數字是什麼意思?

8樓:追憶小土豆

printf 是 輸出語句, %4d 表示輸出的場寬為4位,%1d 表示輸出的場寬為1位, 但另有附加規定:當所給場寬度不足時,按實際需要佔位輸出。所以 輸出 10 ,給 %1d 仍將 輸出 10, 不會只輸出 1,不輸出0。

scanf 是輸入語句,%4d 表示 讀入的數 為 4位整數,超出4位 只讀4位,不足4位則按實際位數 讀入, %1d 表示 讀入的數 為 1位整數,超出1位 只讀1位。

例如: scanf("%1d%4d",&x,&y);

拍入 987654321回車

x 讀入9,y讀入 8765, 餘下的 4321 留在輸入緩衝區 供 後面的 輸入語句使用。

c語言 scanf("%d",&a) 和 printf("%d",&a) 有什麼不同 它們各自的含義是什麼?

9樓:匿名使用者

scanf("%d",&a),是輸入一個整形數值給變數a,

printf("%d",&a),是列印a的地址。

如果去掉&,變成printf("%d",a),就是列印整形變數a的值了。輸出時一般是不加&的

10樓:匿名使用者

scanf(「%d」,&a)是輸入一個整形變數;

printf(「%d」,&a)是輸出這個整型變數的地址。

11樓:聽海的聲音

printf不要取地址符&

12樓:匿名使用者

80445766

回答正確

c語言中scanf和printf都是輸出函式,兩者有什麼區別呢

13樓:匿名使用者

兩者完全不同,scanf是輸入函

數,printf是輸出函式,所以會經常同時出現。兩者也沒有可比性,需要弄清他們的概念。

1.scanf()是c語言中的一個輸入函式。函式 scanf() 是從標準輸入流stdio (標準輸入裝置,一般指向鍵盤)中讀內容的通用子程式,可以說明的格式讀入多個字元,並儲存在對應地址的變數中。

比如:scanf("%d %d",&a,&b);

函式返回值為int型。如果a和b都被成功讀入,那麼scanf的返回值就是2;

如果只有a被成功讀入,返回值為1;

如果a和b都未被成功讀入,返回值為0;

如果遇到錯誤或遇到end of file,返回值為eof。end of file為ctrl+z 或者ctrl+d。

2.printf()函式是格式化輸出函式, 它是c語言中產生格式化輸出的函式(在 stdio.h 中定義)。

用於向終端(顯示器、控制檯等)輸出字元。格式控制由要輸出的文字和資料格式說明組成。

printf 函式的一般形式為:

int printf(const char *format, [argument]);

format 引數是包含三種物件型別的一個字串:

(1)無格式字元複製到輸出流;

(2)轉換規範,每個規範導致在值引數列表中檢索 1 個或更多個項;

(3)轉義序列。

[argument]包含需要輸出的資料,可以是常量(字元常量、數字常量、字串常量),變數,以及運算式。此處的資料應當與前面的format中的格式控制符一一對應(如果不對應會產生錯誤)。

例子:#include

int main()

14樓:何度千尋

在使用scanf和printf函式時要加上#include 。其中scanf()是格式輸入函式,printf()函式是格式化輸出函式。

其通常的用法如下:

#include

int main()

15樓:匿名使用者

一、scanf函式的一般形式

scanf函式是一個標準庫函式,它的函式原型在標頭檔案「stdio.h」中,與printf函式相同,c語言也允許在使用scanf函式之前不必包含stdio.h檔案。

scanf函式的一般形式為: scanf(「格式控制字串」,地址表列); 其中,格式控制字串的作用與printf函式相同,但不能顯示非格式字串, 也就是不能顯示提示字串。地址表列中給出各變數的地址。

地址是由地址運算子「&」後跟變數名組成的。例如,&a,&b分別表示變數a和變數b 的地址。這個地址就是編譯系統在記憶體中給a,b變數分配的地址。

在c語言中,使用了地址這個概念,這是與其它語言不同的。 應該把變數的值和變數的地址這兩個不同的概念區別開來。變數的地址是c編譯系統分配的,使用者不必關心具體的地址是多少。

變數的地址和變數值的關係如下: &a--->a567 a為變數名,567是變數的值,&a是變數a的地址。在賦值表示式中給變數賦值,如:

a=567 在賦值號左邊是變數名,不能寫地址,而scanf函式在本質上也是給變數賦值,但要求寫變數的地址,如&a。 這兩者在形式上是不同的。&是一個取地址運算子,&a是一個表示式,其功能是求變數的地址。

void main()

注意&的用法!

在本例中,由於scanf函式本身不能顯示提示串,故先用printf語句在螢幕上輸出提示,請使用者輸入a、b、c的值。執行scanf語句,則退出tc螢幕進入使用者螢幕等待使用者輸入。使用者輸入7、8、9後按下回車鍵,此時,系統又將返回tc螢幕。

在scanf語句的格式串中由於沒有非格式字元在「%d%d%d」之間作輸入時的間隔, 因此在輸入時要用一個以上的空格或回車鍵作為每兩個輸入數之間的間隔。

如: 7 8 9或 7

89格式字串

格式字串的一般形式為: %[*][輸入資料寬度][長度]型別 其中有方括號的項為任選項。各項的意義如下:

1.型別

表示輸入資料的型別,其格式符和意義下表所示。

格式 字元意義

d 輸入十進位制整數

o 輸入八進位制整數

x 輸入十六進位制整數

u 輸入無符號十進位制整數

f或e 輸入實型數(用小數形式或指數形式)

c 輸入單個字元

s 輸入字串

2.「*」符

用以表示該輸入項讀入後不賦予相應的變數,即跳過該輸入值。 如 scanf("%d %*d %d",&a,&b);當輸入為:1 2 3 時,把1賦予a,2被跳過,3賦予b。

3.寬度

用十進位制整數指定輸入的寬度(即字元數)。例如: scanf("%5d",&a);

輸入:12345678

只把12345賦予變數a,其餘部分被截去。又如: scanf("%4d%4d",&a,&b);

輸入:12345678將把1234賦予a,而把5678賦予b。

4.長度

長度格式符為l和h,l表示輸入長整型資料(如%ld) 和雙精度浮點數(如%lf)。h表示輸入短整型資料。

使用scanf函式還必須注意以下幾點:

a. scanf函式中沒有精度控制,如: scanf("%5.2f",&a); 是非法的。不能企圖用此語句輸入小數為2位的實數。

b. scanf中要求給出變數地址,如給出變數名則會出錯。如 scanf("%d",a);是非法的,應改為s**af("%d",&a);才是合法的。

c. 在輸入多個數值資料時,若格式控制串中沒有非格式字元作輸入資料之間的間隔則可用空格,tab或回車作間隔。c編譯在碰到空格,tab,回車或非法資料(如對「%d」輸入「12a」時,a即為非法資料)時即認為該資料結束。

d. 在輸入字元資料時,若格式控制串中無非格式字元,則認為所有輸入的字元均為有效字元。例如:

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

輸入為:

d e f

則把'd'賦予a, 'f'賦予b,'e'賦予c。只有當輸入為:

def時,才能把'd'賦於a,'e'賦予b,'f'賦予c。 如果在格式控制中加入空格作為間隔,如 scanf ("%c %c %c",&a,&b,&c);則輸入時各資料之間可加空格。

void main()

scanf("'c14f14%c%c",&a,&b);

printf("%c%c ",a,b);

由於scanf函式"%c%c"中沒有空格,輸入m n,結果輸出只有m。

而輸入改為mn時則可輸出mn兩字元,見下面的輸入運**況:

input character a,b

mnmn

void main()

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

本例表示scanf格式控制串"%c %c"之間有空格時, 輸入的資料之間可以有空格間隔。e. 如果格式控制串中有非格式字元則輸入時也要輸入該非格式字元。

例如:scanf("%d,%d,%d",&a,&b,&c); 其中用非格式符「 , 」作間隔符,故輸入時應為: 5,6,7

又如

則輸入應為

a=5,b=6,c=7g. 如輸入的資料與輸出的型別不一致時,雖然編譯能夠通過,但結果將不正確。

void main()

由於輸入資料型別為整型, 而輸出語句的格式串中說明為長整型,因此輸出結果和輸入資料不符。如改動程式如下:

void main()

執行結果為:

input a long integer

1234567890

1234567890 當輸入資料改為長整型後,輸入輸出資料相等。

鍵盤輸入函式

getchar函式getchar函式的功能是從鍵盤上輸入一個字元。其一般形式為: getchar(); 通常把輸入的字元賦予一個字元變數,構成賦值語句,如:

char c;

c=getchar();#include

void main()

使用getchar函式還應注意幾個問題:

1.getchar函式只能接受單個字元,輸入數字也按字元處理。輸入多於一個字元時,只接收第一個字元。

2.使用本函式前必須包含檔案「stdio.h」。

3.在tc螢幕下執行含本函式程式時,將退出tc 螢幕進入使用者螢幕等待使用者輸入。輸入完畢再返回tc螢幕。

void main()

輸入三個小寫字母

輸出其ascii碼和對應的大寫字母。

void main()

輸出各種資料型別的位元組長度。

二、printf printf的格式控制中,寬度是指輸出的資料要佔多少格,並不是說資料本身是多少格,比如我完全可以設定單獨的一個數字1佔20格.當然,設定的寬度如果比要輸出的數的實際寬度小的話,就失去作用了.比如12345,你設定寬度為4的話,它照樣輸出12345.

再比如這裡-3.2e+03的寬度是8,已經超過6了.這種情況,資料會原樣輸出,不管寬度.

至於是-3.2還是-3.22,我在自己電腦上執行結果是3.

22,而且根據我看過的書上的解釋,也應該是3.22.只能認為tc 2.

0的作者沒能很好地理解標準了,因此在tc 3.0的時候修正了這個錯誤.

最後,根據我所知道的,%e是以科學計數法形式輸出,而科學計數法規定了數的標準形式是整數位只有1位.所以你想控制數字位數的想法是無法實現的.

c語言中,printf和sum是什麼意思

printf 輸出 sum 取所有數的和 c語言中 printf n 是什麼意思 換行。printf n 表示輸出換行符,n 是個轉義字元,系統識別到轉義字元時版會自動換行。視窗是不會 權顯示 n的,會直接換到下一行。在不同的語言中,換行符的 也有所不同。在前端網頁開發中是,c語言中是 n c 中是...

c語言中和分別是什麼意思,c語言中d和d分別是什麼意思?

是一個語句,判斷一個表示式的真假來執行兩條 比如int a 9,b 8 a b?a 8 b 9 就是這句 相當於if語句吧,問號前面的表示式為真的時候執行a 8,否則b 9 明白了吧。c語言中 d和 d分別是什麼意思?這幾個都是格式字元,在輸出不同資料時要用不同的的格式字元。1 printf d 會...

C語言05d和5d有什麼不同啊,C語言中5d和有什麼區別

nd 輸出的整型寬度至少為n位,右對齊,5d即寬度至少為5位,位數大於5則輸出實際位數 0nd 用得比較多,表示輸出的整型寬度至少為n位,不足n位用0填充printf 05d 1 輸出 00001printf 5d 1 輸出 1 為空格 05d是不足五位的前面補0,如23,輸出為00023,d是補空...