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

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

練習問題15

基本知識

問 1-1
変数に付けられたメモリ上の番号のことをなんと呼ぶか。


問 1-2
上記の番号を変数に代入して扱う方法のことをなんと呼ぶか。

プログラム読取
次のプログラムでは、sum関数の戻り値はvoid型であるにもかかわらず、
計算結果を返すことができるのはなぜなのか簡潔に説明せよ。

問 2-1
#include <stdio.h>

void sum(int, int, int *);

int main(void)
{
    int value;
    sum(50, 100, &value);
    printf("%d\n", value);
    return 0;
}

void sum(int min, int max, int *ans)
{
    *ans = (min + max) * (max - min + 1) / 2;
    return;
}

プログラム書取

問 3-1
0~100の範囲で入力された複数の数値の中から、
最大値と最小値を求めて表示するプログラムを作成せよ。

-1が入力された場合は入力の終わりと判定する。
ただし、最大値と最小値はmain関数以外の一つの関数の中で求める。
また、入力された数値を記憶する配列の要素数は10とし、
それ以上入力された場合はエラーが起きても仕方ないこととする。

ヒント:配列の中に -1 があればデータの終わりだと判断できる。
ヒント:最小値を探すには、最大値を記憶した変数との比較を繰り返せば良い。

記述式

問 4-1
結局のところ、ポインタとは何なのか簡潔に説明せよ。

基本知識(解答例)

解 1-1
アドレス


解 1-2
ポインタ

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

解 2-1
sum関数の3つ目の引数がポインタ型の変数として宣言されており、
これにアドレスを渡すことで変数の中身を直接書き換えられるため。

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

解 3-1
#include <stdio.h>

void maxmin(int array[], int *max, int *min);

int main(void)
{
    int i = 0, array[10], max, min;

    do
    {
        printf("%d 番目の数:", i + 1);
        scanf("%d", &array[i]);
        i++;
    } while (array[i - 1] != -1);

    maxmin(array, &max, &min);

    printf("最大値 %d : 最小値 %d\n", max, min);

    return 0;
}

void maxmin(int array[], int *max, int *min)
{
    int i = 0;

    *max = 0;
    *min = 100;

    while (array[i] != -1)
    {
        if (array[i] > *max) *max = array[i];
        if (array[i] < *min) *min = array[i];
        i++;
    }
}

※ちょっと難易度が高かったかもしれませんね。
 でも、これぐらいのプログラムがスムーズに書ければ、
 プロのプログラマーとしてギリギリ通用するレベルです。
 さらに学習を重ねたあとに、再挑戦してみてくださいね!
記述式(解答例)

解 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

💬 コメント投稿欄を開く