回 帖 发 新 帖 刷新版面

主题:C语言

麻烦帮我找出错误,谢了


Description
已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
Input
第一行,原始数列。第二行,需要插入的数字。
Output
排序后的数列
Sample Input
#include<stdio.h>
main()
{
    int b,i,j,a[10];
    for(i=0;i<0;i++)
        scanf("%d",&a[i]);
        scanf("%d",&b);
        for(i=0;i<9;i++)
        {
            if(b>=a[i]&&b<=a[i+1])
            {
                a[i+1]=b;
                break;
            }
        }
        for(j=0;j<10;j++)
            printf("%d",a[j]);
        return 0;
}

回复列表 (共2个回复)

沙发

#include<stdio.h>
main()
{
    int b,i,j,a[10];
    for(i=0;i<0;i++)   //for(i=0;i<9;i++)
        scanf("%d",&a[i]);
        scanf("%d",&b);
        for(i=0;i<9;i++)           //插入部分有问题,插入后应该有10个元素了。应该i<10,其
        {                              次这段代码有问题,比如原来是1 2 3 4 5 6 7 9 10,你
            if(b>=a[i]&&b<=a[i+1])      想插入数字8,即b==8   if(b>=a[6] && b <=a[7])
            {                              a[7]=b=8;break; 结束循环,9被“删除”                 a[i+1]=b;            
                break;
            }
        }
        for(j=0;j<10;j++)
            printf("%d",a[j]);
        return 0;
}


自己写的代码,看一下吧:
#include<stdio.h>
int main()
{
    int b,i,j,a[10];

    for(i=0; i<9; i++)  //输入9个元素
        scanf("%d",&a[i]);

    scanf("%d",&b);

    for(i=8; i>=0; i--)//从数组走后一个元素开始判断
    {
        if(b<=a[i])
            {
                a[i+1]=a[i];

                if(i==0)  //若插入的位置是第一个数是用到这句
                  a[i]=b;
            }
        else
            {
            a[i+1]=b;
            break;
            }
    }

    for(j=0; j<10; j++)
        printf("%d ",a[j]);

    return 0;
}

板凳

根据你的代码改了下,你的代码交换数的原则就错了。
#include<stdio.h>
int main(void)
{
    int b,i,j,a[10];
        printf("请输入9个从小到大排列的整数:");
        for(i=0;i<9;i++)
        scanf("%d",&a[i]);
        printf("\n你输入的数为:\n");
        for(i=0;i<9;i++)
            printf("%d\t",a[i]);
        printf("\n请输入要插入的数:");
        scanf("%d",&b);
        for(i=0;i<9;i++)
        {
            if(b>=a[i]&&b<=a[i+1])
            {
                for(j=10;j>i;--j)
                    a[j]=a[j-1];
                    a[i+1]=b;
                    break;
            }
        }
        printf("重新排好序的数为:\n");
        for(j=0;j<10;j++)
            printf("%d\t",a[j]);
            printf("\n");
            getchar();
            getchar();
        return 0;
}

我来回复

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