苦しんで覚えるC言語

練習問題8



第1項:基本知識

1-1
条件が偽の時に実行する文をif文に追加するオプションは何か。
1-2
上記の文をいくつも組み合わせて使う書き方を俗になんと呼ぶか。
1-3
番号別に処理する文を分けたい時に使う文は何か。
解答例

目次に戻る

第2項:プログラム読取

2-1
次のプログラムは、何を表示するためのプログラムなのか、
処理内容や変数名から判断して答えよ。
#include <stdio.h>

int main(void)
{
	int year;
	
	scanf("%d",&year);
	
	if (year % 2 == 0) {
		if (year % 4 == 0) {
			printf("summer\n");
		} else {
			printf("winter\n");
		}
	} else {
		printf("do not\n");
	}
	
	return 0;
}
解答例

目次に戻る

第3項:プログラム書取

3-1
月を入力すると、対応する陰暦の月を表示するプログラムを作成せよ。
なお、存在しない月を入力した時にも何かのメッセージを表示せよ。
ヒント:陰暦は1月から順番に、
睦月,如月,弥生,卯月,皐月,水無月,文月,葉月,長月,神無月,霜月,師走
解答例

目次に戻る

第4項:記述式

4-1
switch文では各case文の後にbreak文を置くのは何故か。
また、これが不要なのはどんな場合か簡潔に述べよ。
解答例
目次に戻る

第5項:基本知識(解答例)

1-1
else文
1-2
else-if文
1-3
switch文
switch~case文と書いても良い。
問題

目次に戻る

第6項:プログラム読取(解答例)

2-1
西暦年を入力すると、オリンピックが開かれるかどうか表示する。
※前回の問題をif-else文で書き直しただけである。
問題

目次に戻る

第7項:プログラム書取(解答例)

3-1
#include <stdio.h>

int main(void)
{
	int month;
	
	printf("月を入力して下さい。");
	scanf("%d",&month);
	
	switch (month) {
		case 1:
			printf("睦月\n");
			break;
		case 2:
			printf("如月\n");
			break;
		case 3:
			printf("弥生\n");
			break;
		case 4:
			printf("卯月\n");
			break;
		case 5:
			printf("皐月\n");
			break;
		case 6:
			printf("水無月\n");
			break;
		case 7:
			printf("文月\n");
			break;
		case 8:
			printf("葉月\n");
			break;
		case 9:
			printf("長月\n");
			break;
		case 10:
			printf("神無月\n");
			break;
		case 11:
			printf("霜月\n");
			break;
		case 12:
			printf("師走\n");
			break;
		default:
			printf("そんな月はありません。\n");
			break;
	}
	
	return 0;
}
※if文でも良いが、数多く分岐する場合にはswitch文が適している。
※default文を欠いている場合は減点とする。
問題

目次に戻る

第8項:記述式(解答例)

4-1
switch文は、あくまでcase文にジャンプするだけの機能しかないので、
break文を付けて、各case文の終わりでswitch文全体から抜け出るようにする必要がある。
しかし、各case文の処理に共通点がある場合にはそのままつなげても良い。
問題

目次に戻る