求大神解釋下這個c語程式,求大神解釋下這個C語程式

時間 2022-01-25 20:05:31

1樓:wghxiao呆

先分析你第乙個while迴圈,你這樣寫,每次迴圈都要先讀入乙個字元,判斷是否是n,再判斷能否寫入數到陣列。舉個例子,你輸入12, 1是乙個字元,1不等於n,所以你讀入2到陣列a[0],i++變為1。你按回車鍵,回車鍵算乙個字元,且不是n,所以你輸入421到陣列a[1],i++變為2。

同樣道理,這就解釋了你為什麼第乙個數的第乙個字元不見的原因。

為什麼是i-2,其實很簡單,你的i++已經不在else 裡面了,你每次不管有沒有else,i++都是執行的,因為你少了個發括號

2樓:花花浪客

你的兩個問題其實是乙個,因為你的第乙個字元給c了,所以第乙個數少了乙個字元,而後面的c讀取的是回車,所以就不少了。

然後結束迴圈的時候也是一樣,先讀了個回車,然後試圖讀取a[i],但是這時候你輸入的是n,所以每讀到,然後就結束了。所以是i-2才是輸入的最後乙個數

3樓:匿名使用者

這個程式最大的問題是你根本沒有理解清楚他想要做什麼!這個是想要你輸入一組數,並不是想讓你反向輸出乙個字串,所以你的輸入方式可能不正確!

輸入數的函式(從main)開始寫,標頭檔案省略#define n 100

int main(void)

;int i = 0;

printf("請輸入一組數\n");

while(scanf("%d",&arr[i++]));

i--;

while(i>=0)

return 0;

}你上面的那個問題,是%f輸入的時候,編譯器自動把你的輸入轉成double型別,因為你是用%f輸入,這個涉及到內部的儲存一些問題,你可以除錯的時候看下位址!float佔4位元組,double佔8位元組,所以你必須減2才可以成功賦值!中間出現隨機是因為你讀取的隨機數那一段剛好使沒有儲存東西,編譯器的優化會導致你讀取的是乙個最大數!

求大神幫寫c語言的程式,求大神幫寫一個C語言的程式

include stdafx.h include define n 100 佇列人數 define a 2 最後剩下人數 define b 70 求第b個出列 define m 3 報數到m出列void main printf 最後剩下人的編號為 n for i 0 i printf 第 d個離開佇...

求C語言大神解答這個問題,求C語言大神看看這問題,,,,

束已 這個和float表示的有效位有關係 float 是單精度 只能表示7個有效位,所以你111111.111相當於只能把111111.1賦值給x,y變是如此。如果你用double float x,y 就不會有這種情況了。因為雙精度double float 可以表示9個有效位。double floa...

求C語言大神,求C語言大神

自我程式設計 看不清,就看到檔案讀寫,如果 是完整的,你直接建專案,建空白檔案,把 複製進去,編譯執行就行了。別人執行對你也沒用,還是說這 有錯要改? 京山嘿嘿 bgucfhhjgjjjbvbjjb 法律規則的分類。劃分標準按照規則的內容不同,內容規定不同和腐敗授權性規定義務性規定按照規則內容的確定...