|
发表于 2018-3-12 11:00:58
|
显示全部楼层
- #include <stdio.h>
- #define MAX 15
- int main(void)
- {
- int array[MAX];
- int i, j, temp, flag;
- int up, low, shuru;
- char ch;
-
-
- printf("请输入数字:");
- scanf("%d", &array[0]);
- i = 1;
- while(i < MAX)
- {
- scanf("%d", &array[i]);
- if(array[i] >= array[i-1])
- {
- i++;
- }
- else
- {
- printf("输入的数不比前一个小,请重新输入:");
- }
- }
-
- printf("\n");
- for(i = 0; i < MAX; i++)
- {
- printf("%5d", array[i]);
- }
-
- flag = 1;
-
- while(flag)
- {
- printf("\n请输入一个该数组中的数字:");
- scanf("%d", &shuru);
- getchar();
- temp = 0;
- low = 0;
- up = MAX-1;
- if((shuru < array[0]) || (shuru > array[MAX-1]))
- {
- j = -1;
- }
- while((!temp) && (low <= up)&&j != -1)
- {
- i = (up+low)/2;
- if(shuru == array[i])
- {
- j = i;
- printf("数字 %d 在数组元素中的第 %d 位!\n", shuru, j+1);
- temp = 1;
- }
- else if(shuru < array[i])
- {
- up = i - 1;
- }
- else
- {
- low = i + 1;
- }
- }
-
- if(!temp || j == -1)
- {
- printf("数字%d在数组中找不到!\n", shuru);
- }
- printf("\n是否继续查找(Y/N):"); //我觉得你的代码应该改成输入n退出,任意键继续。
- scanf("%c", &ch);
-
- if(ch == 'N' || ch == 'n')
- {
- flag = 0;
- }
- }
- return 0;
- }
复制代码 这个是可以运行的,感觉还有其他问题,你可以再修改一下,更美观舒适。 |
|