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条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?