#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;}这个解决方案就是针对这个问题。在第三种情况下,我没有获得所需的输出,根据我放置fflush(stdin)在前面scanf("%d",arr[i])还是后面scanf("%d",arr[i]),它给出的输出为3或4 ,请告诉此代码问题。
2 回答
翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
在 没有 一些神奇的方式。
首先,fflush(stdin);调用未定义的行为。不要使用它。
引用C11,章§7.21.5.2,该fflush函数(重点煤矿)
如果stream指向未输入最新操作的输出流或更新流,则该fflush函数会使该流的所有未写入数据都被传递到主机环境中,从而被写入文件中;否则,行为是不确定的。
那就是
for(j=0;j<n;j++)
{
fflush(stdin);
scanf("%d",&arr[i]);
}
对我来说看起来很不对劲,arr[i]不保证会在范围之内。应该是
scanf("%d",&arr[j]);
- 2 回答
- 0 关注
- 376 浏览
添加回答
举报
0/150
提交
取消