我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 求修改一个程序? 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

violin



性别: 帅哥 状态: 该用户目前不在线
头衔: ★宁静以致远★
等级: 荣誉会员
家族: 水族馆
发贴: 5630
威望: 3
浮云: 380
在线等级:
注册时间: 2007-10-04
最后登陆: 2008-06-12

5come5帮你背单词 [ balloon /bə'lu:n/ n. 气球 ]


求修改一个程序?

题目是:有15个数按由小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值.
注:此程序可以运行,但执行结果不对.程序不执行以下语句:scanf("%c,&c");或者说程序默认为Y.

#include "stdio.h"
#define N 15
main()
{
int i,j,number,top,bott,mid,loca,a[N],flag=1,sign=1;
char c;
printf("Enter data:\n");
scanf("%d",&a[0]);
i=1;
while(i<N)
  {
      scanf("%d",&a);
      if(a>=a[i-1])
       i++;
      else
         printf("Enter this data again:");
  }
printf("\n");
for(i=0;i<N;i++)
  printf("%4d",a);
printf("\n");
flag=1;
while(flag)
  {
      printf("Input number to look for:");
      scanf("%d",&number);
      loca=0;
      top=0;
      bott=N-1;
      if((number<a[0]) || (number>a[N-1]))
       loca=-1;
      while((sign==1) && (top<=bott))
       {
           mid=(bott+top)/2;
           if(number==a[mid])
            {
                loca=mid;
                printf("Find %d,its position is %d\n",number,loca+1);
                sign=0;
            }
           else if(number<a[mid])
                bott=mid-1;
                else
            top=mid+1;
       }
  if(sign==1 || loca==-1)
    printf("%d is not found.\n",number);
  printf("Continue or not(Y/N)?");
  scanf("%c",&c);
  if(c=='N' || c=='n')
    flag=0;
    }
}
顶端 Posted: 2008-04-02 10:49 | [楼 主]
wwj19871111




性别: 保密 状态: 该用户目前不在线
等级: *
发贴: *
威望: *
浮云: *
在线等级:
注册时间: *
最后登陆: *

5come5帮你背单词 [ arouse /ə'rauz/ vt. 唤醒,叫醒,唤起,激起 ]


scanf("%d",&a);
这句错了,如果a是一个数组,那么a就不需要&;
改为scanf("%d",&a[ i ]);
顶端 Posted: 2008-04-02 11:42 | 美国 [1 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.009469(s) query 5, Time now is:11-22 00:52, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号