プログラミング実習II (2025) 課題
[T5] 第5章 関数(2)
(T5_1) 2 個の整数の最大公約数を求めて表示するプログラムを作成する (通常,最大公約数は greatest common "divisor" という)
表示例: x = 560, y = 462 のとき 560 ÷ 462 = 1 … 98 462 ÷ 98 = 4 … 70 98 ÷ 70 = 1 … 28 70 ÷ 28 = 2 … 14 28 ÷ 14 = 2 gcd( 560, 462 ) = 14
表示例: x = 3355, y = 2379 のとき 3355 ÷ 2379 = 1 … 976 2379 ÷ 976 = 2 … 427 976 ÷ 427 = 2 … 122 427 ÷ 122 = 3 … 61 122 ÷ 61 = 2 gcd( 3355, 2379 ) = 61
#include <stdio.h> int gcd( int, int ); int main( void ){ int x, y; int g; printf("Enter an integer: "); scanf("%d", &x); printf("Enter another integer: "); scanf("%d", &y); printf("gcd( %d, %d ) = %d \n", x, y, g ); return 0; } int gcd( int x, int y ){ } |
(T5_2) main 関数以外の関数から,さらに別の関数を呼び出すことができる.以下のようなプログラムを作成せよ.
(T5_3) 以下のプログラムを作成せよ.平方根の計算には,標準ライブラリの数学関数 sqrt を用いるが,その使用はプログラム内で 1 箇所のみとする.
(T5_4) 下のプログラムについて, 次をレポートに記せ.
(main) x = ???, y = ??? ...のx ...のy (func) x = ???, y = ??? ...のx ...のy (main) x = ???, y = ??? ...のx ...のy (func) x = ???, y = ??? ...のx ...のy (main) x = ???, y = ??? ...のx ...のy (func) x = ???, y = ??? ...のx ...のy (main) x = ???, y = ??? ...のx ...のy (func) x = ???, y = ??? ...のx ...のy (main) x = ???, y = ??? ...のx ...のy
#include <stdio.h> int x; void func_a( void ); void func_b( void ); void func_c( int ); int func_d( int ); int main( void ) { int y; x = 10; y = 50; printf( "(main) x = %3d, y = %3d\n", x, y ); func_a( ); printf( "(main) x = %3d, y = %3d\n", x, y ); func_b( ); printf( "(main) x = %3d, y = %3d\n", x, y ); func_c( y ); printf( "(main) x = %3d, y = %3d\n", x, y ); y = func_d( y ); printf( "(main) x = %3d, y = %3d\n", x, y ); return 0; } void func_a( void ) { int y; y = 100; x += 5; printf( "(func) x = %3d, y = %3d\n", x, y ); } void func_b( void ) { int y; y = 100; y += 5; printf( "(func) x = %3d, y = %3d\n", x, y ); } void func_c( int y ) { x += 10; y += 10; printf( "(func) x = %3d, y = %3d\n", x, y ); } int func_d( int y ) { x += 20; y += 20; printf( "(func) x = %3d, y = %3d\n", x, y ); return y; } |
※「グローバル変数」は便利な面もあるが,プログラミングのミスにより意図と異なる値の書き換えなどを犯してしまいがちで,使用には注意が必要である.特 に今回は「関数」の習得が目標であり,引数・戻り値の概念を理解することが重要であるため,宿題課題[E5]ではグローバル変数を用いずに解答して下さ い.