マクロ機能

練習問題18

MMGames


基本知識


1-1
プログラム中に値が変更されない変数をなんと呼ぶか。
1-2
置き換え機能を利用して作られた簡易的な関数をなんと呼ぶか。
解答例


プログラム読取


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

#define TRI(A,H) ((A) * (H) / 2)

int main(void)
{
	int side,high,square;
	
	scanf("%d,%d",&side,&high);
	printf("%d\n",TRI(side,high));
	
	return 0;
}
解答例


プログラム書取


3-1
練習問題11で作成した、
「西暦年を入力するとオリンピックが開かれるか表示するプログラムを作成せよ。
ただし、オリンピックの開催を計算する部分は別の関数として作成せよ。」
という問題を元に、さらに関数の戻り値をenum定数で返すようにしなさい。
解答例


記述式


4-1
数値を直接書き込むか変数を使えば良いのにもかかわらず、
わざわざ定数を使うのは何故か理由を間接に説明せよ。
解答例

基本知識(解答例)


1-1
定数
1-2
マクロ
問題


プログラム読取(解答例)


2-1
3角形の面積を求めるマクロ。
問題


プログラム書取(解答例)


3-1
#include <stdio.h>

int olympic(int year);

enum {
	OLYMIPC_NON,
	OLYMIPC_SUMMER,
	OLYMIPC_WINTER,
};

int main(void)
{
	int year,hold;
	
	scanf("%d",&year);
	hold = olympic(year);
	
	switch (hold) {
		case OLYMIPC_NON:
		printf("開かれない\n");
		break;
		case OLYMIPC_SUMMER:
		printf("夏季五輪\n");
		break;
		case OLYMIPC_WINTER:
		printf("冬季五輪\n");
		break;
	};
	
	return 0;
}

int olympic(int year)
{
	if (year % 2 == 0) {
		if (year % 4 == 0) {
			return OLYMIPC_SUMMER;
		} else {
			return OLYMIPC_WINTER;
		}
	} else {
		return OLYMIPC_NON;
	}
	
}
※数値で区別するよりもわかりやすいことが実感できると思います。
問題


記述式(解答例)


4-1
名前を付けておくことでわかりやすくなり、変更も用意になる。
さらに定数は代入が出来ないため、間違って値を変更することがない。
問題

サイト目次


第0部:プログラム概要編

  1. プログラムとは何か?

2章:プログラムの書き方

  1. 書き方のルール
  2. 書き方の慣習
  3. 練習問題2

3章:画面への表示

  1. 文字列の表示
  2. 改行文字
  3. 練習問題3

6章:キーボードからの入力

  1. 入力用の関数
  2. 入力の恐怖
  3. 練習問題6

9章:回数が決まっている繰り返し

  1. 繰り返しを行う文
  2. ループ動作の仕組み
  3. 練習問題9

10章:回数がわからない繰り返し

  1. 回数不明ループ
  2. 入力チェック
  3. 練習問題10

13章:複数の変数を一括して扱う

  1. 複数の変数をまとめて扱う
  2. 配列の使い方
  3. 練習問題13

20章:複数のソースファイル

  1. 最小限の分割
  2. 分割の定石
  3. 練習問題20