| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 685 人关注过本帖
标题:求教一个c程序的问题
取消只看楼主 加入收藏
summerpopoha
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-2-23
收藏
 问题点数:0 回复次数:2 
求教一个c程序的问题

有15个数按由大到小的顺序存放在一个数组中,输入一个数,用折半法查找该数是数组中第几个元素的值
现在编了下面的程序:

main()
{
int str[15],i,j,p;
for (i=0;i<15;i++)
str[i]=15-i;
scanf("%d",&p);
if(p>15||p<1)
printf("the number is not here!");

for(i=0,j=14;i<=j;)
{if (p<str[(i+j)/2])
i=(i+j)/2;

else if(p>str[(i+j)/2])
j=(i+j)/2;
else
{printf("it is the %d number",1+(i+j)/2);break;}
}
}
15到2每个数字均是正确的,但是输入1,却没有结果,好像进入死循环了
不知何故
大侠请赐教

搜索更多相关主题的帖子: str number 
2006-02-23 13:24
summerpopoha
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-2-23
收藏
得分:0 

mid=(low+high)/2,若low+high是奇数的话,
会进行取整运算,再进行加一或者减一运算会不会把数字露掉??


2006-02-23 14:03
summerpopoha
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-2-23
收藏
得分:0 

就是的
现在明白了
咱们改啊?


2006-02-23 16:32
快速回复:求教一个c程序的问题
数据加载中...
 
   



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

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