2 supersuperna123 supersuperna123 于 2016.03.23 22:06 提问

杭电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个回答

leilba
leilba   Rxr 2016.03.23 22: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]);
                }
supersuperna123
supersuperna123   2016.03.24 19:33

谢谢您的回答 谢谢了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
杭电 线段树 (个人整理(基础入门版))(多题练习.)(简单风格)
整理了很多杭电上边的题.也从其他很多博客那里学会了新的东西,一时兴起 整理出来留给大家. 首先介绍一下自己的线段树风格: int tree[](树) #define lson l,m,rt*2//左子树模板. #define rson m+1,r,rt*2+1//右子树模板. 看了很多博客写的线段树的教学 感觉大多数都是用结构体来构建节点的,但是怎么看都感觉并不是那么简洁(我的强
HDU2029 Palindromes _easy version【入门】
Palindromes _easy version Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 46193    Accepted Submission(s): 27965 Problem Description “回
递归系列之入门水题一
递归系列之入门水题一 对于递归我的感觉就是找到f(n)与前面f(n-1)等等的关系,最后拿出一个式子,这就是我理解的递归的方法,至于怎么找到关系列出式子就是难点了也就是怎么找递归方程了。 还有一点要注意的是,递归的结果一般都很大,所以尽量定义为long long形;防止溢出; 1;杭电2041超级楼梯; 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,
简单的深搜题
刚介入深搜题时,一定要搞清它的过程。有个笨的方法,可以试试,代入数据看。
杭电ACM1027(全排列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1027 题目大意:给出一个n和一个m,要求求出数列1,2,3……n的第m个全排列 解题思路:字典序全排列,今天突然发现C++的algorithm函数库里已经实现了求下一个和上一个字典序全排列的函数,于是直接使用next_permutation函数解决。使用方法为:next_permutation(n
杭电ACM 2039: 三角形
原题回顾Problem Description 给定三条边,请你判断一下能不能组成一个三角形。 Input 输入数据第一行包含一个数M,接下有M行,每行一个实例,包含三个正数A,B,C。其中A,B,C <1000; Output 对于每个测试实例,如果三条边长A,B,C能组成三角形的话,输出YES,否则NO。 Sample Input 2 1 2 3 2 2 2 Samp
杭电题目大致分类
hdu题目大致分类:(详细分类在后)   模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 111
01背包入门题【简单到死】
声明:这些题大多是板子题,HDU的多,新手题都是,题目就不贴了,直接点链接就行1. HDU - 2062 - Bone Collector 题意:最裸的01背包,给你背包总量和物品数,以及物品的价值和体积,让你求背包装满后的最大价值参考代码#include<bits/stdc++.h> using namespace std;const int N = 1e3 + 10; int w[N],v[N]
50道hdu基础的搜索题目
Dfs: 大部分是直接递归枚举,即求满足约束条件下的解,虽不用剪枝,但也需要代码能力。 练习递归枚举的题目: 1241       Oil Deposits (dfs的连通块个数) 1016       Prime Ring Problem 1584       蜘蛛牌(简单dfs) 1426       Sudoku Killer(数独) 2510   
干货!这里有一份神经网络入门指导,请收下!
本周,我们为您准备了一份数据科学家Ben Gorman撰写的神经网络指导。这份指导包含了他具体的学习思路,包括所遇到的难点以及多种详细的解决方法。 文章不短,但是值得深读,请收藏! 人工神经网络当下非常流行。与任何流行的事物一样,人工神经网络也收到了不少质疑。它究竟是卖弄玄虚,还是真正可以使无数人获益的新技术呢? 为了让大家入门神经网络,我从一个并不太了解