从题目可以看出必须用数组存储数据。
数组定义 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; }
上述程序找到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; }
还可以利用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; }
但是程序不够简洁,如何让程序变的更美呢?
定义一个变量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; }