1樓:四舍**入
這是因為在上一次使用scanf後沒有清空輸入快取, 這樣你再次使用scanf的時候函式就可能會認為你已經輸入過了。
解決這一問題的最簡單辦法是在接收字元的scanf的控制符"%c"中的%前加一個空格寫成" %c",把前一次輸入遺留在輸入緩衝區裡的所有廣義空格(' '、'\t'、'\n'等)都吸收掉。
c語言中scanf不能執行的問題
2樓:
輸入語句不要多餘的空格,要不然有可能出現你意想不到的錯誤
3樓:
每次scanf後加一句fflush(stdin);清空緩衝區
4樓:
在程式最上面加
#include
一個有關c語言scanf的問題 執行到scanf()時還沒有輸入,為什麼自動執行下面的語句了?
c語言中迴圈體中的scanf不被執行
5樓:匿名使用者
year為整型變數,不能接受實型值,會自動取整,所以do...while(!(year==(int)year));的條件會不能成立。
可以使用負數來判斷,若為負數則終止迴圈。**如下:
int year;
dowhile(year>0);
6樓:匿名使用者
在scanf("%d",&year);這一句這裡,%d表示取得整數,如果year不是整數就會自動把小數部分截掉,只留整數部分賦值給year。不管使用者輸入的是整數還是小數,year都會得到整數部分,判斷條件這一句!(year==(int)year),其值當然就是false,即不成立,只會執行一次。
例如,當使用者輸入2012.89時,year的值就是2012,!(2012==(int)2012),你說是false還是true?
另外,你說的提示使用者輸入整數,就要這麼寫:
dowhile(year-(int)year);
7樓:
dowhile(!(year==(int)year));
8樓:匿名使用者
#include
void main()
while(year-y);}
在c語言中,為什麼我的一個 scanf**在第二次迴圈操作時,那步驟不執行了呢?
9樓:匿名使用者
char c[10];
for(int i=0;i<10;i++)scanf("%c",&c[i]);
//如果你**結構是上面那樣的,則輸入一人字元後回車,計算機實際上接收了兩個字元,即:字元+回車,要將這個多餘的回車去除,可以將上面代榪改為下面的形式:
char c[10];
for(int i=0;i<10;i++)
10樓:匿名使用者
因為scanf輸入要按回車,就這麼簡單。。。你輸入的時候按了回車,回車指令還在等待執行,然後下一個scanf的時候就讀入了這個回車
11樓:匿名使用者
呵呵,這是scanf的規則!
按理來說你每輸入一個數 末尾都要加一個空格才能完成一次輸入!
建議不要圖方便在scanf在加上了一些規則!
這樣會變得很麻煩,
可以通過與printf相結合的方式!
12樓:匿名使用者
因為scanf輸入要按回車,輸入一個字元後回車,計算機實際上接收了兩個字元,即:字元+回車。
試一下flushall(); or fflush(stdin);
求問大佬為什麼這個c語言程式直接結束了,沒有執行scanf? 50
13樓:中兵勘察海外部
嗯,你在除錯的時候,開啟除錯,然後單步執行,就看出來啦。
c語言——迴圈裡面的第二個scanf不會執行怎麼辦?
關於c語言scanf()函式用法
scanf是c語言中的一個輸入函式,與printf函式一樣,都被宣告在標頭檔案stdio.h裡,因此在使用scanf函式時要加上 include 在有一些實現中,printf函式與scanf函式在使用時可以不使用預編譯命令 include 它是格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指...
c語言printf和scanf中的2c是什麼意思
printf為輸出,scanf為輸入,2c輸入或輸出字元,寬度為2 在printf函式中如果輸出的超過2個字元還是會按原來的字元 如果不足2個字元 會補空格。輸出字元的固定長度為2.如 char s a printf 2c s 輸出為 空格a 指定欄位寬度 c是輸出字元 當前的意思是 輸出一個字元 ...
c語言for迴圈執行步驟,C語言 for迴圈執行步驟
簡單的for迴圈程式如下 for int i 0 i 20 i 執行步驟是 1 i 0 初始化初值 2 進行條件專判斷i是否 20,如果條屬件為真,則繼續執行 3 執行迴圈體的 4 i 變數i自增一次 5 回到第2步,一直迴圈,直到第2步條件為假時,退出迴圈,結束。開啟嗶哩嗶哩,搜尋 詳解c語言之f...