- 第1項:基本知識
- 第2項:プログラム読取
- 第3項:プログラム書取
- 第4項:記述式
- 第5項:基本知識(解答例)
- 第6項:プログラム読取(解答例)
- 第7項:プログラム書取(解答例)
- 第8項:記述式(解答例)
[ 1-1 ]
変数に付けられたメモリ上の番号のことをなんと呼ぶか。
解答例
[ 1-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) { int num; *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); 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 ]
ある変数のショートカット変数のこと。