| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 585 人关注过本帖
标题:请大家帮忙看看我的程序
只看楼主 加入收藏
cwde
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-3-31
结帖率:33.33%
收藏
 问题点数:0 回复次数:8 
请大家帮忙看看我的程序
题目是这样的:有15个数按大由小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该组中第几个元素的值.
我是这样写的:
#include <stdio.h>
void main()
{
    int n=14,i,m,a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
    scanf("%d",&m);
        for(i=0;i<5;i++)
        {
            if(a[n]>m)
            {n=n/2;continue;}
            if(a[n]<m)
            {n=n+n/2;continue;}
            if(a[n]=m)
            {printf("%d is n,%d is m",n,m);break;}}}

我想象中的折变查找法应该是这样的,但是运行后完全不对,想问下大家我的程序错在哪里,多谢各位高手啊

搜索更多相关主题的帖子: 元素 
2011-04-23 12:38
王立帅
Rank: 3Rank: 3
来 自:山东淄博
等 级:论坛游侠
帖 子:61
专家分:160
注 册:2011-4-4
收藏
得分:0 
你完全理解错了,用笔算一下就知道你错在哪儿了

一个人走
2011-04-23 13:19
dengjinbao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:64
专家分:119
注 册:2011-3-22
收藏
得分:0 
程序代码:
#include <stdio.h>
void main()
{
    int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
    int m,low,mid,higth;
    low = 0;
    higth= 14;
    mid = (low+higth)/2;
    scanf("%d",&m);
    for(int i=0;low<=higth;i++)
    {
        if(a[mid]>m)
        {low=mid+1;
        mid =(low+higth)/2; }
        else if(a[mid]<m)
        {higth = mid-1;
        mid =(low+higth)/2; }
        else if  (a[mid]== m)
        {
            printf("%d position is %d",m,mid);
            break;
        }
       
    }
}
2011-04-23 13:38
cwde
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-3-31
收藏
得分:0 
我把if(a[n]=m)改成了if(a[n]==m)
运行后就正常了,不知道2L你说的理解错是错在哪里?
2011-04-23 13:38
懂也不懂
Rank: 4
等 级:业余侠客
威 望:2
帖 子:73
专家分:224
注 册:2010-12-1
收藏
得分:0 
初学者吧,一定注意if里面如果是表达式的要是“布尔表达式”,而不能是赋值表达式;否则哈哈,你想想吧。。。。
2011-04-23 14:17
王立帅
Rank: 3Rank: 3
来 自:山东淄博
等 级:论坛游侠
帖 子:61
专家分:160
注 册:2011-4-4
收藏
得分:0 
回复 4楼 cwde
能得到你像要的结果吗。你输入3试一下能得到什么结果。

一个人走
2011-04-23 20:23
王立帅
Rank: 3Rank: 3
来 自:山东淄博
等 级:论坛游侠
帖 子:61
专家分:160
注 册:2011-4-4
收藏
得分:0 
看一下3楼的程序看你理解错误在哪儿,第二个if语句,输入3之后 n的值变成什么了

一个人走
2011-04-23 20:25
zousjun
Rank: 2
等 级:论坛游民
帖 子:3
专家分:12
注 册:2011-4-23
收藏
得分:0 
你对
2011-04-23 20:46
林发扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:56
注 册:2011-4-12
收藏
得分:0 
if(a[n]=m)这里应该是==m
2011-04-24 10:21
快速回复:请大家帮忙看看我的程序
数据加载中...
 
   



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

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