注册 登录
编程论坛 C++教室

为什么查不出数来啊?

小J 发布于 2009-09-08 22:47, 304 次点击
#include <iostream>
using namespace std;
#define N 10



void print_maopao(int a[])
{
    int i;
    cout<<"排序的结果是:"<<endl;
    for(i=0;i<N;i++)
        cout<<a[i]<<endl;
}
void maopao(int a[])
{
    int i,j,k;
    for(i=0;i<=N-1;i++)
        for(j=0;j<=N-i-1;j++)
            if(a[j]>a[j+1])
            {
                k=a[j];
                a[j]=a[j+1];
                a[j+1]=k;
            }
}
int chazhao(int a[],int num)
{
    int start=0,end=N-1,mid;
    int flag=0;
    mid=(start+end)/2;
    do{
        if(num>a[mid])start=mid+1;
        else if(num<a[mid])end=mid-1;
        else
        {
            flag=1;
            break;
        }
    }while(start<=end);
        if(flag==1)
        {
            cout<<"找到这个数在mid+1上"<<mid+1<<endl;
            return(mid+1);
        }
        else
        {
            cout<<"找不到该数!"<<endl;
            return(0);
        }
}
void main()
{
    int a[N],num;
    int i;
    cout<<"请输入十个数:"<<endl;
    for(i=0;i<N;i++)
    cin>>a[i];
    maopao(a);
    print_maopao(a);
    cout<<"请输入你要查找的数:"<<endl;
    cin>>num;
    chazhao(a,num);
}
4 回复
#2
choco10242009-09-08 23:58
好着在啊,我这运行正确着在,VC++6.0的编译器。
#3
小J2009-09-09 07:45
回复 2楼 choco1024
但是最后要查一个数的时候它没结果啊,既不显示查的到也不显示查不到!
#4
forclwy2009-09-09 19:43
我运行了了有结果呢
#5
qlc002009-09-16 18:15
#include <iostream>
using namespace std;
#define N 10
 
 
 
void print_maopao(int a[])
{
    int i;
    cout<<"排序的结果是:"<<endl;
    for(i=0;i<N;i++)
        cout<<a[i]<<endl;
}
void maopao(int a[])
{
    int i,j,k;
    for(i=0;i<=N-1;i++)
        for(j=0;j<=N-i-1;j++)
            if(a[j]>a[j+1])
            {
                k=a[j];
                a[j]=a[j+1];
                a[j+1]=k;
            }
}
int chazhao(int a[],int num)
{
    int start=0,end=N-1,mid;
    int flag=0;
    mid=(start+end)/2;
    do{
        if(num>a[mid])start=mid+1;
        else if(num<a[mid])end=mid-1;
        else
        {
            flag=1;
            
        }  
        if(flag==1)
        {
            cout<<"找到这个数在"<<mid+1<<"这个位置上"<<endl;
            return(mid+1);
        }
        else
        {
            cout<<"找不到该数!"<<endl;
            return(0);
        }
    }while(start<=end);
        
}
void main()
{
    int a[N],num;
    int i;
    cout<<"请输入十个数:"<<endl;
    for(i=0;i<N;i++)
    cin>>a[i];
    maopao(a);
    print_maopao(a);
    cout<<"请输入你要查找的数:"<<endl;
    cin>>num;
    chazhao(a,num);
}
这个运行时正确的,你的if(flage==1)应该放在循环里面
1