研修でやったのをCで実装するよ。
番兵法
#include <stdio.h>
int main(void);
int search(int a[], int num_a, int key);
void prt_int_array(const int a[], int num_a);
void prt_int_array(const int a[], int num_a)
{
int i;
for (i = ;i < num_a;i++) {
printf ("a[%d] --> %d\n", i, a[i]);
}
}
int search(int a[], int num_a, int key)
{
int p = ; /* keyが見つかった配列の添え字 */
int i = ; /* 作業用 */
/* 番兵をセットするね */
a[num_a - 1] = key;
/* 見つかるまで繰り返すよ */
while (p == ) {
printf ("Now Searching array[%d] --> %d\n", i, a[i]);
if (a[i] == key) {
p = i;
}
else {
i++;
}
}
/* 番兵なら見つからなかったことにする */
if (i == num_a - 1) p = -1;
return(p);
}
int main(void)
{
int array[8] = {, 1, 2, 3, 4, 5, 6};
int num_array = sizeof(array) / sizeof(array[]);
prt_int_array(array, num_array);
printf ("\n");
printf ("Searching Begins:\n");
printf ("9 is a[%d]\n", search(array, num_array, 9));
return();
}