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

Back


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

	char suits[4][9] = {"Spades", "Hearts", "Diamonds", "Clubs"};
	char mark[13][3] = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};

トランプを5枚引いてそれらのカードを表示し,その後で絵札(J,Q,K)の枚数を表示する動作をシミュレートするプログラムを作成せよ.

My student number: s154099

10 of Diamonds
 J of Diamonds
 2 of Clubs
 7 of Hearts
 A of Hearts

Number of court cards: 1

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

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

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


解答例

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

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

main()
{
	srand((unsigned) time(NULL));
	
	char suits[4][9] = {"Spades", "Hearts", "Diamonds", "Clubs"};
	char mark[13][3] = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
	int i, j, n, tmp, count = 0, card[52];
	
	for(i=0; i<=51; i++)
		card[i] = i;
	
	printf("My student number: s154099\n\n");
	
	for(i=1; i<=5; i++){
		n = rand() % (53 - i);
		printf("%2s of %s\n", mark[card[n]%13], suits[card[n]/13]);
		
		if(card[n]%13>9)
			count++;
		
		tmp = card[n];
		card[n] = card[52-i];
		card[52-i] = tmp;
	}
	
	printf("\nNumber of court cards: %d\n", count);
	printf("\n--------------------------------------\n\n");
	
	return(0);
}


Back