大神们 帮我解决这个C语言问题吧

[复制链接]
查看11 | 回复1 | 2011-5-11 07:49:16 | 显示全部楼层 |阅读模式
问题是:输入10个数然后让他们从小到大排列,之后再插入一个数,排列顺序不变..........
这是我编的,但有漏洞
#includestdio.h
main()
{
        inti,j,k=0,t,a[10];
        for(i=0;i10;i)scanf(\"%d\",
        printf(\"\\n\");
        for(j=0;j9;j)
                for(i=0;i9-j;i)
                        if(aa[i1])
                        {t=a;
                        a=a[i1];
                        a[i1]=t;
                        }
                        for(i=0;i10;i)printf(\"=\",a);
                        printf(\"\\n\");
                        scanf(\"%d\",
                        for(i=0;i10;i)
                        if(kaa[i1]a[0])
                                {t=k;
                                k=a[i1];
                                a[i1]=t;
                                }
                        for(i=0;i10;i)printf(\"=\",a);
                        printf(\"=\\n\",k);
                        printf(\"1000140130\\n\");
}

漏洞是假如插入的数小于第一个数,那就不行了,帮我看看,怎样才能改对了,谢谢了
回复

使用道具 举报

千问 | 2011-5-11 07:49:16 | 显示全部楼层
明显数组越界,你一开始定义的数组大小是10,输入10个数后,数组满了,再插一个明显越界。
#includestdio.h
voidmain()
{
        inti,j,k=0,t,a[10];
        for(i=0;i10;i)scanf(\"%d\",
        printf(\"\\n\");
        for(j=0;j9;j)
                for(i=0;i9-j;i)
                        if(aa[i1])
                        {t=a;
                        a=a[i1];
                        a[i1]=t;
                        }
        for(i=0;i10;i)printf(\"=\",a);
                printf(\"\\n\");
        scanf(\"%d\",
        if(k=a[0])
        {
                printf(\"=\",k);
                for(i=0;i10;i)printf(\"=\",a);
        }
        elseif(k=a[9])
        {
                for(i=0;i10;i)printf(\"=\",a);
                printf(\"=\",k);
        }
        else
        {
                for(i=0;i9;i)
                {
                        if(kaa[i1])
                        {
                                break;
                        }
                }
                for(intt=0;t=i;t)
                        printf(\"=\",a[t]);
                printf(\"=\",k);
                for(intt=i1;t10;t)
                        printf(\"=\",a[t]);
        }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行