List 3-3の関数search を、while文ではなくfor文を用いて書きかえよ。 |
/* 演習3-1 線形探索(for文で実現) */ #include <stdio.h> /*--- 要素数nの配列aからkeyと一致する要素を線形探索 ---*/ int search(const int a[], int n, int key) { int i; for (i = 0; i < n; i++) if (a[i] == key) return (i); /* 探索成功 */ return (-1); /* 探索失敗 */ } int main(void) { int i, ky, idx; int x[7]; int nx = sizeof(x) / sizeof(x[0]); printf("%d個の整数を入力してください。\n", nx); for (i = 0; i < nx; i++) { printf("x[%d]:", i); scanf("%d", &x[i]); } printf("探す値:"); scanf("%d", &ky); idx = search(x, nx, ky); /* 配列xから値がkyである要素を線形探索 */ if (idx == -1) puts("探索に失敗しました。"); else printf("%dは%d番目にあります。\n", ky, idx + 1); return (0); }