/*问题描述
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
输入格式
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
输出格式
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
样例输入
6
1 9 4 8 3 9
9
样例输出
2
数据规模与约定
1 <= n <= 1000。*/
#include<stdlib.h>
int main()
{int i, n,s,*p=NULL,loca;
scanf("%d",&n);
p=(int *)calloc(n,sizeof(int));
if(p==NULL)
{
printf("数组动态申请失败\n");
exit(1);
}
for(i=1;i<=n;i++,p++)
{
scanf("%d",p);
if(*p>10000||*p<0)
{
printf("输入有误,数列中的每个数都不大于10000。\n");
exit(1);
}
}
scanf("%d",&s);
p=p-n;
for(i=1;i<=n;i++,p++)
{
if(*p==s)
{
loca=i;
break;
}
else
{
loca=-1;
return 0;
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
输入格式
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
输出格式
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
样例输入
6
1 9 4 8 3 9
9
样例输出
2
数据规模与约定
1 <= n <= 1000。*/
1: C语言版的
#include<stdio.h>#include<stdlib.h>
int main()
{int i, n,s,*p=NULL,loca;
scanf("%d",&n);
p=(int *)calloc(n,sizeof(int));
if(p==NULL)
{
printf("数组动态申请失败\n");
exit(1);
}
for(i=1;i<=n;i++,p++)
{
scanf("%d",p);
if(*p>10000||*p<0)
{
printf("输入有误,数列中的每个数都不大于10000。\n");
exit(1);
}
}
scanf("%d",&s);
p=p-n;
for(i=1;i<=n;i++,p++)
{
if(*p==s)
{
loca=i;
break;
}
else
{
loca=-1;
}
}
printf("%d",loca);return 0;
}
2:c++版本的(来自网友分享) 地址:http://blog.csdn.net/liubinzi123/article/details/39966685
- #include <iostream>
- using namespace std;
- const int N = 10001;//定义数组长度
- int main()
- {
- int n;
- int a[N];
- int m;
- while(cin>>n && n != 0)// 程序循环执行
- {
- for(int i = 1;i <= n;i ++)//初始化数组
- {
- cin>>a[i];
- }
- cin>>m;
- for(i = 1;i <= n;i ++)//数组元素与m进行比较
- {
- if(a[i] == m)
- {
- cout<<i<<endl;
- break;
- }
- }
- while(i = n + 1 && a[i] != m)//如果都不满足,则输出-1
- {
- cout <<"-1"<<endl;
- break;
- }
- cout<<endl;
- }
- return 0;
- }