この質問では、配列内の指定された要素を見つけるための単純な関数の実装が必要です。
関数インターフェイスの定義:
int search( int list[], int n, int x );
その中にlist[]
は、ユーザーから渡された配列、n
(≥0)はlist[]
中央の要素の数、x
は検索対象の要素があります。見つかった場合
この関数search
は、対応する要素の最小インデックスを返します(インデックスは0から始まります)。それ以外の場合は、-1を返します。
審判のテスト手順の例:
#include <stdio.h>
#define MAXN 10
int search( int list[], int n, int x );
int main()
{
int i, index, n, x;
int a[MAXN];
scanf("%d", &n);
for( i = 0; i < n; i++ )
scanf("%d", &a[i]);
scanf("%d", &x);
index = search( a, n, x );
if( index != -1 )
printf("index = %d\n", index);
else
printf("Not found\n");
return 0;
}
/* 你的代码将被嵌在这里 */
入力例1:
5
1 2 2 5 4
2
出力サンプル1:
index = 1
入力例2:
5
1 2 2 5 4
0
出力サンプル2:
Not found
回答:
int search( int list[], int n, int x )
{
int *p = list; //定义指针p指向list的首地址
int i; //循环变量
int index = -1; //相应元素的最小下标
/*循环遍历数组,寻找有无相应元素*/
for (i = 0; i < n; i++, p++)
{
if ( *p == x) //如果找到下标给index,退出循环
{
index = i;
break;
}
}
return index; //返回index的值给search
}