#include <stdio.h>
int main()
{
int a[100];
int i, num;
int low, high, middle;
char buf[10];
/* 配列に奇数を挿入して表示 */
printf("配列aの内容は次のとおりです");
for(i=0; i<100; i++)
{
if(i%10 == 0) printf("\n");
printf("%3d ",a[i] = i*2+1);
}
/* 標準入力から自然数を受け取る */
printf("\n1~199までの整数を入力してください\n");
fgets(buf, 11, stdin);
num = atoi(buf);
if(num < 1 || num > 199)
{
printf("入力された数値が不正または範囲外です\n");
return 1;
}
/* 二分探索開始 */
low = 0;
high = 99;
while(low <= high)
{
middle = (low + high)/2;
if(num > a[middle])
low = middle + 1;
else if(num < a[middle])
high = middle - 1;
else
{
printf("探索値 %d はa[%d]と同じ値です\n", num, middle);
return 0;
}
}
printf("配列aの中に %d は見つかりませんでした\n", num);
return 0;
}