プロが教えるわが家の防犯対策術!

C言語の問題集の回答がないので困っているので誰か教えてください。
私はまだ始めたばかりなので手におえません。
今私が理解しているif文、switch文、for文、while文、do-while文、配列、を
使用してでお願いします。

以下のプログラムに付け足しをしてバブルソートのプログラムを完成させなさい。
バブルソート前とバブルソート後のそれぞれの並びを表示すること。

#include<stdio.h>
#define No 11

main(){
int a[No]={2,7,5,1,7,1,8,3,6,4,9};
int i,j,temp;


実行結果例
before
2 7 5 1 7 1 8 3 6 4 9

after
large >>>>>>>>>>> small
9 8 7 7 6 5 4 3 2 1 1

A 回答 (6件)

#include<stdio.h>


#define No 11

main(){
int a[No]={2,7,5,1,7,1,8,3,6,4,9};
int i,j,temp;


//初期値設定

i = 0;
j = 0;
temp = 0;

//実行前表示

printf("before\n");
for(i = 0; i < No; i++ ){
printf("%d ",a[i]);
}

//ここからバブルソート

for(i = 0 ; i < No ; i++ ){
for(j = 0 ; j < No - i ; j++ ){
if(a[ j ] < a[j + 1]){
temp = a[ j ];
a[ j ] = a[ j+1 ];
a[ j+1 ] = temp;
}
}
}

//実行後表示
printf("after\n");
for(i = 0; i < No; i++ ){
printf("%d ",a[i]);
}

分かりやすいように作りました。たぶんこれで実行しても、上手くいくはずです。
    • good
    • 0

// sort.cpp : コンソール アプリケーションのエントリ ポイントを定義します。


//
#include "stdio.h"

#define No 11


int main(int argc, char* argv[])
{
int a[No]={2,7,5,1,7,1,8,3,6,4,9};
int i,j,temp;

printf ("before\n");
for (i = 0; i < No; ++i)
{
printf("%d", a[i]);
}
printf ("\n");

for (i = 0; i < No; ++i)
{
for (j = 1; j < No - i; ++j)
{
if (a[j] > a[j - 1])
{
temp = a[j - 1];
a[j - 1] = a[j];
a[j] = temp;
}
}

}

printf ("after\nlarge >>>>>>>>>>> small\n");
for (i = 0; i < No; ++i)
{
printf("%d", a[i]);
}


return 0;
}
    • good
    • 0

はじめまして。


質問者様の質問内容を判断しまして、質問の回答ではありませんが、
今後の学習の為にアドバイスをさせてください。
どの言語の学習にもいえることですが、プログラミングそのものの
経験が浅いうちは、できれば、ネットでもよいのですが、回答付きの参考書を購入して勉強してください。今の状況ですと、たとえ、回答を
提示しても、質問者様の血肉にはならないと思います。と言いますのは、提示した回答の中でなにが自分にとって覚えなくてはならない
重要な部分なのかが判断できないと思うからです。そして、たとえ
自分で解かずに他力でその質問の解答がわかったとしても、ちょっと条件を変えた問題にこたえられなくなる可能性が大です。
問題集の問題や、今後勉強するであろうデータ構造
、オブジェクト指向言語ならばデザインパターンなどは、その参考書のサンプルを見なければ、全然手もつけられないうちは、まだまだ基礎事項の理解が不十分であると自覚すべきです。ですので、その問題を解くために必要な基礎事項の考え方を徹底的に学習して理解することに努め、問題を解くための最低限の条件が与えられたならば、その条件だけであとは解答方法は自分で考えて苦労して
なんとか解答してみる。あとは自分で導いた解答と参考書のサンプルとの比較をしてみるとよいでしょう。すると自分でも気付かなかった部分が実は重要なところなのだとわかりだすはずです。あくまでも参考書のサンプルは答え合わせのためだけに参照するくらいにしておいた方がよいと思います。では頑張ってください。
    • good
    • 0

質問のタイトルを毎回変えましょう。


全部同じタイトルでは、どれがどの質問かわかりません。
C/C++カテゴリで全く同じ、もしくは少ししか違わないタイトルが並んでいると、重複投稿(これは規約違反に当たります)にしか見えません。

そして、実際にそれぞれの質問における最大の問題点は共通しています。
「解答のない問題集」で学習していることです。
そもそも、問題における解答を推測することはできますが、正解となる解答そのものを示すことはできません。
なぜなら、問題集全体を通して何らかの前提条件(intは16bit幅。規格としてはANSI以前,C90,C99、特定の処理系などの条件)が提示されることもありますので、必ずしも正答にならないのです。
また、問題文の意図が不明瞭な場合や、直前の問題からの文脈などによって条件が変わることもあります。
そして、あなたが実際に示されたとおり学習していない内容は使えないと考えるべきです。しかし、それは本人と問題集にしかわかりません。
今回の質問であれば画面への出力が必要ですが、C標準関数のうちどの方法での画面出力を学習したのかわかりません。
結局、問題集自身の「解答例」がないとならないのです。

そしてなによりも、大変お困りで回答を急がれているようですが、そうであれば解答付きの問題集が一番です。
時間と手間のかかる手段で正当なのかわからない解答例を得るよりも、素早く確実な解答を得るべきです。
    • good
    • 0

どうぞ参考URLにてバブルソートのソースがあります。


そちらのソースを参考にすればすぐに完成するかと・・・。

ただNo.1の方が言われてるように勉強を始めたばかりの者が
解説・回答なしの問題集を買うべきではないです。
身にならないし読むだけ意味がない。(^-^;)

参考URL:http://www1.cts.ne.jp/~clab/hsample/Sort/Sort1.h …
    • good
    • 0

その問題に答える事はそれほど難しくありませんが、


それより回答例なしの役にも立たない問題集など捨てて、回答付の問題集か参考書を買う事をお勧めします。
問題一つ一つにいちいち質問するつもりでもないすよね?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!