プログラミング実習II (2026) 課題
「キックオフ C言語」の ソースコード 3.3(2乗を求める関数を呼び出す)を入力した上でコンパイルおよび実行し,どのような結果が得られるかをレポートに記せ.さらに,このプログラムに関する以下の1~5の質問に対して考察欄にて詳しく説明せよ.
double f( double x ) の double 型変数 x は何と呼ばれるか.また, x の値はどのようにして与えられるか.double f( double x ) の最初の double は実数型を意味するが,何が実数型であるのか.f 関数の中の "return x * x;" によりどのようなことが行われるか.また,return に続く式の値は何と呼ばれるか.main 関数の中の result = f(0.5); の "0.5" は何と呼ばれるか.また,この文によりどのような操作が行われているか.本問については,プログラムは問題 2 のみを提出し,考察については 1, 2 双方について記すこと.
powint を以下に示す関数 powint におきかえたプログラムを作成し,教科書と同じ実行結果が得られることを確認せよ.int powint(int x, int p) // 正整数 x の p 乗を求める関数 powint() の定義
{
int y = 1; // 戻り値 y の初期化
for (int i = 0; i < p; i++) { // i の値を次々に加算し,p に達するまで繰り返し
y *= x;
}
return y; // y をこの関数の戻り値とする
}
powint と,[リスト 5.3] 内の関数 powint の違いは,前者が for 文,後者が while 文を使用していることです.powint では,カウンタ変数(ループ変数)の範囲が 0 以上 p 未満の範囲であることが事前に確定しています.このような場合は, for 文を使用することがより一般的です.実数 r を引数とし,これを半径とする円の面積を戻り値として返す関数 double area( double r ) を作成せよ.なお,#include <math.h> により,十分な精度の円周率が M_PI により利用できる.作成した関数を用いて,半径が1以上10の整数値である場合の円の面積を表示せよ.関数 area() を呼び出す際に,int 型の半径の値を double 型にキャストすること.
表示例:
半径が 1 である円の面積は 3.1415926 です.
半径が 2 である円の面積は です.
:
半径が 10 である円の面積は です.
#include <stdio.h>
#include <math.h>
int main( void )
{
printf("円周率は %.10f\n", M_PI);
return 0;
}
2個の整数 x,y を引数とし,x3 + x2y + xy2 + y3 を計算して戻り値として返す関数 int comp( int x, int y ) を作成せよ.この関数は return 文の 1 行のみを含むものとする.
main 関数で 2 個の整数の組 a, b に適当な値を代入した上で,a3 + a2b + ab2 + b3を表示する.これを 5 組の整数に対して行うこと.実行後,電卓などを用いて計算結果が確かに正しいことを確認すること.
int comp( int x, int y )
{
return (ここに適切な式を記述する)
}
表示例: a = 1, b = 3, 40 a = 2, b = 5, 203 a = 4,b = 7,715 a = ???,b = ???,??? a = ???,b = ???,???
角度について,単位を度からラジアンに変換するプログラムを作成する.
x を引数とし,角度(度)をラジアンに変換した値を返す関数 double deg_to_rad( int x ) を作成せよ.計算の際に int 型の変数は double 型にキャストし,円周率は M_PI を用いること.main 関数で 0, 30, 60, 90, 120, 150, 180 度を順にラジアンに変換して表示せよ.
表示例: 0 度は 0.000000 ラジアン 30 度は 0.523599 ラジアン 60 度は 1.047198 ラジアン 90 度は 1.570796 ラジアン 120 度は 2.094395 ラジアン 150 度は 2.617994 ラジアン 180 度は 3.141593 ラジアン
キックオフ C 言語, p. 42,3.4節,ソースコード3.7 を参考にして,三角形の 3 辺の長さが与えられたとき,その三角形の面積を表示するプログラムを作成し,実行結果が正しいことを確認せよ.
その上で,キックオフ C 言語, p. 52,3章 章末問題 7 に解答せよ.すなわち,このプログラムにおいて printf("s=%g\n", s); を挿入できる行の範囲を理由とともにレポートにて説明せよ.