当日のOHP資料です。
関数( Text p.114 - 125 )
Download : sample-001.c ( SJIS 版 )
/* * 二つの整数の大きい方の値を返す関数 * List 6-1 ( p.115 ) */ #include <stdio.h> /* * 大きい方の値を返す */ int maxof ( int x, int y ) { if ( x > y ) { /* x と y を大小比較 */ return x; /* x が大きい時は x の値を返す */ } else { return y; /* そうでなければ y の値を返す */ } } /* * main */ int main ( void ) { int na; int nb; puts ( "二つの整数を入力してください。" ); printf ( "整数 1:" ); scanf ( "%d", &na ); printf ( "整数 2:" ); scanf ( "%d", &nb ); printf ( "大きい方の値は %d です。\n", maxof ( na, nb ) ); return 0; }
83 45
C:\usr\c\> sample-001 二つの整数を入力してください。 整数 1:整数 2:大きい方の値は 83 です。 C:\usr\c\>
Download : sample-002.c ( SJIS 版 )
/* * 関数を利用しない場合 * cf. sample-001.c */ #include <stdio.h> /* * main */ int main ( void ) { int na; int nb; int maxof; /* 関数の値を入れる変数 : 関数の定義の代わりに関数の値を取る変数を用意 */ puts ( "二つの整数を入力してください。" ); printf ( "整数 1:" ); scanf ( "%d", &na ); printf ( "整数 2:" ); scanf ( "%d", &nb ); /* * 大きい方の値を返す */ { /* 関数本体 : 新しいブロックを作ると、そこで変数の宣言ができる */ /* 関数呼び出し「maxof ( na, nb )」に相当する部分 */ int x = na; /* 仮引数 x を宣言し、それに実引数 na の値を代入 */ int y = nb; /* 仮引数 y を宣言し、それに実引数 nb の値を代入 */ if ( x > y ) { /* x と y を大小比較 */ /* return x; */ /* x が大きい時は x の値を返す */ maxof = x; /* 値を返すという事は、関数の値を決めている事に相当する */ /* return には、もう一つ、関数を終了するという意味もある */ } else { /* return y; */ /* そうでなければ y の値を返す */ maxof = y; } } /* この時点で、変数 maxof には na と nb の大きい方の値が入っている */ printf ( "大きい方の値は %d です。\n", maxof ); return 0; }
83 45
C:\usr\c\> sample-002 二つの整数を入力してください。 整数 1:整数 2:大きい方の値は 83 です。 C:\usr\c\>
Download : sample-003.c ( SJIS 版 )
/* * 三つの int 型整数の最大値を返す関数 * List 6-2 (text p.118) */ #include <stdio.h> /* * 三つの int 型整数の最大値を返す関数 */ int max3 ( int x, int y, int z ) { int max = x; /* とりあえず最大値の候補として x を採択 */ if ( y > max ) { /* y と現在の候補値を比較し */ max = y; /* y の方が大きいならば、y を候補値とする */ } /* そうでなければそのまま */ if ( z > max ) { /* 同様に、z と現在の候補値を比較し */ max = z; /* z の方が大きいならば、z を候補値とする */ } /* そうでなければそのまま */ return max; /* 最終的な結果が、三つの数内の最大値 */ } /* * 動作を確認する main 関数 */ int main ( int argc, char *argv[] ) { int na; int nb; int nc; puts ( "三つの整数を入力してください。\n" ); printf ( "整数 1:"); scanf ( "%d", &na ); printf ( "整数 2:"); scanf ( "%d", &nb ); printf ( "整数 3:"); scanf ( "%d", &nc ); printf ( "最も大きい値は %d です。\n", max3 ( na, nb, nc ) ); return 0; }
83 45 25
C:\usr\c\> sample-003 三つの整数を入力してください。 整数 1:整数 2:整数 3:最も大きい値は 83 です。 C:\usr\c\>
Download : sample-004.c ( SJIS 版 )
/* * 二つの整数の二乗の差を求める * List 6-3 (text p.119) */ #include <stdio.h> /* * 二乗値を返す */ int sqr ( int x ) { return x * x; } /* * 二つの数の差を返す */ int diff ( int x, int y ) { return (x > y) ? (x - y) : (y - x); } /* * 動作を確認する main 関数 */ int main ( int argc, char *argv[] ) { int kx; int ky; int kx2; int ky2; puts ( "二つの整数を入力してください。\n" ); printf ( "整数 kx:"); scanf ( "%d", &kx ); printf ( "整数 ky:"); scanf ( "%d", &ky ); kx2 = sqr ( kx ); ky2 = sqr ( ky ); printf ( "kx の二乗と ky の二乗の差は %d です。", diff ( kx2, ky2 ) ); return 0; }
23 49
C:\usr\c\> sample-004 二つの整数を入力してください。 整数 kx:整数 ky:kx の二乗と ky の二乗の差は 1872 です。C:\usr\c\>
Download : sample-005.c ( SJIS 版 )
/* * べき乗を求める * List 6-4 (text p.120) */ #include <stdio.h> /* * dx の no 乗を返す */ double power ( double dx, int no ) { int i; double temp = 1.0; for ( i = 0; i < no; i++ ) { temp = temp * dx; } return temp; } /* * 動作を確認する main 関数 */ int main ( int argc, char *argv[] ) { double x; int n; printf ( "実数を入力してください : "); scanf ( "%lf", &x ); printf ( "整数を入力してください : "); scanf ( "%d", &n ); printf ( "%.2f の %d 乗は %.2f です。", power ( x, n ) ); return 0; }
4.0 3
C:\usr\c\> sample-005 実数を入力してください : 整数を入力してください : 64.00 の -1078401560 乗は 4.00 です。C:\usr\c\>
/* * [参考] Ex. 6-2 (text p.118) * [比較] 2010/06/18 List 6-2 */ /* * 三つの int 型整数の最小値を返す関数 */ #include <stdio.h> /* * 三つの int 型整数の最大値を返す関数 */ int min3 ( int x, int y, int z ) { /* ** この部分を完成させなさい */ } /* * 動作を確認する main 関数 */ int main ( int argc, char *argv[] ) { int na; int nb; int nc; puts ( "三つの整数を入力してください。\n" ); printf ( "整数 1:"); scanf ( "%d", &na ); printf ( "整数 2:"); scanf ( "%d", &nb ); printf ( "整数 3:"); scanf ( "%d", &nc ); printf ( "最も小さい値は %d です。\n", min3 ( na, nb, nc ) ); return 0; }
C:\usr\c\> 20100618-1 三つの整数を入力してください。 整数 1:整数 2:整数 3:最も小さい値は 25 です。 C:\usr\c\>
/* * [参考] Ex. 6-4 (text p.121) * [比較] 2010/06/18 List 6-3 */ /* * int 型整数の四乗値を返す関数 */ #include <stdio.h> /* * int 型整数の二乗値を返す関数 */ int sqr ( int x ) { return x * x; } /* * int 型整数の四乗値を返す関数 : ヒント : sqr は利用してよい */ int pow4 ( int x ) { /* ** この部分を完成させなさい */ } /* * 動作を確認する main 関数 */ int main ( int argc, char *argv[] ) { int n; puts ( "一つの整数を入力してください。\n" ); printf ( "整数:"); scanf ( "%d", &n ); printf ( "%d の4乗値は %d です。\n", n, pow4 ( n ) ); return 0; }
3
C:\usr\c\> 20100618-2 一つの整数を入力してください。 整数:3 の4乗値は 81 です。 C:\usr\c\>
/* * [参考] Ex. 6-5 (text p.123) * [比較] 2010/06/18 List 6-3 */ /* * 警報を no 回だけ発する関数 */ #include <stdio.h> /* * 文字 ch を no 個連続表示 */ void put_nchar ( int ch, int no ) { while ( no-- > 0 ) { putchar ( ch ); } } /* * 警報を no 回だけ発する関数 */ void alert ( int no ) { /* ** この部分を完成させなさい */ } /* * 動作を確認する main 関数 */ int main ( int argc, char *argv[] ) { int n; puts ( "一つの整数を入力してください。\n" ); printf ( "整数:"); scanf ( "%d", &n ); printf ( "%d 回数ベルを鳴らします\n", n ); alert ( n ); return 0; }
3
C:\usr\c\> 20100618-3 一つの整数を入力してください。 整数:3 回数ベルを鳴らします ^G^G^GC:\usr\c\>
/* * [参考] Ex. 6-6 (text p.125) * [比較] 2010/06/18 List 6-3 */ /* * 画面に「こんにちは。」を表示して改行を行う関数 */ #include <stdio.h> /* * 画面に「こんにちは。」を表示して改行を行う関数 */ void hello ( void ) { /* ** この部分を完成させなさい */ } /* * 動作を確認する main 関数 */ int main ( int argc, char *argv[] ) { int n; hello(); return 0; }
C:\usr\c\> 20100618-4 こんにちは。 C:\usr\c\>
-->