--
You are subscribed to the "itrs" group, see: http://groups.google.com/group/itrs
首先,下面的 Code 如果中間沒有 0 的話跑完後 count = 100
for(n=0;n<=99;n++){
scanf("%d",&a[n]);
if(a[n]==0) break;
count+=1;
}
接下來
for(i=0;i<=count;i++){
for(n=0;n<=count;n++){
if(a[n]<a[n+1])
t=a[n],a[n]=a[n+1],a[n+1]=t;
}
}
這會跑 101 * 101 次的迴圈,並會用到 a[100] 和 a[101],但是因為你只宣告 a[100] 所以最多只能用 a[0]-
a[99]. 所以你的Code會把 a[100],a[101] 的垃圾拿進你的a[0]-a[99] 陣列中,所以當你輸出的時候就會看到垃圾
值....
應該是這樣....
On Apr 10, 8:14 am, Heron Yang <v6510youn...@gmail.com> wrote:
> 不好意思,
> 你可以重複一次題目嗎?
>
> 另外,
> 我直接拿你的程式碼編譯沒有看到什麼異常的訊息阿,
> 要不要把你說莫名其妙的文字貼上來看看?
>
在 2011年4月12日下午11:58,正捷 林 <joe199...@gmail.com> 寫道:
> 題目是[輸入一堆數字 把他們由大到小排列]
> 所以我之後的迴圈只要把count後面減1就不會有垃圾值了嗎?
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
int main()
{
int i,j,count;
int a[SIZE];
for(i=0,count=0;i<SIZE;i++,count++)
{
scanf("%d",&a[i]);
if(a[i]==0) break;
}
// Bubble Sort
for(i=0;i<count;i++)
for(j=i+1;j<count;j++)
if(a[i]<a[j])
a[i]^=a[j]^=a[i]^=a[j]; // This is for your homework....
for(i=0;i<count;i++)
printf("%d ",a[i]);
system("PAUSE");
return 0;
}
On Apr 12, 7:58 am, 正捷 林 <joe1995840...@gmail.com> wrote:
> 題目是[輸入一堆數字 把他們由大到小排列]
> 所以我之後的迴圈只要把count後面減1就不會有垃圾值了嗎?