/* 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没有必要
代码写的规范一点啊。。好乱啊