程式設計,程式為什麼是錯誤的?在程式當中scanf agree的值為dagree ,這樣寫為何不對

2021-04-15 12:28:08 字數 3527 閱讀 9575

1樓:匿名使用者

這是因為你第二個scanf接收了你第一個scanf結尾的回車,所以第二個scanf直接跳過了, 在兩個scanf中間加上 getchar();就對了

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

2樓:園林植物手冊

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)時,若格式控制串中無非格式字元,則認為所有輸入的字元均為有效字元。

3樓:匿名使用者

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

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

4樓:匿名使用者

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

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

5樓:匿名使用者

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

6樓:匿名使用者

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

7樓:匿名使用者

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

8樓:子夜清風

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

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

9樓:匿名使用者

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

10樓:噶話噶

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

c語言二級考試題及答案

這兩個c語言**中錯在**?

11樓:看見什麼吃什麼

第一個程式:

首先你的教材可能是比較舊了。

錯誤在於:

數字是不能作為變數名稱,因為c語言當中,數字是當做常量的,不能向常量賦值。

此外你缺少標頭檔案語句#include

2=max(x,y): 這句分號你寫成了冒號。

第二個程式:

語法上是沒有錯誤的,也可以正常執行。所以你的問題是?

12樓:匿名使用者

第一個:

int max(int a,int b); /*函式說明*/int main() /*主函式*/int max(int a,int b) /*定義max函式*/

第二個沒任何錯誤

13樓:匿名使用者

//數字不能變數。變數命名原則,不能用數字開頭,不能用關鍵字,第一個:

#include

#include

int max(int a,int b); /*函式說明*/main() /*主函式*/int max(int a,int b)

/*定義max函式*/

第二個:沒問題

14樓:希伯來爵

int max(int a,int b); /*函式說明*/

main() /*主函式*/

15樓:

錯誤在第一個main函式,你宣告變數時,那個2是個什麼東東,2是不能做為變數的。

你宣告成a2都行,這個涉及到識別符號的命名規則:只能用字母,數字,下劃線,而且變數開頭只能是字母或者下劃線。

另外,你的兩個**不能放在一起,因為只能有一個main函式。

16樓:匿名使用者

錯誤在第一個的第四行,常數不能定義變數為變數,所以int 2是錯誤的

int x,y,2; /*變數說明*/

17樓:匿名使用者

2=max(x,y): 2錯,不是你輸錯就是教材打錯。第二個沒錯

18樓:匿名使用者

第一個 變數不可以用數字開頭 int 2 是錯誤的

19樓:

2不是變數,不能說明為int。

20樓:**水心

好幾處 z 寫成 2 了

求c語言的大神!!為什麼我把scanf放到while(1)和第二個 { 之間就會提示後面的第一個break非法呢?

21樓:網海1書生

switch中的break只是

bai用來退出

duswitch的,所以不管輸入對錯,zhi後面的dao**都會執行的專

。你的**實在太亂了,我屬只好整理一下了:

#include

int main()else if(f<0||f>100000)else

printf("\n");}}}

程式設計序,當給x輸入任意的正數時,y都輸出1當給x輸入任意的負數時,y都輸出 1當給x輸入0時,y都輸

第一種和第二種都是對的 第三種和第四種是錯的因為if語句中的 版else跟的是最近權的那個if 所以在3和4中的else都和第二個if配對了 沒有表達原來的意思 另外第三種的原意的初始條件也應該是負一而不是一。用手機發的 沒法試執行 但願有幫助。第一第二是正確的,第三第四是錯誤的 經測試 一 二種正...

為什麼在編譯C 程式的時候是沒有錯誤的,但是執行的時候就是

編譯通過只是說明沒有語法錯誤,執行不出結果就是你 邏輯問題了貼 看看吧,自己打斷點除錯一下 while r 0 寫反了吧,r 0 否則就成死迴圈了。可能是你沒有輸出結果吧?你可以跟蹤除錯一下就知道了 沒有編譯錯誤,有邏輯錯誤 你最好把 貼出來看看 這個c程式編譯顯示沒有錯誤,為什麼不能執行?引數復必...

什麼是指令碼程式,程式設計中指令碼是什麼?

vbs為拓展名的檔案 指令碼是批處理檔案的延伸,是一種純文字儲存的程式,一般來說的計算機指令碼程式是確定的一系列控制計算機進行運算操作動作的組合,在其中可以實現一定的邏輯分支等。指令碼程式相對一般程式開發來說比較接近自然語言,可以不經編譯而是解釋執行,利於快速開發或一些輕量的控制。現在的指令碼語言是...