当日のOHP資料です。
Download : sample-001.c ( SJIS 版 )
/* * 2012/09/28 sample-001.c */ #include <stdio.h> #include "s_print.h" /* * */ int assign_variable ( int n ) { /* n の値を参照 */ s_print_string ( "n = " ); s_print_int ( n ); s_print_newline(); n = n - 1; /* 代入 */ s_print_string ( "n = " ); s_print_int ( n ); s_print_newline(); n = n - 1; /* 代入 */ s_print_string ( "n = " ); s_print_int ( n ); s_print_newline(); n = n - 1; /* 代入 */ s_print_string ( "n = " ); s_print_int ( n ); s_print_newline(); n = n - 1; /* 代入 */ s_print_string ( "n = " ); s_print_int ( n ); s_print_newline(); n = n - 1; /* 代入 */ s_print_string ( "n = " ); s_print_int ( n ); s_print_newline(); } /* * */ void function_argument ( int n ) { /* n の値を参照 */ s_print_string ( "n = " ); s_print_int ( n ); s_print_newline(); if ( n > 0 ) { function_argument ( n - 1 ); } } /* * */ int main ( void ) { /* * assign_variable */ s_print_string ( "assign_variable ( 5 )\n" ); assign_variable ( 5 ); /* * */ s_print_newline(); /* * function_argument ( 5 ); */ s_print_string ( "function_argument ( 5 )\n" ); function_argument ( 5 ); /* * */ return 0; } /* * */
C:\usr\c>sample-001 assign_variable ( 5 ) n = 5 n = 4 n = 3 n = 2 n = 1 n = 0 function_argument ( 5 ) n = 5 n = 4 n = 3 n = 2 n = 1 n = 0 C:\usr\c>
Download : sample-002.c ( SJIS 版 )
/* * 2012/09/28 sample-002.c */ #include <stdio.h> #include "s_print.h" /* * */ int argument_variable ( int n ) { s_print_string ( "n = " ); s_print_int ( n ); s_print_newline(); } /* * */ int local_variable ( void ) { /* 引数はないので「void」を指定 */ int n; /* 局所変数「n」の型宣言( n は int 型 ) */ n = 5; /* 代入によって値(5)を指定 */ /* それ以外は、argument_variable と同じ */ s_print_string ( "n = " ); s_print_int ( n ); s_print_newline(); } /* * */ int main ( void ) { /* * 引数による 「5」の出力 */ argument_variable ( 5 ); /* 実引数「5」を指定する */ /* * 局所変数による「5」の出力 */ local_variable(); /* 実引数は指定しない/する必要がない/できない */ /* * */ return 0; } /* * */
C:\usr\c>sample-002 n = 5 n = 5 C:\usr\c>
Download : sample-003.c ( SJIS 版 )
/* * 2012/09/28 sample-003.c */ #include <stdio.h> #include "s_print.h" #include "s_input.h" /* * input - process - output */ /* * 結果の出力 */ void result_out ( int m, int n, char *message, int result ) { s_print_int ( m ); s_print_string ( " と " ); s_print_int ( n ); s_print_string ( " の" ); s_print_string ( message ); s_print_string ( "は " ); s_print_int ( result ); s_print_string ( " です。" ); s_print_newline(); } /* * main */ int main ( void ) { int m; /* 一つ目の整数を納める */ int n; /* 二つ目の整数を納める */ int wa; /* 和の計算結果を納める */ /* * 入力 */ /* 一つ目の整数の入力 */ s_print_string ( "m の値を入力してください : " ); m = s_input_int(); /* m に、キーボードから一つ目の整数を入力し代入 */ /* 二つ目の整数の入力 */ s_print_string ( "n の値を入力してください : " ); n = s_input_int(); /* n に、キーボードから二つ目の整数を入力し代入 */ /* * 処理 */ /* 和の計算 */ wa = m + n; /* 二つの整数の和を計算し、変数 wa に代入 */ /* * 出力 */ /* 結果の出力 */ result_out ( m, n, "和", wa ); return 0; } /* * */
12 5
C:\usr\c>sample-003< sample-003.in m の値を入力してください : 12 n の値を入力してください : 5 12 と 5 の和は 17 です。 C:\usr\c>
Download : sample-004.c ( SJIS 版 )
/* * 2012/09/28 sample-004.c */ #include <stdio.h> #include "s_print.h" #include "s_input.h" /* * 再帰を利用した sum */ int sum ( int n ) { if ( n > 0 ) { return sum ( n - 1 ) + n; } else { return 1; } } /* * */ int main ( void ) { int m; /* 一つ目の整数を納める */ int s; /* 総和の計算結果を納める */ /* * 入力 */ /* 一つ目の整数の入力 */ s_print_string ( "n の値を入力してください : " ); n = s_input_int(); /* n に、キーボードから一つ目の整数を入力し代入 */ /* * 処理 */ s = sum ( n ); /* * 出力 */ s_print_int ( n ); s_print_string ( " までの総和は " ); s_print_int ( s ); s_print_string ( " です。" ); s_print_newline(); /* * */ return 0; } /* * */
10
C:\usr\c>sample-004< sample-004.in m の値を入力してください : 10 n の値を入力してください : 134516608 10 と 134516608 の和は 134516618 です。 C:\usr\c>
Download : sample-005.c ( SJIS 版 )
/* * 2012/09/28 sample-005.c */ #include <stdio.h> #include "s_print.h" #include "s_input.h" /* * while を利用した sum */ int sum ( int n ) { int resutl = 0; while ( n > 0 ) { result = result + n; n = n - 1 ; } return result; } /* * */ int main ( void ) { int m; /* 一つ目の整数を納める */ int s; /* 総和の計算結果を納める */ /* * 入力 */ /* 一つ目の整数の入力 */ s_print_string ( "n の値を入力してください : " ); n = s_input_int(); /* n に、キーボードから一つ目の整数を入力し代入 */ /* * 処理 */ s = sum ( n ); /* * 出力 */ s_print_int ( n ); s_print_string ( " までの総和は " ); s_print_int ( s ); s_print_string ( " です。" ); s_print_newline(); /* * */ return 0; } /* * */
10
C:\usr\c>sample-005< sample-005.in m の値を入力してください : 10 n の値を入力してください : 134516608 10 と 134516608 の和は 134516618 です。 C:\usr\c>
Download : sample-006.c ( SJIS 版 )
/* * 2012/09/28 sample-006.c */ #include <stdio.h> #include "s_print.h" /* * 2 進数 / 10 進数 / 16 進数 */ int main ( void ) { /* * 0 */ s_print_string ( "00000 " ); s_print_int ( 0 ); s_print_string ( " " ); s_print_hex ( 0 ); s_print_newline(); /* * 1 */ s_print_string ( "00001 " ); s_print_int ( 1 ); s_print_string ( " " ); s_print_hex ( 1 ); s_print_newline(); /* * 2 */ s_print_string ( "00010 " ); s_print_int ( 2 ); s_print_string ( " " ); s_print_hex ( 2 ); s_print_newline(); /* * 3 */ s_print_string ( "00011 " ); s_print_int ( 3 ); s_print_string ( " " ); s_print_hex ( 3 ); s_print_newline(); /* * 4 */ s_print_string ( "00100 " ); s_print_int ( 4 ); s_print_string ( " " ); s_print_hex ( 4 ); s_print_newline(); /* * 9 */ s_print_string ( "01001 " ); s_print_int ( 9 ); s_print_string ( " " ); s_print_hex ( 9 ); s_print_newline(); /* * 10 */ s_print_string ( "01010 " ); s_print_int ( 10 ); s_print_string ( " " ); s_print_hex ( 10 ); s_print_newline(); /* * 11 */ s_print_string ( "01011 " ); s_print_int ( 11 ); s_print_string ( " " ); s_print_hex ( 11 ); s_print_newline(); /* * 12 */ s_print_string ( "01100 " ); s_print_int ( 12 ); s_print_string ( " " ); s_print_hex ( 12 ); s_print_newline(); /* * 15 */ s_print_string ( "01111 " ); s_print_int ( 15 ); s_print_string ( " " ); s_print_hex ( 15 ); s_print_newline(); /* * 16 */ s_print_string ( "10000 " ); s_print_int ( 16 ); s_print_string ( " " ); s_print_hex ( 16 ); s_print_newline(); /* * 17 */ s_print_string ( "10001 " ); s_print_int ( 17 ); s_print_string ( " " ); s_print_hex ( 17 ); s_print_newline(); /* * 20 */ s_print_string ( "10100 " ); s_print_int ( 20 ); s_print_string ( " " ); s_print_hex ( 20 ); s_print_newline(); /* * 40 */ s_print_string ( "101000 " ); s_print_int ( 40 ); s_print_string ( " " ); s_print_hex ( 40 ); s_print_newline(); return 0; } /* * */
C:\usr\c>sample-006 00000 0 0 00001 1 1 00010 2 2 00011 3 3 00100 4 4 01001 9 9 01010 10 a 01011 11 b 01100 12 c 01111 15 f 10000 16 10 10001 17 11 10100 20 14 101000 40 28 C:\usr\c>
Download : sample-007.c ( SJIS 版 )
/* * 2012/09/28 sample-007.c */ #include <stdio.h> #include "s_print.h" /* * 10 進 to 2 進数 */ void bin_print ( int n ) { if ( n != 0 ) { bin_print ( n / 2 ); s_print_int ( n % 2 ); } } /* * */ void print_int_and_bin ( int n ) { s_print_int ( n ); s_print_string ( " = " ); bin_print ( n ); s_print_newline(); } /* * */ int main ( void ) { print_int_and_bin ( 1 ); print_int_and_bin ( 2 ); print_int_and_bin ( 3 ); print_int_and_bin ( 10 ); print_int_and_bin ( 100 ); return 0; } /* * */
C:\usr\c>sample-007 1 = 1 2 = 10 3 = 11 10 = 1010 100 = 1100100 C:\usr\c>
Download : sample-008.c ( SJIS 版 )
/* * 2012/09/28 sample-008.c */ #include <stdio.h> #include "s_print.h" /* * 2 のべき乗の計算 (再帰版) * * 2^n == power( n ) * もし n が 0 の時は 1 になる * そうでなければ、 * 2^n == 2^(n-1) * 2 * == 2^(n-1) + 2^(n-1) * == power( n-1 )+power( n-1 ) */ int power ( int n ) { s_print_string ( "Call Power\n" ); if ( n > 0 ) { return power ( n - 1 ) + power ( n - 1 ); } else { /* おそらく n は 0 */ return 1; } } /* * */ int main ( void ) { s_print_int ( power ( 3 ) ); s_print_newline(); return 0; } /* * */
C:\usr\c>sample-008 Call Power Call Power Call Power Call Power Call Power Call Power Call Power Call Power Call Power Call Power Call Power Call Power Call Power Call Power Call Power 8 C:\usr\c>
Download : sample-009.c ( SJIS 版 )
/* * 2012/09/28 sample-009.c */ #include <stdio.h> #include "s_print.h" /* * 2 のべき乗の計算 (再帰版) * * 2^n == power( n ) * もし n が 0 の時は 1 になる * そうでなければ、 * 2^n == 2^(n-1) * 2 * == 2^(n-1) + 2^(n-1) * == power( n-1 )+power( n-1 ) */ int power ( int n ) { s_print_string ( "Call Power\n" ); if ( n > 0 ) { int pr = power ( n - 1 ); /* 局所変数 pr に計算結果を保存 */ return pr + pr; /* 値を二度利用している(再計算しない) */ } else { /* おそらく n は 0 */ return 1; } } /* * */ int main ( void ) { s_print_int ( power ( 3 ) ); s_print_newline(); return 0; } /* * */
C:\usr\c>sample-009 Call Power Call Power Call Power Call Power 8 C:\usr\c>
Download : 20121005-01.c ( SJIS 版 )
/* * DATE-DIR-QQQQ.c * 二つの整数をキーボードから入力し、四則の結果を出力(代入版) */ /* * */ #define EOS '\0' #include <stdio.h> #include "s_print.h" #include "s_input.h" /* * 結果の出力 */ void result_out ( int m, int n, char *message, int result ) { s_print_int ( m ); s_print_string ( " と " ); s_print_int ( n ); s_print_string ( " の" ); s_print_string ( message ); s_print_string ( "は " ); s_print_int ( result ); s_print_string ( " です。" ); s_print_newline(); } /* * */ int main ( int argc, char *argv[] ) { int m; /* 一つ目の整数を納める */ int n; /* 二つ目の整数を納める */ int wa; /* 和の計算結果を納める */ /* ** この部分を完成させなさい */ int sho; /* 商の計算結果を納める */ /* 一つ目の整数の入力 */ s_print_string ( "m の値を入力してください : " ); m = s_input_int(); /* m に、キーボードから一つ目の整数を入力し代入 */ /* 二つ目の整数の入力 */ /* ** この部分を完成させなさい */ /* 四則の計算 */ wa = m + n; /* 二つの整数の和を計算し、変数 wa に代入 */ sa = m - n; /* 二つの整数の差を計算し、変数 sa に代入 */ /* ** この部分を完成させなさい */ /* 結果の出力 */ result_out ( m, n, "和", wa ); /* ** この部分を完成させなさい */ result_out ( m, n, "積", seki ); /* ** この部分を完成させなさい */ return 0; } /* * */
13 4
C:\usr\c\> 20121005-01 m の値を入力してください : 13 n の値を入力してください : 4 13 と 4 の和は 17 です。 13 と 4 の差は 9 です。 13 と 4 の積は 52 です。 13 と 4 の商は 3 です。 C:\usr\c\>
Download : 20121005-02.c ( SJIS 版 )
/* * DATE-DIR-QQQQ.c * n の階乗を求める ( while & 代入版 ) */ /* * */ #define EOS '\0' #include <stdio.h> #include "s_print.h" #include "s_input.h" /* * 階乗の計算 */ int factrial ( int n ) { int result = 1; /* 計算結果を納める変数 ( 1 で初期化 ) */ while ( n > 0 ) { /* n が正の間、繰り返す */ /* ** この部分を完成させなさい */ } return result; /* 結果を返す */ } /* * */ int main ( int argc, char *argv[] ) { int n; /* 入力された整数数を納める */ int f; /* 階乗の計算結果を納める */ /* 整数の入力 */ s_print_string ( "n の値を入力してください : " ); n = s_input_int(); /* n に、キーボードから整数を入力し代入 */ /* 階乗の計算 : 関数 factrial を呼び出す */ /* ** この部分を完成させなさい */ /* 結果の出力 */ s_print_int ( n ); s_print_string ( " の階乗は " ); s_print_int ( f ); s_print_string ( " です。" ); s_print_newline(); return 0; } /* * */
5
C:\usr\c\> 20121005-02 n の値を入力してください : 5 5 の階乗は 120 です。 C:\usr\c\>