MMGamesロゴ  MMGames
Twitterシェアボタン  Facebookシェアボタン   
 English 

しんで覚えるC言語
しんで覚えるC言語

練習問題18

基本知識

問 1-1
プログラム中に値が変更されない変数をなんと呼ぶか。


問 1-2
置き換え機能を利用して作られた簡易的な関数をなんと呼ぶか。

プログラム読取
次のプログラムでは、マクロTRIは何のためのマクロなのか。
処理内容や変数名から判断して答えよ。

問 2-1
#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;
    }
}

※開催状態に名前がつけられたことによって、
0.1.2といった数値で区別するよりも、わかりやすくなっています。
記述式(解答例)

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



本サイトについて

苦しんで覚えるC言語(苦C)は
C言語入門サイトの決定版です。
C言語の基本機能を体系立てて解説しており、
市販書籍と同等以上の完成度です。

第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

コメント
COMMENT

💬 コメント投稿欄を開く