苦しんで覚えるC言語

練習問題15



第1項:基本知識

1-1
変数に付けられたメモリ上の番号のことをなんと呼ぶか。
1-2
上記の番号を変数に代入して扱う方法のことをなんと呼ぶか。
解答例

目次に戻る

第2項:プログラム読取

2-1
次のプログラムでは、sum関数の戻り値はvoid型であるにもかかわらず、
計算結果を返すことが出来るのは何故なのか簡潔に説明せよ。
#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項:プログラム書取

3-1
0~100の範囲で入力された複数の数値の中から、
最大値と最小値を求めて表示するプログラムを作成せよ。
-1が入力された場合は入力の終わりと判定する。
ただし、最大値と最小値はmain関数以外の一つの関数の中で求める。
また、入力された数値を記憶する配列の要素数は10とし、
それ以上入力された場合はエラーが起きても仕方ないこととする。
ヒント:配列の中に -1 があればデータの終わりだと判断できる。
ヒント:最小値を探すには、最大値を記憶した変数との比較を繰り返せば良い。
解答例

目次に戻る

第4項:記述式

4-1
結局のところ、ポインタとは何なのか簡潔に説明せよ。
解答例
目次に戻る

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

1-1
アドレス
1-2
ポインタ
問題

目次に戻る

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

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

目次に戻る

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

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++;
	}
}
※今回の問題は初心者にはなかなか難しい問題です。
 解答例を良く読んでみて下さい。
問題

目次に戻る

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

4-1
ある変数のショートカット変数のこと。
問題

目次に戻る