#include <stdio.h>int main(){ int test_no ,count=1,i,n,j; scanf("%d",&test_no); fflush(stdin); int arr1[test_no]; for(i=0;i<test_no;i++) { scanf("%d",&n); printf("\n"); int arr[n]; for(j=0;j<n;j++) { fflush(stdin); scanf("%d",&arr[i]); } for(j=1;j<=n-1;j++) { if(arr[j-1]>arr[j]) { count++; } } if(n==1) { arr1[i]=1; } else { arr1[i]=count; } count=1; } for(i=0;i<test_no;i++) { printf("%d\n",arr1[i]) ; } return 0;}這個解決方案就是針對這個問題。在第三種情況下,我沒有獲得所需的輸出,根據(jù)我放置fflush(stdin)在前面scanf("%d",arr[i])還是后面scanf("%d",arr[i]),它給出的輸出為3或4 ,請告訴此代碼問題。
2 回答

翻翻過去那場雪
TA貢獻(xiàn)2065條經(jīng)驗 獲得超14個贊
在 沒有 一些神奇的方式。
首先,fflush(stdin);調(diào)用未定義的行為。不要使用它。
引用C11,章§7.21.5.2,該fflush函數(shù)(重點煤礦)
如果stream指向未輸入最新操作的輸出流或更新流,則該fflush函數(shù)會使該流的所有未寫入數(shù)據(jù)都被傳遞到主機環(huán)境中,從而被寫入文件中;否則,行為是不確定的。
那就是
for(j=0;j<n;j++)
{
fflush(stdin);
scanf("%d",&arr[i]);
}
對我來說看起來很不對勁,arr[i]不保證會在范圍之內(nèi)。應(yīng)該是
scanf("%d",&arr[j]);

紫衣仙女
TA貢獻(xiàn)1839條經(jīng)驗 獲得超15個贊
您的網(wǎng)站無法訪問google嗎?期望您至少自己付出一些努力。如果不是fflush(stdin)
,則至少是“未定義的行為”!
- 2 回答
- 0 關(guān)注
- 398 瀏覽
添加回答
舉報
0/150
提交
取消