鱼C论坛

 找回密码
 立即注册
查看: 4193|回复: 2

新手数组问题求解

[复制链接]
发表于 2013-1-20 14:11:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
输入一个数然后查找这个数
#include<stdio.h>
#define M 10
void main()
{
        static a[10] = {-12, 0, 6, 16, 23, 56, 80, 100, 110, 115};
        int low, high, mid, found, num;
        printf("请输入一个要查找的数:");

        low = 0;
        high = M - 1;
        found = 0;
       
        while (scanf("%d", &num) != 1)
        {
                scanf("%d", &num);
                getchar();
                printf("非法输入:\n请再输入一次:\n");
               
        }


        while(low <= high)
        {
                mid = (low + high)/2;
                if(num == a[mid])
                {
                        found = 1;
                        break;
                }

                else if(num < a[mid])
                {
                        high =  mid - 1;
                }
                else
                {
                        low = mid + 1;
                }
        }

        if(1 == found)
        {
                printf("%d是数组中第%d个数\n", num,  mid+1);
        }
        else
        {
                printf("数组中没有这个数\n");
        }
}


为什么输入-12找不到呢?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-20 17:05:44 | 显示全部楼层
#include<stdio.h>
#define M 10
int main()
{
         static int a[10] = {-12, 0, 6, 16, 23, 56, 80, 100, 110, 115};
         int low, high, mid, found, num;
         printf("请输入一个要查找的数:");

         low = 0;
         high = M - 1;
         found = 0;
         
         while (scanf("%d", &num) != 1)
         {
                 scanf("%d", &num);
                 getchar();
                 printf("非法输入:\n请再输入一次:\n");
                 
         }


         while(low <= high)
         {
                 mid = (low + high)/2;
                 if(num == a[mid])
                 {
                         found = 1;
                         break;
                 }

                 else if(num < a[mid])
                 {
                         high =  mid - 1;
                 }
                 else
                 {
                         low = mid + 1;
                 }
         }

         if(1 == found)
         {
                 printf("("%d是数组中第%d个数\n", num,  mid+1);
         }
         else
         {
                 printf("数组中没有这个数\n");
         } return 0;
}


小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-21 20:40:39 | 显示全部楼层
还是不行啊!
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-9 00:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表