プログラミング入門 情報科学演習 宿題 2016.01.25

Back


以下に示す配列を用意する.

	char class[4][12] = {"English", "Mathematics", "Physics", "Chemistry"};
	int score[4][2];

0〜100までの整数を乱数により5つ発生させ,それを順に上記配列の科目の得点とする.それらを表示させた後で,得点の高い順に並べ直して表示するプログラムを作成せよ.

My student number: s154099

English(10)  Mathematics(94)  Physics(95)  Chemistry(39)
Physics(95)  Mathematics(94)  Chemistry(39)  English(10)

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

score という名前の配列の使い方がポイントです.科目名と得点を関連づけるために用意してあります.
解答用紙を使用する際には,まず,科目名の不要な方を削除してください.また,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がC言語のプログラムとなっていますので, cc コマンドを実行して,コンパイルエラーの無いことを確認してから提出してください.

指定の解答用紙を使用していない,コンパイルエラーが出る,実行時に警告が出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください.


解答例

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

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

main()
{
	srand((unsigned) time(NULL));
	
	char class[4][12] = {"English", "Mathematics", "Physics", "Chemistry"};
	int score[4][2];
	int i, j, tmp;
	
	for(i=0; i<=3; i++){
		score[i][0] = i;
		score[i][1] = rand() % 101;
	}
	
	printf("My student number: s154099\n\n");
	
	for(i=0; i<=3; i++)
		printf("%s(%d)  ", class[i], score[i][1]);
	
	printf("\n");

	for(i=0; i<=2; i++)
		for(j=i+1; j<=3; j++)
			if(score[i][1]<score[j][1]){	
				tmp = score[i][1];
				score[i][1] = score[j][1];
				score[j][1] = tmp;
				tmp = score[i][0];
				score[i][0] = score[j][0];
				score[j][0] = tmp;
			}
	
	for(i=0; i<=3; i++)
		printf("%s(%d)  ", class[score[i][0]], score[i][1]);
		
	printf("\n");

	printf("\n--------------------------------------\n\n");
	
	return(0);
}


Back