Source code
関数の単純な使用例(1): 引数の3倍+4を返す関数
Copy #include <stdio.h>
void opening ( void )
{
printf( "program start\n" ) ;
}
int main ( void )
{
opening() ;
return 0 ;
}
関数の引数の使用例(2): Yah!を出力する関数
Copy #include <stdio.h>
int func1 ( int x)
{
int y;
y = 3 * x + 4 ;
return y;
}
int main ( void )
{
int y;
y = func1( 2 ) ;
printf( "y = %d \n" , y) ;
return 0 ;
}
出席が10回以上ならo,10回未満ならxを出力する関数
Copy #include <stdio.h>
void syusseki_hantei ( int kaisu)
{
if (kaisu >= 10 )
{
printf( "o\n" ) ;
}
else
{
printf( "x\n" ) ;
}
}
int main ( void )
{
int i;
printf( "How many times were you present?\n" ) ;
scanf( " %d " , & i) ;
syusseki_hantei(i) ;
return 0 ;
}
Nを与えると,1からNまでの和を求めて返す関数
Copy #include <stdio.h>
int tashizan ( int n)
{
int i , t = 0 ;
for (i = 1 ; i <= n; i ++ )
t += i;
return t;
}
int main ( void )
{
int total , n;
printf( "Input N=" ) ;
scanf( " %d " , & n) ;
total = tashizan(n) ;
printf( "Total= %d \n" , total) ;
return 0 ;
}
Problem
問題1. 「Hello」と出力する関数(引数なし,戻り値なし)を作り,main()
関数内から2回呼び出せ.参考:p.124
問題2. 度単位の角度を引数として渡すと,ラジアン単位に換算した戻り値を返す関数(引数double型,戻り値double型)を作り,main()
関数でその関数を使え.($\pi/180*deg=rad$)
問題3. 2つの整数を渡すと,大きい方の数値を戻り値として返す関数を作り,main()
関数でその関数を使え.
問題4. サイズを示す数値(整数)と,表示する文字を引数として渡すと,引数で指定した文字とサイズの三角形を表示する関数を作り,main()
関数でその関数を使え.
問題5. 下のプログラムでは,同じような計算が何度も出てくる.計算の部分を関数化し,それを用いてプログラム記述をシンプルにせよ. (この計算式は並列抵抗値を求める)
Copy #include <stdio.h>
int main ( void )
{
double r1 = 11 , r2 = 51 , ra = 30 , rb = 27 , Ra = 300 , Rb = 100 ;
double r3 , rc , Rc;
r3 = (r1 * r2) / (r1 + r2);
rc = (ra * rb) / (ra + rb);
Rc = (Ra * Rb) / (Ra + Rb);
printf( " %.1f %.1f %.1f \n" , r3 , rc , Rc) ;
return 0 ;
}
Solutions
問題1
「Hello」と出力する関数(引数なし,戻り値なし)を作り,main()関数内から2回呼び出せ.参考:p.124
Copy #include <stdio.h>
void func_hello ( void );
int main ( void )
{
func_hello() ;
func_hello() ;
return 0 ;
}
void func_hello ( void )
{
printf( "Hello\n" ) ;
}
問題2
度単位の角度を引数として渡すと,ラジアン単位に換算した戻り値を返す関数(引数double型,戻り値double型)を作り,main()関数でその関数を使え.($\pi/180*deg=rad$)
Copy #include <stdio.h>
double deg2rad ( double a);
int main ( void )
{
double ang = 120 ;
printf( " %f deg = %f rad\n" , ang , deg2rad(ang)) ;
return 0 ;
}
double deg2rad ( double a)
{
double b;
b = a * 3.1416 / 180 ;
return b;
}
問題3
2つの整数を渡すと,大きい方の数値を戻り値として返す関数を作り,main()関数でその関数を使え.
Copy #include <stdio.h>
int max_value ( int a , int b);
int main ( void )
{
printf( " %d \n" , max_value( 50 , 100 )) ;
return 0 ;
}
int max_value ( int a , int b)
{
if (a > b) return a;
else return b;
}
問題4
サイズを示す数値(整数)と,表示する文字を引数として渡すと,引数で指定した文字とサイズの三角形を表示する関数を作り,main()関数でその関数を使え.
Copy #include <stdio.h>
void DrawTriangle ( int size , char ch);
int main ( void ){
DrawTriangle( 3 , '%' ) ;
DrawTriangle( 5 , '&' ) ;
return 0 ;
}
void DrawTriangle ( int size , char ch){
int i , j;
for (i = 0 ;i < size;i ++ ){
for (j = 0 ;j <= i;j ++ ) printf( " %c " , ch) ;
printf( "\n" ) ;
}
}
問題5
下のプログラムでは,同じような計算が何度も出てくる.計算の部分を関数化し,それを用いてプログラム記述をシンプルにせよ. (この計算式は並列抵抗値を求める)
Copy #include <stdio.h>
double fn ( double a , double b)
{
return (a * b) / (a + b);
}
int main ( void )
{
double r1 = 11 , r2 = 51 , ra = 30 , rb = 27 , Ra = 300 , Rb = 100 ;
double r3 , rc , Rc;
r3 = fn(r1 , r2) ;
rc = fn(ra , rb) ;
Rc = fn(Ra , Rb) ;
printf( " %.1f %.1f %.1f \n" , r3 , rc , Rc) ;
return 0 ;
}
Last updated 2 months ago