c語言中如scanfda 為什麼要加而pr

時間 2022-04-26 18:51:54

1樓:匿名使用者

「scanf("%d",&a);」是輸入語句,也就是從終端鍵盤輸入數值給變數a,scanf中用到是位址,&a表示的就是變數a的位址,printf中只要指明變數名就行了,所以printf的變數名前不用加&符號,scanf與printf中的%d,%f表示的是操作的變數是整型的和浮點型的,還有%c,%s分別表示操作的變數是字元型和字串型別

2樓:倒霉熊

c語言中的函式的引數傳遞都是值傳遞,形參的改變並不能改變實參的值。

若想改變 實參的值,可以採用位址傳遞。

scanf函式將使用者的輸入的數值儲存到實參a中,所以需要傳遞a的位址。

printf函式是將a+b輸出到螢幕上,並不需要改變a+b的值,所以無需傳遞位址。

3樓:天堂妹兒

這個符號"&",是取位址運算子,由於scanf是輸入函式,所以在輸入時,一定要告訴計算機這個東西往哪儲存,所以就要把程式設計師想儲存的位址先取出來,然後在往這個位址裡輸入內容。而printf是標準輸出函式,就是在顯示器上把要顯示的東西給顯示出來,所以都是在顯示器上顯示,不用什麼取位址符號。%f表示浮點型,%d表示整型。

4樓:喬德爭

建議你多了解c語言的輸入輸出格式,看了你就什麼都知道了

scanf("%d%d",&a,&b)與scanf("%d,%d",&a,&b)的區別!!

5樓:園林植物手冊

1、scanf("%d%d",&a,&b)輸入的兩個資料用空格,tab或者回車區分開。

2、scanf("%d,%d",&a,&b) 輸入的兩個資料用逗號區分開。

3、scanf函式功能是從外設讀取資料並賦值給變數,%d代表接收乙個整形數,&a代表變數a的記憶體位址,也就是說把讀取的第乙個整形數賦值給變數a。

4、scanf函式稱為格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指定的變數之中,其關鍵字最末乙個字母f即為「格式」(format)之意。

使用scanf函式常見的問題

1、在高版本的 visual studio 編譯器中,scanf 被認為是不安全的,被棄用,應當使用scanf_s代替 scanf。

2、對於字串陣列或字串指標變數,由於陣列名可以轉換為陣列和指標變數名本身就是位址,因此使用scanf()函式時,不需要在它們前面加上"&"操作符。

3、 可以在格式化字串中的"%"各格式化規定符之間加入乙個整數,表示任何讀操作中的最大位數。

4、 scanf函式中沒有類似printf的精度控制。

如: scanf("%5.2f",&a); 是非法的。不能企圖用此語句輸入小數為2位的實數。

5、scanf中要求給出變數位址,如給出變數名則會出錯

如 scanf("%d",a);是非法的,應改為scanf("%d",&a);才是合法的。

6、 在輸入多個數值資料時,若格式控制串中沒有非格式字元作輸入資料之間的間隔,則可用空格,tab或回車作間隔。

c編譯在碰到空格,tab,回車或非法資料(如對「%d」輸入「12a」時,a即為非法資料)時即認為該資料結束。

7、 在輸入字元資料(%c)時,若格式控制串中無非格式字元,則認為所有輸入的字元均為有效字元。

6樓:匿名使用者

關鍵就是輸入的時候是以什麼來區分你的輸入的2個數的%d%d就是以空格,tab或enter區分,你在螢幕輸入的時候要輸入2 3

而%d,%d是以,來區分的,你在螢幕上輸入數字的時候就要輸入2,3不存在scanf("%d","%d",&a,&b)?

7樓:匿名使用者

一樓的回答太詳盡了 我都不好意思開口了

scanf("%d 和%d 之間不能用逗號隔開,否則編譯時會出錯; %d和%d 之間可以用空格隔開 或是什麼也不要 %d%d 直接相連也行

8樓:匿名使用者

scanf()括號中引號內的內容必須輸入,你第二個scanf()的引號裡多了乙個逗號,在程式執行時輸入資料必須也輸入這個逗號,否則會出錯。

9樓:匿名使用者

第乙個在輸入的時候中間可以是隨便的間隔符,如空格,回車都可以。但是第二種就只能輸入逗號換行。只有這樣才能識別

10樓:匿名使用者

一樓的回答太詳盡了 我都不好意思開口了

11樓:子夜清風

兩者的區別在於在編譯是前者用空格或tab分開,後者用都好分開兩數!!

至於最後乙個問題好像沒見過!!

12樓:匿名使用者

前者輸入時用空格或tab分開,後者用逗號分開輸入

13樓:噶話噶

三峽大壩蓄水後,遊人泛舟神女的石榴裙下,仍需仰頭眺望,才能欣賞到神女的綽約風姿。

c語言中scanf("%d",a)和scanf(%d",&a)在printf("%d",a)中到底有什麼區別

14樓:掃帚

那兩個回答對scanf的解說也太迷了,scanf後半部分寫的應該是乙個指標(位址)

如果a是乙個int變數,a = 1,儲存在記憶體的1234 5678h處,scanf(%d",&a)是正確寫法,表示將輸入讀到變數a所在的位址處,即記憶體的1234 5678h處

而在執行時scanf("%d",a)會發生錯誤,因為將輸入讀到了記憶體的0000 0001h處

15樓:隨偉春芳歇

scanf(%d",&a) 就是讀取整型變數a在記憶體中的位址 。

scanf("%d",a)就是讀取整型變數a的值。

printf("%d",a) 就是輸出整型a的值。

在c語言中,&是取位址運算子,&a表示獲取a在記憶體中的位址。%d 格式化輸出整數。scanf() 函式用於從標準輸入(鍵盤)讀取並格式化, printf() 函式傳送格式化輸出到標準輸出(螢幕)。

在c語言中,%f表示 格式化輸出浮點型資料。

例如:#include

int main()

16樓:我是不是師兄

&是取位址的意思 &a 是取出變數a的位址scanf(%d",&a) 就是讀取1個數字 寫入a的位址scanf("%d",a) 是讀取1個數字 寫入位址a 這個a如果是100 就寫到位址100 如果是200 就寫到位址200 顯然 這很危險 萬一a的儲存的值剛剛好是一些指令的位址什麼的 會寫到這個位址修改指令 就執行不下去了 出大錯

printf("%d",a) 就沒什麼了 把變數a的儲存的值輸出然後 &是取位址 所以你可以

printf("%d",&a) 這樣是輸出a的位址

17樓:燒餅頭

scanf是輸入,要在變數前加上&。printf是輸出,不用加&

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

18樓:匿名使用者

兩者完全不同,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()

19樓:何度千尋

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

其通常的用法如下:

#include

int main()

20樓:匿名使用者

scanf是格式化輸入。不是輸出。

21樓:懷緯疏雅靜

scanf是輸入函式

printf是輸出函式

#include 為什麼結果總是0呢

22樓:沉默的呆呆賊

#include

main()

因為定義和輸出的a,b都是整形。輸出結果時精確到個位,將小數部分截去,僅保留整數部分。

比如2/3約等於0.667輸出時只取小數點前,所以輸出為0。

23樓:哥們兒會_臭臭

對於a/b

應為是整型除以整型

又是%d輸出

所以結果只保留整數部分

也就是說當a的絕對值

printf("%f",1.0*a/b);

24樓:匿名使用者

你輸入的時候把a的值輸得比b的值大再試試

25樓:風雲雨之殤

int是整形,只能用整數,小數,分數都不行

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

26樓:匿名使用者

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

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

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

27樓:匿名使用者

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

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

28樓:聽海的聲音

printf不要取位址符&

29樓:匿名使用者

80445766

回答正確

c語言scanf問題 int a,b;當scanf("%d %d",&a,&b);時 輸入123a 用printf輸出a b時,會顯

30樓:匿名使用者

a,b使用前沒有初始化,是乙個不確定的值,輸入123a後,b沒有被賦值,所以輸出這個隨機值

31樓:

因為在%d控制下,當輸入不是0~9這10個字元時,就認為前面的輸入結束,就將已輸入的數字賦給對應的變數,而第二個變數根本就沒有得到任何值,那個「隨機數字」實質是記憶體裡的機器垃圾。很好驗證:宣告乙個int型變數x,寫成x=scanf("%d %d",&a,&b);,用printf輸出x,當正常輸入是應該是2,像123a這樣輸入時是1。

說明正常輸入時scanf成功接收了2個數,而123a這樣輸入時只成功接收了1個數……

32樓:風若遠去何人留

%d只能接受合法整數.

輸入時, 123被用來賦值a, a=123賦值b的時候,發現字母是a, 不是合法數值,所以退出scanfb沒有被賦值, 就還是初始值.

而int a,b; 區域性變數沒有初始化時,值隨機.

33樓:匿名使用者

因為數字變數b未初始化~

c語言程式分析題

34樓:匿名使用者

執行格式化輸入函式:scanf()。原型: int scanf(char *format[,argument,...]);

scanf()函式是通用終端格式化輸入函式,專

它從標準輸屬入裝置(鍵盤) 讀取輸入的資訊。可以讀入任何固有型別的資料並自動把數值變換成適當的機內格式。

scanf()的格式控制串可以使用非空白字元,但在輸入時必須輸入這些字元。

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

輸入: 3,4 ↙(逗號與"%d,%d"中的逗號對應)

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

輸入: a=3,b=4 ↙("a=","b=",逗號與"%d,%d"中的"a=","b="及逗號對應)

c語言如何取陣列元素個數,請問在C語言中如何獲取乙個陣列裡存在多少個元素?

1 c語言中,定義陣列後可以用sizeof命令獲得陣列的長度 即可容納元素個數 但是通過傳遞陣列名引數到子函式中,以獲得陣列長度是不可行的,因為在子函式當中,陣列名會退化為乙個指標。2 例如 int data 4 length length sizeof data sizeof data 0 陣列佔...

messagebox是c語言中的函式嗎如何用

準確來說是系統api函式原型是int messagebox hwnd hwnd,lpctstr lptext,lpctstr lpcaption,uint utype 比如寫成 include int main 執行截圖就是 messagebox 注意區分大小寫。它的功能是彈出乙個標準的window...

C語言中位址為什麼不能相加,C語言指標變數為什麼不能相加

實體地址 有效位址 偏移位址 並不是兩個數簡單的相加減 指標變數是有加減運算的,但是要注意以下幾點 1.指標變數中存放的是位址值,也就是乙個數字位址,例如某指標變數中的值是0x20000000,表示表示此指標變數存放的是記憶體中位於0x20000000地方的記憶體位址。指標變數可以加減,但是只能與整...

c語言中pulu都有什麼用處,C語言中 p, u, lu都有什麼用處

這些都是輸入輸出的格式控制,比如 d表示後面的輸出型別為有符號的10進製整形,u表示無符號10進製整型,lu表示輸出無符號長整型整數 c語言 格式控制字元 p是pointer 指標縮寫 u是unsigned 無符號的 縮寫無正負號 1.p會把值作為乙個位址輸出。2.u對int型和unsigned i...

c語言中rta各什麼意思,c語言中 t r n 和空格都是什麼意思啊?

r 回車 cr t 水平製表 ht a 響鈴 bel 所有的ascii碼都可以用 加數字 一般是8進製數字 來表示。而c中定義了一些字母前加 來表示常見的那些不能顯示的ascii字元,如 0,t,n等,就稱為轉義字元,因為後面的字元,都不是它本來的ascii字元意思了。所有轉義字元及意義 r意思是回...