回 帖 发 新 帖 刷新版面

主题:帮我看一下这个程序有什么错误?

#include<iostream.h>



void insert(int u[],int v,int w)
{
    if(v==0)
        u[0]=w;
    else
        if(u[v]>=w)
        {
            u[v+1]=w;
            v++;
        }
        else
        {
            int k=v;
            while(v>=0&&w>u[v])
                k--;
            for(int i=v;i>=k;i--)
                u[i+1]=u[i];
            u[k]=w;
        }
}

void main()
{
    int a[5];
    int f;
    cout<<"Input 5 numbers:"<<endl;
    for(int i=0;i<=4;i++)
        cin>>a[i];
    cin>>f;
    insert(a,f,10);
        for(int j=0;j<f;j++)
            cout<<" "<<a[j];
}

                    

回复列表 (共2个回复)

沙发


兄弟,真不知道你这个程序要干什么,但有很明显的两处错误就是数 组的益处,

还有就是你的程序是一个死循环,好好看一下 改改吧!!


[em9][em9][em9]

板凳

我认为你是要做插入排序,所以这么改的,如果和你的程序本意不符,只能说
while(v>=0&&w>u[v])
                k--;
要注意,是死循环,你的意思我理解是
 while(k>=0&&w>u[k])
                k--;

还有对于越界处理一点都没有,cin>>f; 
    insert(a,f,10);输入的f 一定注明他的边界 //0<=f<4
**************************************************************
#include<iostream.h>



void insert(int u[],int v,int w)
{
    if(v==0)
        u[0]=w;
    else
        if(u[v]<=w)
        {
            u[v+1]=w;
            v++;
        }
        else 
        {
            int k=v;
            while(k>=0&&w>u[k])
                k--;
            for(int i=v;i>k;i--)
                u[i+1]=u[i];
            u[k]=w;
        }
}

void main()
{
    int a[5];
    int f;
    cout<<"Input 5 numbers:"<<endl;
    for(int i=0;i<=4;i++)
        cin>>a[i];
    cin>>f;//0<=f<4
    insert(a,f,10);
        for(int j=0;j<f;j++)
            cout<<" "<<a[j];
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册