c语言超心细题,超心细题

找不出错误了,但一直通过不了

img


#include
int main(){
    int n,s=0,c=0;
    double avg=0.0;
    scanf("%d",&n);
    int i,a[n];
    for(i=0;iscanf("%d",&a[i]);
        if(a[i]==-1){
            break;
        }
      else  if(a[i]>=0&&a[i]<=100){
            c++;
            s+=a[i];
        }
    }
    avg=1.00*s/c;
    printf("%.2lf",avg);
}

这个题目意思是说检测到n个有效数据或者输入-1才计算平均数,所以不是单纯的输入n个数就行,所以for循环从0-n-1是不行的,可能你输入了20个数才满足有效数据达到n个

结果与样例一致,为什么通不过

img

有一种情况 就是 你计划输入3个数,在这种输入下 90 -80 -80 -80 90 90 估计有问题。没有-1和前面3个没有3个有效数字。 for循环里面只读3个数字就退出了,这种case会失败。应该在没有读到-1之前不退出循序直到读到3个有效数字为止