C 語言程式 需幫助~~

請問大大這各執行結果是怎樣 那是否可以列出步驟 謝謝 (排版怪怪的 當我預覽時....請見諒...)

#include<stdio.h>

void main(void)

{

int s[5];

int x,y,temp,m,ctr;

m=5;

ctr=0;

for(x=1; x<=m; x++)

{

s[x]=x;

}

for(x=1; x<=m-1; x++)

{

for(y=x+1; y<=m; y++)

{

if(s[x]<s[y])

{

temp=s[x];

s[x]=s[y];

s[y]=temp;

}

ctr+=1;

}

}

printf(\"ctr=%d\\n\",ctr);

for(y=1; y<=m; y++)

{

printf(\"%d\",s[y]);

}

printf(\"\\n\");

}

1 個解答

評分
  • Almond
    Lv 6
    1 0 年前
    最佳解答

    #include<stdio.h>main(){ int s[5]; //長度為5的整數陣列。 int x,y,temp,m,ctr; m=5; ctr=0; //ctr變數目的在於計算比對的次數。 for(x=1; x<=m; x++) {  s[x]=x; //用for迴圈,在陣列位置1~5之中,填入1,2,3,4,5。 } for(x=1; x<=m-1; x++) //用兩個for迴圈開始比較(泡沫排序法) {  for(y=x+1; y<=m; y++)  {   if(s[x]<s[y]) //s[x]位置裡的數小於s[y]位置裡的數,就交換兩位置的數。   {    temp=s[x];    s[x]=s[y];    s[y]=temp;   }   ctr+=1; //計算比較次數  } } printf("ctr=%d\n",ctr); //將ctr結果印,也就是總比較次數。 for(y=1; y<=m; y++) {  printf("%d",s[y]); //印出排序後,陣列裡的值。 } printf("\n");}執行結果:ctr=1054321

    參考資料: 自己
還有問題?馬上發問,尋求解答。