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 法律規則的分類。劃分標準按照規則的內容不同,內容規定不同和腐敗授權性規定義務性規定按照規則內容的確定...