プログラミング実習II 期末試験・想定問題 [S4] 関数
プログラミング実習II 期末試験・想定問題 [S4] 関数
(S4_1) 0以上100以下の整数を入力とし,それが60以上ならそのまま戻り値とし,60未満の場合は0を戻り値とする関数 score_comp を作成せよ.main 関数で試験の成績を入力させ,合格(60点以上)ならばその点数を,不合格ならば 0点を出力するプログラムを完成せよ.
#include <stdio.h> int score_comp( int ); int main(void) { int score, final; printf("試験の点数を入力して下さい>>> "); scanf("%d", &score); printf("最終成績は %d 点です.\n", final); return 0; } int score_comp( int score ) { int result; return result; } |
(S4_2) 以下のプログラムを読み、出力される2つの値(a_sum, a_count)を答えなさい.
#include <stdio.h> int sum( int[] ); int count( int[] ); int main(void) { int a[] = {3, 9, 18, 2, 14, 6, -1}; int a_sum, a_count; a_sum = sum(a); a_count = count(a); printf("count = %d, sum = %d\n", a_count, a_sum); return 0; } int sum( int array[] ) { int i, sum=0; for( i = 0; array[i] != -1; i++ ){ sum += array[i]; } return sum; } int count( int array[] ) { int i = 0, count = 0; while( array[i] != -1 ) { count++; i++; } return count; } |
(S4_3)下のプログラムは,2つの整数x,yをキーボードから入力し,その和と積を表示するプログラムである. 入力した2つの数の和を計算する関数 sum,さらに2つの数の積を計算する関数 product を作成し,それを利用して計算を行うプログラムを完成せよ.
#include <stdio.h> /* プロトタイプ宣言*/ int main (void) { int x,y; printf("整数xの入力\n"); scanf("%d",&x); printf("整数yの入力\n"); scanf("%d",&y); printf("2つの整数の和は%dです\n", sum(x, y)); printf("2つの整数の積は%dです\n", product(x, y)); return 0; } /* 和の計算を行う関数を以下に記す */ int sum( int a, int b ){ } /* 積の計算を行う関数を以下に記す */ |
(S4_4) ★ 1円=0.013ドル =0.009ユーロ =0.082元とする。 円をドルに変換する関数 int dollar() ユーロに変換する関数 int euro() 元に変換する関数 int gen() を作成し、キーボードから入力した金額をこの関数を呼び出す事で、ドル・ユーロ・元に変換するプログラムを作成せよ.さらに、可能ならばプログラムの実行時に、ドル・ユーロ・元のいずれかを指定する事で、指定した為替に変換出来るようにしてもよい.
(S4_5)★★ キーボードから非負整数nを入力し、順列nPr、組み合わせnCr、重複順列nΠr、 重複組み合わせnHrの値の一覧を作成したい。 rの値は0≦r≦nとする。 次のような手順でプログラムを作成した。
n=15をキーボードから入力した際の結果は、以下のようになった。 [実行結果] 非負整数 n を入力して下さい>>> 15 n r nPr nCr nΠr nHr ―――――――――――――――――――――――――――――――――――――――― 15 0 1 1 1 1 15 1 15 15 15 15 15 2 210 105 225 120 15 3 2730 455 3375 680 15 4 32760 1365 50625 3060 15 5 360360 3003 759375 11628 15 6 3603600 5005 11390625 38760 15 7 32432400 6435 170859375 116280 15 8 259459200 6435 2562890625 319770 15 9 1816214400 5005 38443359375 817190 15 10 10897286400 3003 576650390625 1961256 15 11 54486432000 1365 8649755859375 4457400 15 12 217945728000 455 129746337890625 9657700 15 13 653837184000 105 1946195068359375 20058300 15 14 1307674368000 15 29192926025390624 40116600 15 15 1307674368000 1 437893890380859392 77558760末尾の空欄のあるプログラム(メインプログラム)を見つつ、次の各問いに答えよ。
int calculate_factorial( int n ) { int result = 1; int i; for( i = n; i >= 1; i-- ) result *= i; return result; } |
#include <stdio.h> /* 関数プロトタイプ宣言 */ [ア] int main( void ) { int i, n; /* キーボードから値を入力 */ printf( "非負整数 n を入力して下さい>>> " ); [イ]; /* 結果の表示 */ printf( "\n n\t r\t nPr\t nCr\t nΠr\t nHr\n" ); printf( " ―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\\n" ); for( i = 0; i <= n; i++ ) { printf( " %2d\t%2d\t%13.0f\t%8.0f", n, i, [ウ], [エ] ); printf( "\t%18.0f\t%8.0f\n", [オ], [カ] ); } } /* 階乗を求める関数 */ double calculate_factorial( int n ) { double result = 1.0; int i; for( i = n; i >= 1; i-- ) result *= i; return result; } /* 順列を求める関数 */ double calculate_permutation( int n, int r ) { return [キ]; } /* 組み合わせを求める関数 */ double calculate_combination( int n, int r ) { return [ク]; } /* 重複順列を求める関数 */ double calculate_repeated_permutation( int n, int r ) { double result = 1.0; int i; for( i = 0; i < r; i++ ) result *= n; return result; } /* 重複組合せを求める関数 */ double calculate_homogeneous_product( int n, int r ) { return [ケ]; } |