#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
using namespace std;
int main(){
int i=0,n,h,k;
k = (int)pow(10,5);
int c[k];
scanf("%d%d",&n,&h);
if((n>=1 && n<=(int)pow(10,5)) && (h>=1 && h<=(int)pow(10,8))){
int arr[n];
do{
scanf("%d",&arr[i]);
if(arr[i] > h){
cout<<"Error !";
exit(1);
}
i++;
}while(i!=(n-1));
i=0;
do{ /*The fault occurs somewhere here, probably*/
scanf("%d",&c[i]);
i++;
}while(c[i]!=0);
if(i>(int)pow(10,5)){
cerr<<"Error !";
exit(0);
}
}
return 0;
}
我尝试使用scanf()从控制台上的不同行接受一些数字(对数字的上限和下限有一些约束) - 问题是我得到了一个在某处我发表评论的地方出现了细分错误 - 我似乎无法弄清楚错误发生的位置 - 有人能指出我所犯的错误吗?
答案 0 :(得分:2)
我认为问题在这里
do{
scanf("%d",&c[i]);
i++;
}while(c[i]!=0);
考虑i
的当前值为0
,并且您在c[0]
的递增值之后输入值i
。现在i
成为1
,然后您正在检查c[1] != 0
这是问题
使用
i=-1;
do{
i++;
scanf("%d",&c[i]);
}while(c[i]!=0);
答案 1 :(得分:1)
scanf("%d",c[i])
应为scanf("%d",&c[i])