關於C語言scanf的問題(新手自學有點不懂)

2022-12-28 03:15:53 字數 3588 閱讀 9564

1樓:

scanf("%d ",&m); //「%d」後面你多加了一個空格。

if(m > max)

max = m;

我覺得可能還有其他的問題,你這個程式只能輸出正數的最大值,如果輸入的是負數,就會輸出0,這是因為,你一開始為max賦了0。建議你修改一下,如果是刻意做成這樣的就算了。

2樓:使用者

scanf("%d ",&m);

這句你加了幾個空格,去除空格就正常了。變成:

scanf("%d",&m);

為什麼這樣?涉及的問題就比較多了,直接去看百科吧:

剛入門新手關於c語言scanf問題。這個幾個程式都有下面幾個問題。

自學c語言,新手,想問點不理解的問題

3樓:

這就是c語言的語法。它的scanf就是這樣規定的。

&a1,固然是取地址。但是在scanf這,它就是解釋成為取a1的地址,然後改變這個地址裡面的值。

比如地址是1234, 1234這個地址裡面的值是11.

&a1, 不會改變它的地址 。只會改變地址裡面的內容。也就是11.

這都是一些規定。和它較勁幹什麼。

4樓:匿名使用者

#include

int main()

scanf的變參部分必須為指標

5樓:

scanf("%d",&a1);這句話是把從鍵盤上獲取的%d值放在&a1這個地址上。 像地址是容器,你往裡面放a1的值

scanf("%d",a)你覺得是什麼意思,還不如直接 int a1 = 11呢

6樓:工人甲戊

c語言對變數進行賦值的時候,預設是根據變數地址的指標進行賦值,所以在scanf的時候會加個「&」。

c語言新手scanf問題

7樓:匿名使用者

是scanf("%f\n",&fsalary)和scanf("%d\n",&inum)兩條語句格式化輸入中「\n」造成的。

預備知識:(1)scanf()函式接收輸入資料時,遇回車鍵,開始從鍵盤緩衝區讀輸入字元(這個回車符不被讀入,並留在緩衝區中),並按格式化輸入指定條件,賦給相應變數;讀入字元時,有非空字元(空字元如:空格、「回車」、「跳格」)開始資料項輸入,遇空字元結束一個資料項輸入;(2)當格式中包含字元,但在輸入時必須輸入這些字元;

!!!!這就導致,當使用者在格式輸入中指定了\n時,直接輸入回車並不起作用,因為它會被當成空白被跳過。只有當回車後面有有效字元,這個\n才會被匹配!!!!

當執行到scanf("%f\n",&fsalary)時,程式等待輸入一個浮點數 另加一個換行符,當你輸入800時,導致 scanf掃描,800賦給fsalary,同時鍵盤輸入緩衝區中還有符;雖然scanf語句還在等使用者輸入 ,但是緩衝區中沒有非空白字元,不能被讀出。

當再次輸入800 時,緩衝區中有 800 這些字元,scanf再次啟動掃描,讀出第一個 與scanf("%f\n",&fsalary)中的\n匹配,scanf("%f\n",&fsalary)執行結束,程式提示輸入,並執行scanf("%d\n",&inum),因為緩衝區中有非空白字元和回車符,scanf("%d\n",&inum)讀出800賦給inum(輸入緩衝區中剩下),並等使用者再輸入回車符;

再次輸入100時,scanf再次啟動掃描, 緩衝區中有100 ,第一個被讀出,與scanf("%d\n",&inum)中的\n匹配,scanf執行結束,注意,這時

fsalary=800,inum=800,800 + 800*1.5 = 2000ok?

8樓:笑白打醬油

請仔細閱讀課本,書上肯定又講

scanf("%d",&inum); 和scanf("%d\n",&inum);這兩個到底什麼區別 。

如果不理解:

scanf("%d%d",&inum,&inum); 和scanf("%d %d",&inum,&inum); 這兩個到底什麼區別 。

9樓:月光星屑

把scanf中的\n去掉

我是c語言初學者,有些問題不懂。。

10樓:俏姐兒

同意mars_room_10的回答。

程式是從上往下執行的,你的兩個if是並列關係。

輸入5和10之後,滿足第一個if(a>b),所以會出現「10 is bigger than 5」

判斷完之後它就會進入第二個if,很明顯a==b是不成立的,所以就會執行else裡的**,出現「5 is bigger than 10」。

在第二個if 前面加個 else,把兩個if變成巢狀關係,只有當不滿足a>b的時候,才會去判斷a==b滿不滿足。

11樓:

if(a>b) printf("%d is bigger than %d\n",a,b);

else if(a==b) printf("%d is equal to %d\n",a,b); // 這裡有問題,這是改正後的

else printf("%d is bigger than %d\n",b,a);

關於c語言中scanf用法的疑問

12樓:匿名使用者

scanf("%d %d",&n,&m);你在輸入的時候輸入10,然後空格 50 ,n就是10,m就是50

相同的,scanf(「%d,%d」,&n,&m);輸入的時候輸入10,50,n就是10 ,m就是50.

你也可以輸入很多 比如scanf(「%d:%d」,&d,&m);都是可以的。

13樓:匿名使用者

scanf("%d%d",&a,&b);  // <-- 輸入 10 50 即可

c語言關於scanf函式問題

14樓:匿名使用者

第一個問題,因為你的scanf函式使用了域寬來指定讀入的格式。所謂域寬,就是說讀入的時候把某個寬度內的值付給某變數。那麼。

你第一個引數讀入規則是%3c,意思是設定域寬為3,讀入一個char型資料。你輸入的是abcde。那麼前面的abc將作為第一個引數給一個char型資料。

而char型資料只需要一個字元,所以a就給了c1,其間的bc被忽略。後面同理了。第二個問題,樓上大致說明白了。

不解釋。

15樓:匿名使用者

你的第一個問題給出的結果似乎出現了亂碼,我看不懂,所以只回答第二個吧輸入會出不會對你的當前出入產生影響,但是會對你下一次輸入產生影響,因為回車本身就是一個字元『\n』,他會駐留在快取中,要想不產生影響,應該在你當前屬於結束後呼叫fflush()方法清除快取。

c語言程式中多個scanf函式的問題

16樓:匿名使用者

改為下面這樣再試試,使用fflush清空輸入緩衝

#include

void main()

關於c語言scanf()函式用法

scanf是c語言中的一個輸入函式,與printf函式一樣,都被宣告在標頭檔案stdio.h裡,因此在使用scanf函式時要加上 include 在有一些實現中,printf函式與scanf函式在使用時可以不使用預編譯命令 include 它是格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指...

c語言新手問題,C語言新手問題?

while isalpha years 0 修改此處即可,years是整型數字,不是字元返回false 0,死了 qazedctgb11111 include include include int main else printf 請輸入日期 b b 範圍在1和 d之間 i scanf d day...

初學C語言,關於for迴圈中scanf函式應用的一點小疑問

你在輸入第二行按下回車之後,輸入的這行內容就被存在緩衝區裡,scanf就會按指內 定的容輸入格式來讀取這些資料,每遇到空白 回車或者tab就會認為那個資料結束,所以n次迴圈就會讀入n個資料,按上面的理解,如果你輸入的時候是輸入這種 988回車 74回車 這種也是可以的。c語言for迴圈裡的scanf...