输入一个正整数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
分析:
- 首先,通过
scanf
函数读取一个整数rep
,表示要进行的搜索操作的次数。 - 然后,定义两个数组
a
和b
,以及一个指针p
。a
用来存储要搜索的数组,b
用来存储搜索结果,p
用来遍历a
数组。 - 接下来,进行
rep
次循环,每次循环中:- 通过
scanf
函数读取一个整数n
,表示本次要搜索的数组的大小。 - 通过循环,读取
n
个整数,并将它们存储在a
数组中。 - 通过
scanf
函数读取一个整数x
,表示要搜索的元素。 - 调用
search
函数,将a
数组、n
和x
作为参数,并将结果存储在b
数组中。 - 通过计算,将
p
指针重新定位到正确的位置,以便进行下一次循环。
- 通过
- 最后,通过循环,打印出
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(如果元素不存在)。