杭电acm2019数组解法提交上去一直提示wrong answer请问哪里错了???

#include<stdio.h>#defineM100intmain(){intn,m,a[M],i,j,t;while(scanf("%d%d",&n,&m)!=EO... #include<stdio.h>
#define M 100
int main()
{
int n,m,a[M],i,j,t;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(m==0&&n==0)break;
else
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
if(m<a[0])
{
for(j=n;j>=1;j--)
a[j]=a[j-1];
a[0]=m;
}else if(m>a[n-1])a[n]=m;
else
{
for(i=0;i<n;i++)
if(a[i]<m&&a[i+1]>m)
{
for(j=n;j>=i+2;j--)
a[j]=a[j-1];
a[j]=m;
break;
}
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("%d\n",a[n]);
}

}

}
展开
 我来答
renshijie1018
2014-02-05 · TA获得超过1006个赞
知道小有建树答主
回答量:1063
采纳率:94%
帮助的人:949万
展开全部
这是你的算法问题,这个自己解决吧
其实只要将值放在最后面,然后再排个序 就行了或者做一下输出控制就行了。
我这里给你参考一个第一种ac码,还有个第二种的码 想到的。
#include<stdio.h>
int main()
{int t,f[55],i,j,n,a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a==0&&b==0)
break;
for(i=0;i<a;i++)
scanf("%d",&f[i]);
f[a]=b;
n=a;
while(n--)
{
for(j=1;j<n+1;j++)
{
if(f[j]>f[j+1])
{t=f[j];f[j]=f[j+1];f[j+1]=t;}
}
}for(i=0;i<a;i++)
printf("%d ",f[i]);
printf("%d\n",f[i]);
}return 0;
}

还有一个:
#include<stdio.h>
int main()
{int t,f[55],i,j,n,a,b, Bflag;
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a==0&&b==0)
break;
for(i=0;i<a;i++)
scanf("%d",&f[i]);
Bflag=0;
for(i=0;i<a;i++)
{
if(i==0)

{
if(f[i]>b)
{
printf("%d %d", b, f[i]);
Bflag=1;
}
else printf("%d", f[i]);
}
else if(f[i]>b)
{
printf(" %d %d", b, f[i]);
Bflag=1;
}
else
{
printf(" %d", f[i]);
}
if(!flag) printf(" %d");
printf("\n")
}
}return 0;
}
追问
你的解法真的很棒。。。但不是我想要的结果,仍然谢谢你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nanhay
2014-02-06 · TA获得超过1173个赞
知道小有建树答主
回答量:824
采纳率:0%
帮助的人:997万
展开全部

//*******************************************************************
//  杭电2019                数列有序!      代码已AC
//  遗漏一个等号,序列中可能有 与m 相等的数 
//*******************************************************************
#include<stdio.h>
#define M 100
int main()
{
    int n, m, a[M], i, j, t;
    while(scanf("%d%d", &n, &m) != EOF)
    {
        if(m == 0 && n == 0)
            break;
        else
        {
            for(i = 0; i < n; i++)
                scanf("%d", &a[i]);
            if(m < a[0])
            {
                for(j = n; j >= 1; j--)
                    a[j] = a[j - 1];
                a[0] = m;
            }
            else if(m > a[n - 1])
                a[n] = m;
            else
            {
                for(i = 0; i < n; i++)
                    if(a[i] <= m && a[i + 1] > m)    //遗漏一个等号 
                    {
                        for(j = n; j >= i + 2; j--)
                            a[j] = a[j - 1];
                        a[j] = m;
                        break;
                    }
            }
            for(i = 0; i < n; i++)
                printf("%d ", a[i]);
            printf("%d\n", a[n]);
        }
    }
}
//*******************************************************************
//  祝学习进步,更上一层楼 *(^-^)*
//*******************************************************************
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式