supersuperna123 2016-03-23 14:06 采纳率: 100%
浏览 1431
已采纳

杭电c入门简单问题 求指导一下

题目如下
输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。

Input
输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。

Output
对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行。

Sample Input
3 3 -4 2
4 0 1 2 -3
0

Sample Output
-4 3 2
-3 2 1 0

Author
lcy

Source

我编的代码如下

**#include

int main()

{

int n;

int a[1000];

int b[1000];

int c[1000];

int i;

int h;

int q;

int k;

while(scanf("%d",&n)!=EOF)

{

for(i=0;i<n;i++)

{

scanf("%d",&a[i]);

}

for(i=0;i<n;i++)

{

if(a[i]<0)

{

b[i]=-1*a[i];

}

else

{

b[i]=a[i];

}

}

h=0;

q=0;

for(k=1;k<=n;k++)

{

for(i=1;i<n;i++)

{

if(b[h]<b[i])

{

h=i;

}

}

c[q]=b[h];

if(c[q]==a[h])

{

if(q!=n)

{

printf("%d ",c[q]);

}

if(q==(n-1))

{

printf("%d\n",c[q]);

}

}

if(c[q]!=a[h])

{

c[q]=-1*c[q];

if(q!=n)

{

printf("%d ",c[q]);

}

if(q==(n-1))

{

printf("%d\n",c[q]);

}

}

b[h]=0;

h=0;

q=q+1;

}

}

return 0;

}**

问题是我最后输出的时候老是多输出最后一个数字,如我输入3 -4 5 1 输出的应该是5 -4 1但是我的是5 -4 1 1 不太明白最后的1 在哪里输出的求大神帮忙看看那里的问题应该如何解决谢谢了

  • 写回答

2条回答

  • 林深 2016-03-23 14:59
    关注

    下面这两个判断有重复的地方,当q=n-1的时候两个都会满足

     if(q!=n)
                    {
                        printf("%d ",c[q]);
                    }
                    if(q==(n-1))
                    {
                        printf("%d\n",c[q]);
                    }
    

    应该改为

     if(q!=n-1)
                    {
                        printf("%d ",c[q]);
                    }
                    if(q==(n-1))
                    {
                        printf("%d\n",c[q]);
                    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况