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一樣了(轉置前)

高分求解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是查詢的...

怎麼跟我兩個好朋友說。幫幫忙跪求

zjn張景娜 我覺得愛情是自私的。你應該去面對。不要躲避。即使你的好朋友討厭同班戀。但是幸福是自己的。你可以私下對你好朋友好好談談。我想好朋友應該會理解你的 你肯定要說清楚。之前一直隱瞞的原因。擔心的原因。得到她們的信任。認可。這樣她們才會為你考慮。不管怎麼說。總之實話實話。畢竟大家 都是好朋友 我...

c語言請問下這兩個程式出來的結果為啥不一樣

二個程式都有點問題。第一個程式。你的那個i有二個地方有增加的。一個的i 一個的i i 168,這樣就不能遍歷1 10000裡面的全部情況了。應該在設個變數。比如ii i 168.第二個程式的問題是思路上的漏洞。沒有考慮這個數是負數的情況。c語言程式設計問題。為什麼這兩個程式執行的結果不一樣? 萢萢 ...