c語言大佬們幫幫忙,這兩個迴圈怎麼輸出不一樣

時間 2021-09-07 13:11:08

1樓:

scanf函式返回成功讀入的資料項數,讀入資料時遇到了“檔案結束”則返回eof。

如: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

第一個為:從終端讀取無符號長整形,讀取成功,scanf返回1,否者返回0.

while(條件);當條件為真的時候執行while語句。所以輸入數字都為讀取成功,返回1,1==1為真,執行while,當輸入q時,讀取失敗,返回0,0==1為假,退出while。

第二個為:從終端讀整形,讀取成功,scanf返回1,否者返回0.

所以輸入數字都為讀取成功,返回1,1==0 為假,跳出while,當輸入q時,讀取失敗,返回0,0==0為真,執行while。由於字元q一直沒有被吃掉,導致q一直存在快取中,被下一個scanf讀取。一直讀取失敗。

構成死迴圈。

建議在while中新增getchar(); 來吃掉字元即可。

2樓:匿名使用者

應該是迴圈裡沒有新增輸入q後的break退出迴圈的語句吧

c語言大神幫看這兩段**的區別在哪,為什麼輸出同一值,輸出結果不一樣?

3樓:時辰八點半

第一個**:如果m-t<=0之後你做了m=m-t此時的m如果比t小,那麼就會執行下一步sum++

比如說當前m=5,t=3 m>=t 執行m=m-t=2下一步m

下面是標準的當前m只有效一次

4樓:匿名使用者

if(m-t>=0) m=m-t;

if (m-t<0) sum++;

當滿足m-t>=0,就改變了m的值了,然後又判斷if (m-t<0) ,如果滿足就sum++了

而if(m>=t) m=m-t;

else sum++;

兩者只會執行一步,不是m=m-t;就是sum++;

顯然結果不同

5樓:和恢恑憰怪

執行過程中考慮一種情況:

m=10;t=9

則第一段**中:

if(m-t>=0) m=m-t;

if (m-t<0) sum++;

這兩句都會執行;

而第二段**中則只執行if(m-t>=0) m=m-t;

因此,**1比**2執行sum++的次數多因此,**1列印的值會比**2列印的值大

c語言 這兩大程式一個是按列輸出一個是按行輸出為什麼這兩個結果不一樣的

6樓:風若遠去何人留

這種方式是正確的. 每行兩個, 一共三行, 符合b[3][2]的定義.

這種方式是按列輸出. 每列輸出為一行. 所以第一行輸出的值是第一列.

第二行是第二列. 看起來就和a一樣了(轉置前)

麻煩幫幫忙看看這兩個名字的星座運勢呢

什麼星座的啊他們倆。請幫我看看是什麼星座的 陽曆1月26日出生的是水瓶座的。水瓶座 陽曆1月20日 到 2月18日 水瓶座 個性獨立而執著。經常有一些激進 革新式的見地,屬於新時代的人物,有豐富的同胞愛和民主意識,能夠打破社會階級和人種的差異,培育真正的友情。對於一些既成的觀念,為了忠於自的信念,會...

高分求解C語言綜合設計問題!!高手們幫幫忙啊!謝謝了先

include stdio.h include string.h struct student int tj 10 儲存各分數段人數 struct student input 輸入初始化結構體 void chaxun int n 0,int n,struct student p 查詢 n 0是查詢的...

C語言中,我看見兩個for迴圈連在一起就發暈,老是看不懂那個,也是模模糊糊的感覺,希望有人給指點

檀木妍 給你舉個模擬例子,有乙個大盒子,裡面有個小盒子,小盒子裡放著一把鑰匙。大盒子就好比第一重迴圈 最外面那重 小盒子就好比第二重迴圈,鑰匙就好比迴圈體。你要先開啟大盒子 進入第一重迴圈 然後把小盒子開啟 進入第二重迴圈 然後拿到鑰匙 執行迴圈體 並且每次你要取這個鑰匙都要這樣子做。如果說小盒子裡...