从题目可以看出必须用数组存储数据。

数组定义 int a[10010](说明,比题目要求的10000,大一点,防止访问越界)

#include<cstdio>
int a[10010];
int main(){
    int n,x;
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    scanf("%d",&x);
    for (int i=1;i<=n;i++)
       if (a[i]==x) {printf("%d",i);return 0;}
    printf("-1\n");
    return 0;
}
View Code

上述程序找到x使用return 0结束程序

但是一般查找数据往往只是程序的一部分,所以使用break退出更加有通用性,修改后的程序如下:

#include<cstdio>
int a[10010];
int main(){
    int n,x;
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    scanf("%d",&x);
    int i;
    for ( i=1;i<=n;i++)
       if (a[i]==x) {printf("%d",i);break;}
    if (i>n)printf("-1\n");
    return 0;
}
View Code

还可以利用C++的灵活性对程序稍作修改

#include<cstdio>
int a[10010];
int main(){
    int n,x;
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    scanf("%d",&x);
    int i;
    for ( i=1;(i<=n)&&(a[i]!=x);i++);
    if (i<=n)printf("%d\n",i);
    else printf("-1\n");
    return 0;
}
View Code

 

但是程序不够简洁,如何让程序变的更美呢?

定义一个变量p=-1,如果找到x则p=i,最后输出p即可,程序如下:

#include<cstdio>
int a[10010];
int main(){
    int n,x;
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    scanf("%d",&x);
    int p=-1;
    for (int  i=1;i<=n;i++)
       if (a[i]==x) {p=i;break;}
    printf("%d\n",p);
    return 0;
}
View Code