情報科学演習 宿題 2015.01.26

Back


アルファベットの a から j までの10文字からなる3文字の文字列をランダムに10個作って配列に入れる.同様に a から j の中からランダムに文字を1つ選んで,その文字を含む文字列だけを改めて表示するプログラムを作成せよ.

このプログラムではまず以下のように配列を定義し,2重の for 文でアスキーコードからランダムに文字を入れていくようにすること.

	char str[10][4];

My student number: s144099

jeb bbe jhc gdg gha cac bbh afb baj fic
Lucky character: "e"
jeb bbe

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

前回の宿題と同様に文字はアスキーコードを通して数値として扱えることを利用します.

配列にランダムに文字列を入れる際には文字列の最後にヌル文字 '\0' を入れるのを忘れないでください.
解答用紙を使用する際には,まず,科目名の不要な方を削除してください.また,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がC言語のプログラムとなっていますので, cc コマンドを実行して,コンパイルエラーの無いことを確認してから提出してください.

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


解答例

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

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

main()
{
	srand((unsigned) time(NULL));
	
	int i, j, flag, index;
	char str[10][4];
	
	printf("My student number: s144099\n\n");
	
	for(i=0; i<=9; i++){
		for(j=0; j<=2; j++)
			str[i][j] = rand() % 10 + 97;
		
		str[i][3] = '\0';
		printf("%s ", str[i]);
	}
	
	printf("\n");
	
	index = rand() % 10 + 97;
	printf("Lucky character: \"%c\"\n", index);

	for(i=0; i<=9; i++){
		flag = 0;
		
		for(j=0; j<=2; j++)
			if(str[i][j]==index)
				flag = 1;
		
		if(flag==1)
			printf("%s ", str[i]);
	}
	
	printf("\n\n----------------------------\n\n");
	
	return(0);
}


Back