程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 測試-杭電c入門簡單問題 求指導一下

測試-杭電c入門簡單問題 求指導一下

編輯:編程解疑
杭電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 在哪裡輸出的求大神幫忙看看那裡的問題應該如何解決謝謝了

最佳回答:


下面這兩個判斷有重復的地方,當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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved