解決済み
情報処理検定プログラミング1級の問題なんですがなんでその答えになるか分からず解説をお願いしたいです(>_<) 答えは(1)ア(2)イ です。
135閲覧
今回のプログラムは降順に並べ替えるので左側が大きい分には問題ありません。しかし、右側が大きい場合左と右を入れ替える必要があります。 hが左側、sが右側と考えてみましょう。 (1)は条件が正しい時にループに入ります。 ループの処理を見てみると、左側+1に左側の値を入れています。 左側の値が右側に入れ替わるのは、 左側より右側の方が大きい時です。 (2)はif文が正しい時の処理です。 条件を読み解くと、上のループ処理が行われなかった場合は何もしないようにする条件です。 つまり、右側の値を左側に持ってくる必要があります。 ループ条件を見るとhが0になるとループを抜けるのでh-1してしまうとhが-1になりエラーになるのでh+1にする必要があります。 トレースをしてみます。 ten [30,50••••,49] testに50が入ります hに1が入ります ループに入ります ten [50,50••••,49]になります hが0になります ループから抜け出します if文が正しいので処理を行います ten [50,30••••,49]になります 分かりにくくてすみません。
< 質問に関する求人 >
情報処理検定(東京都)この条件の求人をもっと見る
求人の検索結果を見る
< いつもと違うしごとも見てみませんか? >
覆面調査に関する求人(東京都)この条件の求人をもっと見る