大家帮忙看一下这个c语言数组程序哪里有缺陷呀

图片说明

 /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

#include<stdio.h>   
int main()   
{   
 int a[100],i,min,n,index;//min记录最小数所在的下标   
 scanf("%d",&n);   
 for(i=0;i<n;i++)/*输入n个数并保存到数组a*/
     scanf("%d",&a[i]);

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */
if(n!=1)
{min=a[0];
 for(i=1;i<=n-1;i++)
     if(a[i]<min) {min=a[i];
index=i;}}
if(n==1) index=0;
 /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

printf("min=%d,位于第%d个\n",a[index],index+1); 
 return 0;
}

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */

图片说明

 就是那个隐藏的测试用例不对,,,,应该是程序有缺陷

完整点:

 #include<stdio.h>   
int main()   
{   
    int a[100],i,min,n,index;//min记录最小数所在的下标 
    do{
        printf("请输入数据个数:");
        scanf("%d",&n);   
    }while( n<1 || n>100);
    for(i=0;i<n;i++)/*输入n个数并保存到数组a*/
        scanf("%d",&a[i]);

    /* PRESET CODE END - NEVER TOUCH CODE ABOVE */
    if(n!=1)
    {
        min=a[0];
        index=0;
        for(i=1;i<=n-1;i++)
            if(a[i]<min) {min=a[i]; index=i;}
    }
    if(n==1) { min=a[0]; index=0; }
    /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

    printf("min=%d,位于第%d个\n",a[index],index+1); 
    return 0;
}

我感觉错误在于不能连续测试数据。lz稍微改一下吧

首先,这编码规范。。不忍直视。其次。数组大小限定为100个就要对输入做限定。。。

 #include<stdio.h>   
int main()   
{   
    int a[100],i,min,n,index;//min记录最小数所在的下标   
    scanf("%d",&n);   
    for(i=0;i<n;i++)/*输入n个数并保存到数组a*/
        scanf("%d",&a[i]);

    /* PRESET CODE END - NEVER TOUCH CODE ABOVE */
    if(n!=1)
    {
        min=a[0];
        index=0; //这少了一步
        for(i=1;i<=n-1;i++)
            if(a[i]<min) {min=a[i]; index=i;}
    }
    if(n==1) index=0;
    /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

    printf("min=%d,位于第%d个\n",a[index],index+1); 
    return 0;
}
            min=a[0];
    index=0;
    for(i=1;i<=n-1;i++)
        if(a[i]<min) {
                                min=a[i]; 
                                index=i;}
}

    n!=1没有必要

代码写的规范一点啊。。好乱啊