C语言题目:在数组中查找指定元素

输入一个正整数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

#include <stdio.h>

#define MAXN 10

int search( int list[], int n, int x );

int main()

{

int i, index, n, x;

int a[MAXN];

printf("输入个数:\n");

scanf("%d",&n);

for( i = 0; i < n; i++ )

scanf("%d", &a[i]);

printf("输入x:\n");

scanf("%d", &x);

index = search( a, n, x );

if( index != -1 )

printf("index = %d\n", index);

else

printf("Not found\n");  

return 0;

}

int search( int list[], int n, int x ){

int i;

for(i=0;i<n;i++){

if(x==list[i])

return i;

}

return -1;

}

扩展资料:

数组使用规则:

1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。

2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。

3.如不给可初始化的数组赋初值,则全部元素均为0值。

4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。

参考资料:

百度百科-数组

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-12-08

C语言程序:

#include <stdio.h>

#define N 11

int search(int list[], int n, int x)
{
int i;
for(i=0; i<n; i++)
if(list[i] == x)
return i;
return -1;
}

void main()
{
int repeat, n, x;
int arr[N][N];
int result[N];
int i, j;

scanf("%d", &repeat);
for(i=0; i<repeat; i++)
{
scanf("%d", &n);
for(j=1; j<=n; j++)
{
scanf("%d", &arr[i][j]);
}
arr[i][0] = n;

scanf("%d", &x);

result[i] = search(arr[i], n, x);
}

for(i=0; i<repeat; i++)
if(result[i] == -1)
printf("Not found\n");
else
printf("index = %d\n", result[i]);
}

运行测试:

本回答被提问者和网友采纳
第2个回答  2017-12-08
#include <stdio.h>
#include <math.h>
#include<string.h>
#include<stdlib.h>
int search(int list[],int n,int x)
{
int i,flag=0;
for(i=0;i<n;i++)
{
if(list[i]==x)
{
flag=1;
break;
}
}
if(flag==1)
return i;
else
return -1;
}
int main()
{
int repeat,i,j,n,x,a[100];
scanf("%d",&repeat);
while(repeat--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
if(search(a,n,x)!=-1)
printf("index = %d\n",search(a,n,x));
else
printf("Not Found\n");
}
return 0;
}

追问

结果不对

追答

这不是和你样例输出里一样吗?
你把那个Not Found改为Not found试试

第3个回答  2018-05-19
#include<stdio.h>
int search(int list[],int n,int x)
{
int i;
for(i=0;i<n;i++)
{
if(list[i]==x)
return i;
}
return -1;
}
int main()
{
int repeat,n,a[10],j,i,x;
int result[10];
scanf("%d",&repeat);
for(i=0;i<repeat;i++)
{
scanf("%d",&n);
for(j=0;j<n;j++)
{
scanf("%d",&a[j]);
}
scanf("%d",&x);
result[i]=search(a,n,x);
}
for(i=0; i<repeat; i++)
if(result[i] == -1)
printf("Not found\n");
else
printf("index = %d\n", result[i]);
return 0;
相似回答