ここから本文です

回答受付終了まであと7日 回答を投稿すると知恵コイン15枚が追加されます

プログラミング C言語 for

アバター

ID非公開さん

2020/8/915:46:55

プログラミング C言語 for

#include <stdio.h>
#define SIZE 10

int main(void)
{
int x[SIZE];
int i, j, w;

for(i=0; i<SIZE; i++) scanf("%d", &x[i]);

for(i=0; i<SIZE-1; i++){
for(j=SIZE-1; j>i; j--){
if(x[j-1]>x[j]){
w=x[j-1];
x[j-1]=x[j];
x[j]=w;
}
}
}

for(i=0; i<SIZE; i++) printf("%d\n", x[i]);

return 0;
}


問題①
8行目の2重forループで、外側のforループでiの値が5であるとき、内側のforループでjの値はどの範囲を動くか。jの取る値を順に全て列挙せよ。

問題②
入力として0,2,4,6,8,1,3,5,7,9を順に与えるとき、コード8行目からの2重forループにおいて、iの値が6に更新された時点での、配列xの要素の値を全て示せ。

補足手も足も出ません!助けてください!

閲覧数:
11
回答数:
1
お礼:
250枚

違反報告

回答

1〜1件/1件中

mns********さん

2020/8/916:04:17

まず、コードを問題の答えを出力するように改造します。

#include <stdio.h>
#define SIZE 10

int main(void)
{
int x[SIZE];
int i, j, w;

for(i=0; i<SIZE; i++) scanf("%d", &x[i]);

for(i=0; i<SIZE-1; i++){
if (i == 6){
int k;
printf("(2)");
for(k=0; k<SIZE; k++) printf(" %d", x[k]);
printf("\n");
}
for(j=SIZE-1; (i==5 && printf("(1) %d\n", j)), j>i; j--){
if(x[j-1]>x[j]){
w=x[j-1];
x[j-1]=x[j];
x[j]=w;
}
}
}

for(i=0; i<SIZE; i++) printf("%d\n", x[i]);

return 0;
}

実行します。

https://ideone.com/5SnaPR

答え

問題①

9,8,7,6,5

問題②

0,1,2,3,4,5,6,7,8,9

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

本文はここまでです