* 第3回 関数 [#xef7c5f7]

** 基礎問題 [#za0a799c]

*** 関数 [#nb3cde3e]

''★c1)'' 半径rを引数として,円の面積と円周を表示する関数を作成しなさい。その関数の動作を確認するプログラムを作成しなさい。以下にプロトタイプ宣言の例を示す。
 void print_circle(double r);

''c2)'' 関数f(x)=x+1をC言語で表し、整数nをキーボードから読み込み、f(0)+f(1)+f(2)+...+f(n)の値を表示するプログラムを作成しなさい。

''★c3)'' 2つの整数を引数として,値の小さい方を返す関数minを作成しなさい。これを利用して,10個の整数を読み込み,その最小値を求めるプログラムを作成しなさい。

*** ライブラリ関数 [#v9a91afe]

- 参考 http://www9.plala.or.jp/sgwr-t/c/sec07.html 

''★c4)'' 座標平面上の点 (x, y) から原点までの距離を計算するC言語のプログラムを作成し,コンパイル・実行させたい.キーボードからdouble型の数値xおよびyを読み込み,距離を計算して画面に表示するプログラムを作成しなさい.平方根を計算するライブラリ関数sqrtのマニュアルには、以下のように記述されている。
 #include <math.h>
 double sqrt(double x);

>【ポイント】 C言語の処理系によっては,数学関係の標準ライブラリを使ったプログラムをコンパイルするために数学ライブラリをリンクする必要がある。たとえば,gccではコンパイル時のオプションで-lmと指定する。
 gcc -lm ファイル名.c

''c5)'' 自分の名前(ローマ字)をキーボードから読み込み、標準ライブラリ関数toupperを用いて1文字ずつ大文字に変換した後、画面に表示するプログラムを作成しなさい。

** 発展問題 [#sfd957a4]

''cx1)'' 平成何年かを引数とし,西暦何年かを返す関数を作成しなさい。また,その関数の動作を確認するプログラムを作成しなさい。以下に関数プロトタイプ宣言の例を示す。
 int heitosei(int heisei);

''cx2)'' 西暦を引数とし,その年の1月1日の元号が平成(0)・昭和(1)・大正(2)・明治(3)のいずれであるかを返す関数を作成しなさい。その関数の動作を確認するプログラムを作成しなさい。以下にプロトタイプ宣言の例を示す。
 int gengo(int seireki);

''cx3)''

''cx4)'' 1からnまでを順に表示する関数 print1ton を作成しなさい。その関数を利用してキーボードから段数を読み込むと、例(入力が5の場合)のように表示するプログラムを作成しなさい。
 12345
 1234
 123
 12
 1

''cx5)'' キーボードから読み込みこんだ整数n (ただしn≧2)を1辺の長さとするアスタリスク(*)の正方形を描画するC言語の関数を作成し,その関数の動作を確認するプログラムを作成しなさい。たとえば、n=2,3,4のときは、それぞれ以下のような図形が出力される。
     **    ***    ****
     **    * *    *  *
           ***    *  *
                  ****

''cx6)'' キーボードから文字列を読み込み,標準ライブラリ関数strlen()を用いてその長さを求めるプログラムを作成しなさい。
> 【ポイント】 strlenの使用例を以下に示す。
 n = strlen(str);

''cx7)'' 標準ライブラリ関数rand()は,0〜RAND_MAXの範囲の擬似乱数(でたらめな数)を返す関数である。この関数を用いて,0以上10未満の乱数を100個発生させ,画面に表示するプログラムを作成しなさい。
 #include <stdlib.h>
 int rand(void);
- なお,randは起動するたびに同じ数列を返してしまうので,実際の使用ではさらに工夫が必要。

''cx8)'' 三角形の2辺とその挟む角を引数とし、面積を返す関数を作成しなさい。ただし、角度の単位は“度”とする。※関数sinを利用するが、度からラジアンへの変換が必要である。
- 参考 http://shigihara.hp.infoseek.co.jp/sin53.htm
- 参考 http://www2.ocn.ne.jp/~atel.a/emath/sugakuc.html

''cx9)'' 前回の線形探索のプログラムを改造して,整数配列a,その要素数n,探したい整数xを引数に取り,見つかった場所(添字)を返す関数linear_searchを作成しなさい。ただし,見つからなかった場合には,-1を返すようにしなさい。
 int linear_search(int a[], int n, int x);

''cx10)'' 前回のスタックのプログラムを改造して,スタックにデータを積むpushとデータを取り出すpopの2つの関数を作成しなさい。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS