第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

fflush(stdin)的工作如何更改以下代碼中的輸出?

fflush(stdin)的工作如何更改以下代碼中的輸出?

C
繁星coding 2019-11-04 14:13:52
#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]);


查看完整回答
反對 回復(fù) 2019-11-04
?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗 獲得超15個贊

您的網(wǎng)站無法訪問google嗎?期望您至少自己付出一些努力。如果不是fflush(stdin),則至少是“未定義的行為”! 

查看完整回答
反對 回復(fù) 2019-11-04
  • 2 回答
  • 0 關(guān)注
  • 398 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號