情報科学演習 宿題 2012.11.05

Back


教科書のp.143にあるようにコンピュータで文字を扱うには「文字コード」が使用される.それらの文字や記号は教科書p.14の例題2.4にあるように printf を使用して, %c に文字コードの数値を与えることで画面に表示することができる.そのことを利用して以下のようにアルファベットを並べ替えて表示するプログラムを作成せよ.

65から90までの整数を乱数で3つ発生させて,それらに対応するアルファベット大文字を表示した後,文字をアルファベット順に並び替える操作を行なうプログラムを作成せよ.なお,表示においては先頭の行には学生番号を,最後にはハイフンによるラインを出力すること.

My student number: s124099

Random numbers: 75 88 68
Alphabets: K X D
Sorted: D K X

----------------------

並べ替える考え方としては,表示させる処理に if を使うのでは無くて,変数の値自体を入れ換えることを考えましょう.すなわち,3つの文字を変数 s, t, u に格納するとした場合に

	printf("Alphabets: %c %c %c\n", s, t, u);
	
	ここに並べ変えの処理
	
	printf("Sorted: %c %c %c\n", s, t, u);


のように変数の値の数値を入れ換えて下さい.

解答例

/* ************************************************** */
/*                                                    */
/*      情報科学演習 C6 C7                            */
/*      レポート課題                                  */
/*      2012.11.05                                    */
/*                                                    */
/* ************************************************** */
/*                                                    */
/*      学生番号:                                    */
/*                                                    */
/*      氏名:                                        */
/*                                                    */
/* ************************************************** */
/*                                                    */
/*      この行以降に解答のプログラムを書くこと        */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

main()
{
	srand((unsigned) time(NULL));
	
	int s, t, u, tmp;
	
	s = rand() % 26 + 65;
	t = rand() % 26 + 65;
	u = rand() % 26 + 65;
	
	printf("My student number: s124099\n\n");
	printf("Random numbers: %d %d %d\n", s, t, u);
	printf("Alphabets: %c %c %c\n", s, t, u);
	
	if(s >= t){
		tmp = s;
		s = t;
		t = tmp;
	}
	
	if(s >= u){
		tmp = s;
		s = u;
		u = tmp;
	}
	
	if(t >= u){
		tmp = t;
		t = u;
		u = tmp;
	}
	
	printf("Sorted: %c %c %c\n", s, t, u);
	printf("\n----------------------------\n\n");
	
	return(0);
}


Back