| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 375 人关注过本帖
标题:将数字插入有序排放的数列 vc中对 OJ上错
只看楼主 加入收藏
aing321
Rank: 2
等 级:论坛游民
帖 子:31
专家分:23
注 册:2013-1-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
将数字插入有序排放的数列 vc中对 OJ上错
输入一个数到有序排放的数列中,插入后,数列仍然有序

#include
#include
int main(){
    int i,m,n,*a;
    while(scanf("%d%d",&n,&m)!=EOF){
        if(m==0&&n==0) break;
        a=(int *)malloc(sizeof(int) *n);
        for(i=0;i<N;I++)
        scanf("%d",a+i);
        if(m<=a[0]) {
            printf("%d",m);
            for(i=0;i<N;I++)
            printf(" %d",a[i]);
            printf("\n");
        }
        else {
            for(i=n;i>=0;i--){
                if(m<A[I-1]) A[I]=A[I-1];
                else {
                    a[i]=m;
                    break;
                }
            }
            printf("%d",a[0]);
            for(i=1;i<=n;i++)
            printf(" %d",a[i]);
            printf("\n");
        }
    }
    return 0;
}
搜索更多相关主题的帖子: include 
2013-01-30 18:53
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:20 
目测你存在以下问题。
1、动态申请的空间没有释放
2、动态申请的空间不够

其实这个问题用不着数组,试试这段代码
程序代码:
#include<stdio.h>
int main()
{
    int n, m, t;
    for(; scanf("%d%d", &n, &m), (n || m); puts(""))
    {
        for(; n && (scanf("%d", &t), t <= m); n--) printf("%d ", t);
        printf("%d", m);
        for(n ? (printf(" %d", t), n--) : 0 ; n--; printf(" %d", t)) scanf("%d", &t);
    }
    return 0;
}

重剑无锋,大巧不工
2013-01-31 08:33
aing321
Rank: 2
等 级:论坛游民
帖 子:31
专家分:23
注 册:2013-1-30
收藏
得分:0 
回复 2楼 beyondyf
动态空间一定要释放吗   不应该会覆盖掉吗???
动态空间的大小是少了一个吗?
还有这段代码看得我好吃力。。。。

天行健君子以自强不息 地势坤君子以厚德载物
2013-02-01 14:02
aing321
Rank: 2
等 级:论坛游民
帖 子:31
专家分:23
注 册:2013-1-30
收藏
得分:0 
回复 2楼 beyondyf
代码看的差不多懂了   但在第二个for里面的输入如果中间是空格的话倒还一样   但如果是用回车来表示的话差好多。。。   
还有一个问题   最后的那个scanf有什么用?  

天行健君子以自强不息 地势坤君子以厚德载物
2013-02-01 14:48
aing321
Rank: 2
等 级:论坛游民
帖 子:31
专家分:23
注 册:2013-1-30
收藏
得分:0 
回复 2楼 beyondyf
    忽然发现  最后一个的scanf懂了。。。   不小心傻了会

天行健君子以自强不息 地势坤君子以厚德载物
2013-02-01 14:51
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
呵呵,看懂就好。这个问题的重点只在格式控制。我的代码中以插入值为分割点将输出序列划分成三部分:

1、插入值前的序列。其格式是值后加一空格
2、插入值本身。这一个元素前后都无空格
3、插入值后的序列。其格式是值前加一空格

我2楼的代码就当是文言文好了,楼主既然这么认真地在学习,那再送一段白话文的吧。算法、效率等与2楼的完全一样,只是表述不同而已。
程序代码:
#include<stdio.h>

int main()
{
    int n, m, i, t;
    for(;;)
    {
        scanf("%d%d", &n, &m);
        if(n == 0 && m == 0) break;
        for(i = 0; i < n; i++)
        {
            scanf("%d", &t);
            if(t > m) break;
            printf("%d ", t);
        }
        printf("%d", m);
        if(i < n) printf(" %d", t);
        for(i++; i < n; i++)
        {
            scanf("%d", &t);
            printf(" %d", t);
        }
        printf("\n");
    }
    return 0;
}

重剑无锋,大巧不工
2013-02-01 18:14
aing321
Rank: 2
等 级:论坛游民
帖 子:31
专家分:23
注 册:2013-1-30
收藏
得分:0 
回复 6楼 beyondyf
多谢  
这个就容易看多了   
2楼的代码一开始看的很纠结
只不过我习惯把第一个的for换成while的形式

天行健君子以自强不息 地势坤君子以厚德载物
2013-02-01 21:36
快速回复:将数字插入有序排放的数列 vc中对 OJ上错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034554 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved