-
冒泡是從數字序列中選擇最小的數字,然後與第乙個數字交換,你在這個程式中犯了太多錯誤。
for(j=1;j<=i;j++)
for(k=1;k<=i-j;k++)
if(num[i]>num[i+1])
t=num[i];
num[i]=num[i+1];
num[i+1]=t;
用j和k作為迴圈因子有什麼用,但其中的變化與j和k無關? 還有你的ii,這會導致閱讀混亂,以及太多的變數參考。
-
#include
int main(void)
int num[100],i=0,n,j,k,t,ii;
char key;
printf("請輸入n位數字,負數表示輸入完成");
do ++i;
printf("%d. -",i);
scanf("%d",&n);
fflush(stdin);
num[i]=n;
while(num[i]>0);
i--;//
for(j=1;j<=i;j++)
for(k=1;k<=i-j;k++)
if(num[k]>num[k+1]) //t=num[k];
num[k]=num[k+1];
num[k+1]=t;
for(ii=i,i=2;i<=ii;i++)printf("%d ",num[i]);在程式方面。
-
if(num[i]>num[i+1])
t=num[i];
num[i]=num[i+1];
num[i+1]=t;
其中 i 應替換為 k,即如下所示:
if(num[k]>num[k+1])
t=num[k];
num[k]=num[k+1];
num[k+1]=t;
此外,建議將程式的最後一部分改為以下形式:
for(ii=i,i=2;i<=ii;i++)printf("%d ",num[i]);
範圍。 你靜態字元 *chh;
static char *ch1;雖然兩個指標指向的位址沒有變化,但你有沒有想過它們指向的記憶體位址是否已經釋放,char chc[10]; 它是本地的,函式已經結束,生命週期已經結束,你正在嘗試使用 void times() 中的指標訪問它。 >>>More