我只是想知道它有什麼問題,以及如何解決它。我的第一個'c'泡泡排序程序有什麼問題?
看起來每一件事情是正確的,但是當你運行.exe它你沒有使用scanf
並傳遞到array
正確function
崩潰每次
#include <stdio.h>
#include <stdlib.h>
// first list filling function:
void T_filling(int T[],int n){
int i;
for(i=1 ;i<=n ;i++){
printf("enter the number:",i+1);
scanf("%d",&T[i]);
}
}
//then the main algorithm:
int main()
{
int j,k,l;
int n,x;
// you can order up to 100 integer number
int T[100];
printf("This program is to order numbers decreasingly\n");
printf("how many numbers you want to order?\n");
// scanning the number of elements in the list
scanf(n);
//filling the list
T_filling(T[100],n);
//bubble sort Algorithm
for(j=1;j<=n-1;j++){
for(k=1;k<=n-j;k++){
if(T[k+1]>T[k]){
x=T[k];
T[k]=T[k+1];
T[k+1]=x;
}
}
}
for(l=1;l<=n;l++){
//printing the result on screen
printf("%d;",T[l]);
}
printf("\n");
system("pause");
return 0;
}
首先 - 什麼讓你覺得它有什麼不對?通過不提供這樣一個重要的細節......描述應該發生什麼以及發生了什麼,你會剝奪自己潛在的答案,因爲人們會繼續前進。其次,一個簡短的代碼掃描表明,你似乎沒有意識到C數組索引從0開始,而不是1,所以你所有的'for'循環比如'for(l = 1')都跳過了第一個元素(並且可能正在使用元素超出有效緩衝區的末尾) – mah
它用於跳過第一個元素,最大元素數量爲100而不是101,在整個算法中跳過0元素 –
當您聲明'T [100]'時, ,您的有效元素是索引0到99.因此,您只有100個元素,並且您必須以0開頭。 – mah