C语言题目:在数组中查找指定元素
输入一个正整数 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函数逐个对数组元素赋值。
参考资料:
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]);
}
运行测试:
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;
}
2018-05-19
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;