赞
踩
一、N-S流程图;
二、运行结果;
三、源代码;
- # define _CRT_SECURE_NO_WARNINGS
- # include <stdio.h>
- //定义数据;
- #define N 15
-
- int main()
- {
- //初始化变量值;
- int a[N], i, top, bott, loca, flag = 1, sign, number, mid;
- char c;
-
- //填充数据;
- a[0] = 1;
- i = 1;
- //循环填充数;
- while (i < N)
- {
- //填充;
- printf("a[%d]=", i);
- scanf("%d", &a[i]);
-
- //判断;
- if (a[i] >= a[i - 1])
- {
- //改变变量值;
- i++;
- }
- else
- {
- //提示用户;
- printf("您输入的数据不符合要求!!!\n");
- printf("请重新输入:\n");
- }
- }
-
- //换行;
- printf("\n");
-
- //循环打印数组;
- for (i = 0; i < N; i++)
- {
- //打印;
- printf("%5d", a[i]);
- }
-
- //换行;
- printf("\n");
-
- //判断数据是否在数组中;
- while (flag)
- {
- //获取数据;
- printf("请输入您要查找的数据:");
- scanf("%d", &number);
-
- //赋值;
- sign = 0;
- top = 0;
- bott = N - 1;
-
- //判断数据是否在数组内;
- if ((number < a[0]) || (number > a[N - 1]))
- {
- //改变变量值;
- loca = -1;
- }
- else
- {
- //折半查找;
- while ((sign == 0) && (top <= bott))
- {
- //求出中间下标值;
- mid = (top + bott) / 2;
-
- //比较;
- if (number == a[mid])
- {
- //改变变量值;
- loca = mid;
- sign = 1;
-
- //输出值;
- printf("您输入的数据%d在数组中是第%d个元素值\n", number, loca + 1);
- }
- else if (number < a[mid])
- {
- //改变变量值;
- bott = mid - 1;
- }
- else
- {
- //改变变量值;
- top = mid + 1;
- }
-
- }
- }
-
- //判断;
- if ((sign == 0) || (loca == -1))
- {
- //输出结果;
- printf("您输入的数值%d在数组中无结果!!!\n", number);
- }
-
- //是否结束程序;
- printf("是否要结束查找?(Y/N)\n");
- scanf(" %c", &c);
-
- //判断;
- if (c == 'N')
- {
- //改变变量值;
- flag = 0;
- }
- }
-
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。