当日のOHP資料です。
Download : sample-001.c ( SJIS 版 )
/* * 順次 : プログラムは上から下へ実行される */ #include <stdio.h> /* * main */ int main ( void ) { /* 処理を上から下に並べれば、その順に処理が実行される */ printf ( "1: このメッセージ 1 が、最初に表示されます。\n" ); printf ( "2: 次に、このメッセージ 2 が、表示されます。\n" ); printf ( "3: 最後に、このメッセージ 3 が、表示されます。\n" ); return 0; }
C:\usr\c\> sample-001 1: このメッセージ 1 が、最初に表示されます。 2: 次に、このメッセージ 2 が、表示されます。 3: 最後に、このメッセージ 3 が、表示されます。 C:\usr\c\>
Download : sample-002.c ( SJIS 版 )
/* * 選択: if 文を利用すれば、条件によって、処理を選択できる */ #include <stdio.h> /* * main */ int main ( void ) { FILE *fp; /* if 文を利用すれば、複数の処理を条件によって選択して実行できる */ if ( ( fp = fopen ( "sample-010.c", "r" ) ) != NULL ) { /* ファイル 「sample-010.c」があればオープンに成功する */ printf ( "今日のサンプルは 10 個数以上も有るらしい。\n" ); fclose ( fp ); /* オープンに成功した場合はクローズが必要 */ } else { /* オープンに失敗したのでファイルが存在しない */ printf ( "今日のサンプルは 10 個より少いので楽勝\n" ); } return 0; }
C:\usr\c\> sample-002 今日のサンプルは 10 個より少いので楽勝 C:\usr\c\>
Download : sample-003.c ( SJIS 版 )
/* * 繰返し: 同じ命令を繰り返し実行する様に指定できる */ #include <stdio.h> /* * main */ int main ( void ) { int i; printf ( "これから同じ「こんにちは !!」というメッセージを 10 回表示します。\n" ); /* for 文などを利用すれば、同じ命令を何度も繰り返す事ができる */ for ( i = 0; i < 10; i++ ) { /* 実行する回数は、プログラムの長さと関係ない 10 回を -> 99 回として、実行回数を 10 倍近くにしても プログラムの長さは同じ */ printf ( "こんにちは !!\n" ); } printf ( "これだけ挨拶すれば十分かな ?\n" ); return 0; }
C:\usr\c\> sample-003 これから同じ「こんにちは !!」というメッセージを 10 回表示します。 こんにちは !! こんにちは !! こんにちは !! こんにちは !! こんにちは !! こんにちは !! こんにちは !! こんにちは !! こんにちは !! こんにちは !! これだけ挨拶すれば十分かな ? C:\usr\c\>
Download : sample-004.c ( SJIS 版 )
/* * 手続きの基本構造 (入力, 処理, 出力) */ #include <stdio.h> /* * main */ int main ( void ) { int a; /* 足される数を保存する変数 */ int b; /* 足す数を保存する変数 */ int c; /* 足した結果を保存する変数 */ /* 入力 : 計算に必要なデータを変数に取り込む */ printf ( "足される数を入力してください\n" ); scanf ( "%d", &a ); printf ( "足す数を入力してください\n" ); scanf ( "%d", &b ); /* 処理 : 二つの数を足し合わせて、その結果を変数に保存する */ c = a + b; /* 出力 : 処理結果の返す */ printf ( "%d と %d の和は %d です\n", a, b, c ); return 0; }
23 49
C:\usr\c\> sample-004 足される数を入力してください 足す数を入力してください 23 と 49 の和は 72 です C:\usr\c\>
Download : sample-005.c ( SJIS 版 )
/* * 関数 : 手続きに名前を付けたもの */ #include <stdio.h> /* * wa : 二つの数を和を計算する関数 * 引数で与えられた二つの数の和を計算し、その結果を返す */ int wa ( int a, int b ) { int c; /* 入力 : 入力は、引数の形で与えられる */ /* 処理 : 処理の部分は同じ */ c = a + b; /* 出力 : 出力は計算結果を、return 文で指定する */ return c; } /* * main */ int main ( void ) { int a; /* 足される数を保存する変数 */ int b; /* 足す数を保存する変数 */ int c; /* 足した結果を保存する変数 */ /* 入力 : 計算に必要なデータを変数に取り込む */ printf ( "足される数を入力してください\n" ); scanf ( "%d", &a ); printf ( "足す数を入力してください\n" ); scanf ( "%d", &b ); /* 処理 : wa の結果を変数に保存する */ /* 関数呼び出し : 処理を wa に依頼 * 処理(計算) に必要な情報 (a,b) を、引数の形で与えると * 処理結果が、関数値として戻ってくるので、それを変数 (c) に代入する */ c = wa ( a, b ); /* 出力 : 処理結果の返す */ printf ( "%d と %d の和は %d です\n", a, b, c ); return 0; }
23 49
C:\usr\c\> sample-005 足される数を入力してください 足す数を入力してください 23 と 49 の和は 72 です C:\usr\c\>
Download : sample-006.c ( SJIS 版 )
/* * アルゴリズムの例 : ユークリッドの互除法 */ #include <stdio.h> /* * euclid : ユークリッドの互除法を利用して二つの自然数の最大公約数を求める */ int euclid ( int m, int n ) { /* ユークリッドの互除法で最大公約数を求める */ while ( m != n ) { /* 二つの数が異る間、以下の作業を繰り返す */ /* 大きい方の数を小さい方数だけ減らす */ if ( m > n ) { /* m の方が大きい */ m = m - n; /* m を n だけ減らす */ } else { /* n の方が大きい */ n = n - m; /* n を m だけ減らす */ } } /* ここに来たということは、 m == n が成立している */ /* 実は、その値が、最初の m, n の値の最大公約数 */ return m; /* その値を最大公約数として返す */ } /* * main */ int main ( void ) { int m; /* 一つ目の自然数 */ int n; /* 二つ目の自然数 */ int c; /* 最大公約数を保存する変数 */ /* 入力 : 計算に必要なデータを変数に取り込む */ printf ( "一つ目の自然数を入力してください\n" ); scanf ( "%d", &m ); printf ( "二つ目の自然数を入力してください\n" ); scanf ( "%d", &n ); /* 処理 : 関数 euclid を利用して、最大公約数を求める */ c = euclid ( m, n ); /* 出力 : 処理結果を画面に出力 */ printf ( "%d と %d の最大公約数は %d\n", m, n, c ); return 0; }
24 18
C:\usr\c\> sample-006 一つ目の自然数を入力してください 二つ目の自然数を入力してください 24 と 18 の最大公約数は 6 C:\usr\c\>
Download : sample-007.c ( SJIS 版 )
/* * ユークリッドの互除法 (再帰版) */ #include <stdio.h> /* * euclid : ユークリッドの互除法を利用して二つの自然数の最大公約数を求める */ int euclid ( int m, int n ) { /* ユークリッドの互除法で最大公約数を求める */ if ( m == n ) { /* 二つの数が同じ */ return m; /* その数が答 */ } else { /* そうでなければ、大きい方から小さい数を引いて.. */ if ( m > n ) { /* m の方が大きい */ return euclid ( m - n, n ); /* 再帰 */ } else { /* n の方が大きい */ return euclid ( m, n - m ); /* 再帰 */ } } } /* * main */ int main ( void ) { int m; /* 一つ目の自然数 */ int n; /* 二つ目の自然数 */ int c; /* 最大公約数を保存する変数 */ /* 入力 : 計算に必要なデータを変数に取り込む */ printf ( "一つ目の自然数を入力してください\n" ); scanf ( "%d", &m ); printf ( "二つ目の自然数を入力してください\n" ); scanf ( "%d", &n ); /* 処理 : 関数 euclid を利用して、最大公約数を求める */ c = euclid ( m, n ); /* 出力 : 処理結果を画面に出力 */ printf ( "%d と %d の最大公約数は %d\n", m, n, c ); return 0; }
24 18
C:\usr\c\> sample-007 一つ目の自然数を入力してください 二つ目の自然数を入力してください 24 と 18 の最大公約数は 6 C:\usr\c\>
Download : sample-008.c ( SJIS 版 )
/* * 色々な型のデータの入出力 */ #include <stdio.h> /* * main */ int main ( void ) { int iv; /* 整数型 */ float fv; /* 単精度浮動小数点型 */ char sv[10]; /* 文字列 */ // double dv; /* 倍精度浮動小数点型 */ /* 入力 */ scanf ( "%d", &iv ); /* 型によって書式指定が異なる */ scanf ( "%f", &fv ); scanf ( "%s", sv ); // scanf ( "%lf", &dv); /* 出力 */ printf ( "iv=%d\n", iv ); /* 型によって書式指定が異なる */ printf ( "fv=%f\n", fv ); printf ( "sv=%s\n", sv ); // printf ( "dv=%f\n", dv ); return 0; }
1 1 1
C:\usr\c\> sample-008 iv=1 fv=1.000000 sv=1 C:\usr\c\>
Download : sample-009.c ( SJIS 版 )
/* * 色々な型のデータの入出力 */ #include <stdio.h> /* * main */ int main ( void ) { int iv; /* 整数型 */ float fv; /* 単精度浮動小数点型 */ char sv[10]; /* 文字列 */ /* 入力 */ scanf ( "%d", &iv ); scanf ( "%d", &fv ); /* 書式指定を間違えると.. */ scanf ( "%s", sv ); /* 出力 */ printf ( "iv=%d\n", iv ); /* 型によって書式指定が異なる */ printf ( "fv=%f\n", fv ); printf ( "sv=%s\n", sv ); return 0; }
1 1 1
C:\usr\c\> sample-009 iv=1 fv=0.000000 sv=1 C:\usr\c\>
Download : sample-010.c ( SJIS 版 )
/* * 様々な演算子 */ #include <stdio.h> /* * main */ int main ( void ) { int a; int b; printf ( "一つ目の数\n" ); scanf ( "%d", &a ); printf ( "二つ目の数\n" ); scanf ( "%d", &b ); printf ( "%d + %d = %d\n", a, b, a + b ); /* 演算子 '+' */ printf ( "%d - %d = %d\n", a, b, a - b ); /* 演算子 '-' */ printf ( "%d & %d = %d\n", a, b, a & b ); /* 演算子 '&' */ printf ( "%d && %d = %d\n", a, b, a && b ); /* 演算子 '&&' */ return 0; }
6 3
C:\usr\c\> sample-010 一つ目の数 二つ目の数 6 + 3 = 9 6 - 3 = 3 6 & 3 = 2 6 && 3 = 1 C:\usr\c\>