题目描述:
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。
输入
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。
输出
对于每组输入,请输出结果。
样例输入
4 1 2 3 4 3
样例输出
2
trap1:'测试数据有多组',因此应该设置循环读取多组数据。
trap2:我的代码如下
#include<stdio.h>
int main()
{
int n,x,i,a[210];
int index=-1;
while(scanf("%d",&n)!=EOF)
{
//读取
for( i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&x);
//比较
for(i=0; i<n; i++)
{
if(a[i]==x)
{
index=i;
break;
}
}
printf("%d\n",index);
}
return 0;
}
反复检查,终于发现。index在几次循环后,初值不一定还是-1。所以, 程序中 int index=-1;应该放在while循环内部的开始位置。
反思:变量的作用域必须要明确。否则会出错。