#4
by みけCAT » 7年前
解き方は素直にシミュレーションすればいいと思います。
答えは各変数、各配列要素の状態を出力する処理を追加して実行すればとりあえず得られます。
コード:
#include<stdio.h>
int main(){
int x[5]={-3,-2,10,7,116};
int s,t,tmp;
for(s=0; s<4; s++){
for(t=s+1; t<5; t++){
printf("Hi!¥n");
printf("\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n", s, t, x[0], x[1], x[2], x[3], x[4]); /* 各変数、各配列要素の状態を出力する処理 */
if(x[t] > x[s]){
tmp=x[t];
x[t]=x[s];
x[s]=tmp;
}
}
}
}
(インデントのない元コードを尊重しました)
実行結果
コード:
Hi!¥n 0 1 -3 -2 10 7 116
Hi!¥n 0 2 -2 -3 10 7 116
Hi!¥n 0 3 10 -3 -2 7 116
Hi!¥n 0 4 10 -3 -2 7 116
Hi!¥n 1 2 116 -3 -2 7 10
Hi!¥n 1 3 116 -2 -3 7 10
Hi!¥n 1 4 116 7 -3 -2 10
Hi!¥n 2 3 116 10 -3 -2 7
Hi!¥n 2 4 116 10 -2 -3 7
Hi!¥n 3 4 116 10 7 -3 -2
解き方は素直にシミュレーションすればいいと思います。
答えは各変数、各配列要素の状態を出力する処理を追加して実行すればとりあえず得られます。
[code=c]
#include<stdio.h>
int main(){
int x[5]={-3,-2,10,7,116};
int s,t,tmp;
for(s=0; s<4; s++){
for(t=s+1; t<5; t++){
printf("Hi!¥n");
printf("\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n", s, t, x[0], x[1], x[2], x[3], x[4]); /* 各変数、各配列要素の状態を出力する処理 */
if(x[t] > x[s]){
tmp=x[t];
x[t]=x[s];
x[s]=tmp;
}
}
}
}
[/code](インデントのない元コードを尊重しました)
実行結果
[code=text]
Hi!¥n 0 1 -3 -2 10 7 116
Hi!¥n 0 2 -2 -3 10 7 116
Hi!¥n 0 3 10 -3 -2 7 116
Hi!¥n 0 4 10 -3 -2 7 116
Hi!¥n 1 2 116 -3 -2 7 10
Hi!¥n 1 3 116 -2 -3 7 10
Hi!¥n 1 4 116 7 -3 -2 10
Hi!¥n 2 3 116 10 -3 -2 7
Hi!¥n 2 4 116 10 -2 -3 7
Hi!¥n 3 4 116 10 7 -3 -2
[/code]