| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1989 人关注过本帖
标题:查找某个数字是否在数组中程序运行问题
只看楼主 加入收藏
csy294745333
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2012-3-27
结帖率:9.09%
收藏
已结贴  问题点数:10 回复次数:6 
查找某个数字是否在数组中程序运行问题
#include<stdio.h>
#define N 10
main()
{
      int a[N];
      int mid,low=1,high=N,x,index=-1,found=0;

      int b[10],i,j,temp,n=0,m=0;
      printf("Please input ten numbers:\n");
      for(i=1;i<=10;i++)
      scanf("%d",&b[i]);
      for(j=1;j<=9;j++)
        for(i=1;i<=10-j;i++)
        {m++;
        if(b[i]>b[i+1])
        {
                       temp=b[i];
                       b[i]=b[i+1];
                       b[i+1]=temp;
        n++;
        }
        }
        printf("Output ten numbers:\n");
        for(i=1;i<=10;i++)
        printf("%6d",b[i]);
        printf("\nHave %d exchanging\n",n);
        printf("Have %d compare\n",m);

      printf("Input search date\n");
      scanf("%d",&x);
      mid=(low+high)/2;
      while(low<=high&&found!=1)
      {
                                if(x==a[mid])
                                {
                                             found=1;
                                             index=mid;
                                }
                                else if(x<a[mid])
                                high=mid-1;
                                else
                                low=mid+1;
                                mid=(low+high)/2;
      }
      if(found)
      printf("%d is on %d \n",x,index);
      else
      printf("No found");
system("pause");
}



为什么输入的数字(不论是数组里面有没有的数字)都说不载数组内?是数组排列部分的%6d的问题?%6d改成%d\t也找不到数字,为什么?哪错了?
搜索更多相关主题的帖子: 问题 mid include numbers 
2012-04-20 20:01
MRPutin
Rank: 2
等 级:论坛游民
帖 子:21
专家分:43
注 册:2012-3-28
收藏
得分:5 
数组b的下表从0开始,你这个数组溢出了;

*          坚持与积累成就C语言王者之路      *
2012-04-20 20:14
MRPutin
Rank: 2
等 级:论坛游民
帖 子:21
专家分:43
注 册:2012-3-28
收藏
得分:0 
你最好加点注释,我理不清你的本意是什么

*          坚持与积累成就C语言王者之路      *
2012-04-20 20:15
csy294745333
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2012-3-27
收藏
得分:0 
以下是引用MRPutin在2012-4-20 20:15:35的发言:

你最好加点注释,我理不清你的本意是什么
先任意输入是个数字,之后对十个数字进行排序,从大到小,之后任意输入一个数字检查该数字是否为 数列中的数字
2012-04-20 20:21
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:5 
老兄我是服了你哦,你要看看你把数据存储在哪个数组?你定义两个数组但是你查找的数组写错了,你应该将while循环里面的数组换为b[N]数组,这样就OK
程序代码:
[code] while(low<=high&&found!=1)
      {
             mid=(low+high)/2;                
          if(x==b[mid])
               {
                    found=1;
                    index=mid;
                    break;
               }
            else 
                if(x<b[mid])
                {
                    high=mid-1;
                    printf("%d",a[high]);
                }

                else
                 low=mid+1;
            mid=(low+high)/2;
      }
[/code]
2012-04-20 20:52
csy294745333
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2012-3-27
收藏
得分:0 
以下是引用爱闹的娃在2012-4-20 20:52:54的发言:

老兄我是服了你哦,你要看看你把数据存储在哪个数组?你定义两个数组但是你查找的数组写错了,你应该将while循环里面的数组换为b[N]数组,这样就OK while(low<=high&&found!=1)
      {
             mid=(low+high)/2;                 
          if(x==b[mid])
               {
                    found=1;
                    index=mid;
                    break;
               }
            else  
                if(x
好吧,谢谢你了,我新手,,有时候就把自己弄晕了,3Q
2012-04-20 21:30
MRPutin
Rank: 2
等 级:论坛游民
帖 子:21
专家分:43
注 册:2012-3-28
收藏
得分:0 
被你带沟里去了,输入数组是b处理的数组是a.哎,惭愧

#include<stdio.h>
#define N 10
void main(void)
{
      int a[N];
      int mid;
      int low=0;
      int high=9;
      int x;
      int index;
      int found=0;

      int b[10];
      int i;
      int j;
      int temp;
      int n;
      int m=0;

      printf("Please input ten numbers:\n");
      for(i=0;i<10;i++)
      {
            scanf("%d",&b[i]);
      }
          for(j=0;j<10;j++)
          {
              for(i=0;i<10-j;i++)
              {
      
                {
                    m++;
                    if(b[i]<b[i+1])
                    {
                         temp=b[i];
                         b[i]=b[i+1];
                         b[i+1]=temp;
                         n++;
                    }
                }
              }
          }
        printf("Output ten numbers:\n");
        for(i=0;i<10;i++)
        {
            printf("%6d",b[i]);
        }
        
        printf("\nHave %d exchanging\n",n);
        printf("Have %d compare\n",m);

      printf("Input search date\n");
      scanf("%d",&x);
      printf("input x=%d\n",x);
      mid=(low+high)/2;
      while((low<=high)&&(found!=1))
      {

           if(x==b[mid])
              {
                  found=1;
                  index=mid;
              }
           else if(x>b[mid])
           {
              high=mid-1;
                 mid=(low+high)/2;
           }
           else
           {
              low=mid+1;
                 mid=(low+high)/2;
           }
         
         
      }
      if(found)
        printf("%d is on %d \n",x,index);
      else
        printf("No found");
    //system("pause");
      //return 0;
}



*          坚持与积累成就C语言王者之路      *
2012-04-20 22:17
快速回复:查找某个数字是否在数组中程序运行问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018395 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved