之前遞增我 scanf運行...而不是
for(i=0;i<n;i++) {
scanf("%d",&t[i])
}
這個fo [R環
for(INIT ; COND ; INCREMENT) ACTION;
相當於
INIT;
while (COND) {
ACTION;
INCREMENT;
}
在你的程序中,實際行動是增量部分,並完成後i++
(逗號分隔的語句進行評估,並執行從左至右),0
值被跳過,而且t[n]
被寫入,n
邏輯上超出界限(因爲它不是問題,而n
是< = 49)。
請注意,INIT和INCREMENT是約定,因爲您可能會做很多事情,既沒有初始化,也沒有增量! - 因爲你實際上
下面,只使用一個循環,沒有陣列和少變量的版本一樣,注視着解釋
#include <stdio.h>
#include <limits.h>
int main(){
int n,v,previous = INT_MIN; // INT_MIN: minimal int value
printf("Donner N le nombre de valeurs :");
scanf("%d",&n);
while (n-- > 0) {
scanf("%d", &v);
if (v < previous) return 0;
previous = v;
}
return 1;
}
說明
previous
分配可能的最小整值
while (n-- > 0)
確保n最初> 0,將循環n次
- 讀取的值
v
,如果v < previous
這意味着序列不上升
- 直接返回1或0
盂蘭盆勇氣 :-)
能否請您發佈您的代碼沒有語法錯誤,還發表您的投入? – dasblinkenlight
請在所有警告和調試信息('gcc -Wall -Wextra -g')和**使用調試器**('gdb')*進行編譯之後,請求*我們完成您的功課! –
哪裏是語法錯誤,你可以採取任何輸入ex = 5/1,2,3,4,5它返回1,但是當你輸入n = 5/5,4,3,2,1它也返回1當它應該返回0 – HiDDeN