PTA-在数组中查找指定元素

输入一个正整数repeat (0<repeat<10),做repeat次下列运算:

输入一个正整数 n (1<n<=10),然后输入n个整数存入数组a中,再输入一个整数x,在数组a中查找x,如果找到则输出相应元素的最小下标,否则输出"Not found"。

要求定义并调用函数search(list, n, x),它的功能是在数组list中查找元素x,若找到则返回相应元素的最小下标,否则返回-1,函数形参 list 的类型是整型指针,形参n和x的类型是int,函数的类型是int。

输出格式语句:printf("index = %d\n", );

输入输出示例:括号内为说明,无需输入输出

输入样例:

2              (repeat=2) 
3              (n=3)
1 2 -6		
2              (x=2)
5              (n=5)
1 2 2 5 4
0              (x=0)

输出样例:

index = 1
Not found

分析:

  1. 首先,通过scanf函数读取一个整数rep,表示要进行的搜索操作的次数。
  2. 然后,定义两个数组ab,以及一个指针pa用来存储要搜索的数组,b用来存储搜索结果,p用来遍历a数组。
  3. 接下来,进行rep次循环,每次循环中:
    • 通过scanf函数读取一个整数n,表示本次要搜索的数组的大小。
    • 通过循环,读取n个整数,并将它们存储在a数组中。
    • 通过scanf函数读取一个整数x,表示要搜索的元素。
    • 调用search函数,将a数组、nx作为参数,并将结果存储在b数组中。
    • 通过计算,将p指针重新定位到正确的位置,以便进行下一次循环。
  4. 最后,通过循环,打印出b数组中的所有元素。如果某个元素为-1,则打印"Not found",否则打印出该元素的索引。

代码:

#include<stdio.h>
int search(int list[],int n,int x);
int main(){
	int rep;
	int i,j,n,x;
	int a[100];
	int *p;
	int b[100];
	p=a;
	scanf("%d",&rep);
	for(i=0;i<rep;i++){
		scanf("%d",&n);
		for(j=0;j<n;j++)
		{
			scanf("%d",p++);
		}
		p=p-n;
		scanf("%d",&x);
		b[i]=search(p,n,x);
		p=p+n;
	}
	
	for(i=0;i<rep;i++){
		if(b[i]==-1){
			printf("Not found\n");
		}else{
			printf("index = %d\n",b[i]);
		}
	}
}
int search(int list[],int n,int x){
	int i,j;
	for(i=0;i<n;i++){
		if(list[i]==x){
			return i;
		}
	}
	return -1;
}


总结:

 

search函数中,通过一个循环遍历整个数组,查找与指定元素相等的元素。如果找到,则返回该元素的索引;否则返回-1。

综上所述,这段代码实现了在一个数组中搜索指定元素的功能,并返回该元素的索引或-1(如果元素不存在)。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值