Download : sample-001.c ( SJIS 版 )
/* * 2015/09/25 sample-001.c */ /* * 複数条件の分岐 * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o BASENAME.exe sample-001.c * 実行 * BASENAME */ #include <stdio.h> /* * trump * トランプの番号から、その名前を表示する */ void trump ( int number ) { printf ( "数値 %d の表すカードは、", number ); if ( number == 1 ) { /* 番号が 1 なら エース (A) */ printf ( "エース" ); } else if ( number == 11 ) { /* 番号が 11 なら ジャック (J) */ printf ( "ジャック" ); } else if ( number == 12 ) { /* 番号が 12 なら クイーン (Q) */ printf ( "クイーン" ); } else if ( number == 13 ) { /* 番号が 13 なら キング (K) */ printf ( "キング" ); } else if ( number == 0 ) { /* 番号が 0 の場合は例外的に ジョーカー ($) */ printf ( "ジョーカー" ); } else { /* それ以外 */ if ( number < 0 ) { /* 番号が負の場合は.. */ printf ( "範囲外" ); } else if ( 13 < number ) { /* 番号が 13 より大きい場合は.. */ printf ( "範囲外" ); } else { /* それ以外は.. */ printf ( "%d の数カード", number ); } } printf ( "です。\n" ); } /* * main * */ int main( int argc, char *argv[] ) { trump ( -1 ); trump ( 0 ); trump ( 1 ); trump ( 7 ); trump ( 10 ); trump ( 13 ); trump ( 20 ); return 0; }
$ ./sample-001.exe 数値 -1 の表すカードは、範囲外です。 数値 0 の表すカードは、ジョーカーです。 数値 1 の表すカードは、エースです。 数値 7 の表すカードは、7 の数カードです。 数値 10 の表すカードは、10 の数カードです。 数値 13 の表すカードは、キングです。 数値 20 の表すカードは、範囲外です。 $
Download : sample-002.c ( SJIS 版 )
/* * 2015/09/25 sample-002.c */ /* * 複数条件の分岐(case 文を利用した場合) * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o BASENAME.exe sample-002.c * 実行 * BASENAME */ #include <stdio.h> /* * trump * トランプの番号から、その名前を表示する */ void trump ( int number ) { printf ( "数値 %d の表すカードは、", number ); switch ( number ) { /* 一つの式の値で分岐 */ case 1: /* 番号が 1 なら エース (A) { (開きブロック) */ printf ( "エース" ); break; /* ここで 1 の場合がおわる } (閉じブロック) */ case 11: /* 番号が 11 なら ジャック (J) */ printf ( "ジャック" ); break; case 12: /* 番号が 12 なら クイーン (Q) */ printf ( "クイーン" ); break; case 13: /* 番号が 13 なら キング (K) */ printf ( "キング" ); break; case 0: /* 番号が 0 の場合は例外的に ジョーカー ($) */ printf ( "ジョーカー" ); break; case 2: /* 範囲は指定できないので、全て列挙 */ /* 2 の場合は 3 の場合と同じなので break しない */ case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: printf ( "%d の数カード", number ); break; /* 2 〜 10 の場合はここで、終了 */ default: /* それ以外は.. */ printf ( "範囲外" ); break; /* これは不要だが、つける習慣を (マナー) */ } printf ( "です。\n" ); } /* * main * */ int main( int argc, char *argv[] ) { trump ( -1 ); trump ( 0 ); trump ( 1 ); trump ( 7 ); trump ( 10 ); trump ( 13 ); trump ( 20 ); return 0; }
$ ./sample-002.exe 数値 -1 の表すカードは、範囲外です。 数値 0 の表すカードは、ジョーカーです。 数値 1 の表すカードは、エースです。 数値 7 の表すカードは、7 の数カードです。 数値 10 の表すカードは、10 の数カードです。 数値 13 の表すカードは、キングです。 数値 20 の表すカードは、範囲外です。 $
Download : sample-003.c ( SJIS 版 )
/* * 2015/09/25 sample-003.c */ #include <stdio.h> /* * for 文を利用して、0 から 9 の数値を表示する * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o BASENAME.exe sample-003.c * 実行 * BASENAME */ int main(int ac, char *av[] ) { int i; /* for 文の制御変数 */ for ( i = 0; i < 10; i = i + 1 ) {/* i を 0 〜 9 迄変化 */ printf ( "%d\n", i ); /* i を出力 */ } return 0; }
$ ./sample-003.exe 0 1 2 3 4 5 6 7 8 9 $
Download : sample-004.c ( SJIS 版 )
/* * 2015/09/25 sample-004.c */ #include <stdio.h> /* * for 文を利用して、1 から 10 の数値を表示する * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o BASENAME.exe sample-004.c * 実行 * BASENAME */ int main(int ac, char *av[] ) { int i; /* for 文の制御変数 */ for ( i = 1; i <= 10; i = i + 1 ) {/* i を 1 〜 10迄変化 */ printf ( "%d\n", i ); /* i を出力 */ } return 0; }
$ ./sample-004.exe 1 2 3 4 5 6 7 8 9 10 $
Download : sample-005.c ( SJIS 版 )
/* * 2015/09/25 sample-005.c */ #include <stdio.h> /* * for 文を利用して、0 から 9 の数値を表示する * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o BASENAME.exe sample-005.c * 実行 * BASENAME */ int main(int ac, char *av[] ) { int i; /* for 文の制御変数 */ for ( i = 0; i < 10; i++ ) { /* i を 0 〜 9 迄変化 */ /* i++ は i = i + 1 と同じ */ printf ( "%d\n", i ); /* i を出力 */ } return 0; }
$ ./sample-005.exe 0 1 2 3 4 5 6 7 8 9 $
Download : sample-006.c ( SJIS 版 )
/* * 2015/09/25 sample-006.c */ #include <stdio.h> /* * for 文を利用して、0 から 9 迄の 10 個の数値を和を表示する * sum = \sum_{i=0}^{9} i * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o BASENAME.exe sample-006.c * 実行 * BASENAME */ int main(int ac, char *av[] ) { int i; /* for 文の制御変数 */ int sum = 0; for ( i = 0; i < 10; i++ ) { /* i を 0 〜 9 迄変化 */ /* i++ は i = i + 1 と同じ */ sum = sum + i; /* sum に i の値を加える */ printf ( "%d %d\n", i, sum ); /* i と sum を出力 */ } printf ( "最終的には sum = %d\n", sum ); return 0; }
$ ./sample-006.exe 0 0 1 1 2 3 3 6 4 10 5 15 6 21 7 28 8 36 9 45 最終的には sum = 45 $
Download : sample-007.c ( SJIS 版 )
/* * 2015/09/25 sample-007.c */ #include <stdio.h> /* * for 文を利用して、0 から 9 の数値を表示する * プログラムを while に書き直す * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o BASENAME.exe sample-007.c * 実行 * BASENAME */ int main(int ac, char *av[] ) { int i; /* for 文の制御変数 */ /* 元々のプログラム for ( i = 0; i < 10; i++ ) { printf ( "%d\n", i ); } step-1 <初期化式> を前にもってくる i = 0; for ( i < 10; i++ ) { printf ( "%d\n", i ); } step-2 <再初期化式> を、繰返し文の後にもって行く i = 0; for ( i < 10 ) { printf ( "%d\n", i ); i++; <= { 〜 } の一番最後 } step-3 for を while に書き換える i = 0; while ( i < 10 ) { printf ( "%d\n", i ); i++; } */ /* 元々のプログラム for ( i = 0; i < 10; i++ ) { printf ( "%d\n", i ); } */ i = 0; while ( i < 10 ) { printf ( "%d\n", i ); i++; } return 0; }
$ ./sample-007.exe 0 1 2 3 4 5 6 7 8 9 $
Download : sample-008.c ( SJIS 版 )
/* * 2015/09/25 sample-008.c */ #include <stdio.h> /* * for 文では、条件式がサボれる * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o BASENAME.exe sample-008.c * 実行 * BASENAME */ int main(int ac, char *av[] ) { for ( ;; ) { /* while では条件を省略できないが for 文ではできる .. */ /* 条件が省略されると、「常に真」になるので無限ループ */ /* プログラムを停止させるには * Ctrl-C ([Ctrl] キーを押しながら [C] キーを押す) * を押す。 */ printf ( "動いています...\n" ); } return 0; }
動いています... 動いています... 動いています... 動いています... .... 動いています... 動いています... 動いています... 動いています... 動いてい^C
Download : sample-009.c ( SJIS 版 )
/* * 2015/09/25 sample-009.c */ #include <stdio.h> /* * for 文を利用して、0 から 99 の偶数の数値 * アプローチ * (その一) i を 0 〜 99 として、但し偶数だけを出す * * 利用方法 * コンパイル * cc -Ic:\usr\c\include -o BASENAME.exe sample-009.c * 実行 * BASENAME */ int main(int ac, char *av[] ) { int i; /* for 文の制御変数 */ for ( i = 0; i < 100; i++ ) { /* i を 0 〜 99 迄変化 */ /* 但し、i が偶数の時だけ → if 文を利用する */ if ( i % 2 == 0 ) { /* i を 2 で割った余り(i%2)が 0 */ /* 即ち i が偶数の時.. */ printf ( "%d\n", i ); /* i を出力 */ } } return 0; }
$ ./sample-009.exe 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 $
#include <stdio.h> int main(void) { int i; /* 変数宣言 */ i = 1; /* 変数に代入ができる */ /* 関数の引数変数 実引数によって、値が定まっている。 仮引数変数は、実引数の値が予め代入されていた */ return 0; }
#include <stdio.h> #include "s_print.h" void func ( int i ) { /* 仮引数変数 i に代入される */ s_print_int ( i ); /* i の値が表示される */ s_print_newline(); } int main(void) { func ( 1 ); /* 実引数で指定し値 i が... */ return 0; }
#include <stdio.h> #include "s_print.h" void func ( void ) { int i; i = 1; /* 代入文 */ s_print_int ( i ); /* i の値が表示される */ s_print_newline(); } int main(void) { func (); return 0; }
#include <stdio.h> #include "s_print.h" int main(void) { int i; /* 変数宣言 */ i = 1; /* 変数に代入ができる */ s_print_int ( i ); s_print_newline(); /* 代入は、何度でもでみる */ i = 2; s_print_int ( i ); s_print_newline(); return 0; }
#include <stdio.h> #include "s_print.h" void func ( int i ) { s_print_int ( i ); s_print_newline(); } int main(void) { func ( 1 ); func ( 2 ); return 0; }
#include <stdio.h> #include "s_print.h" int main(void) { int i; /* 変数宣言 */ i = 1; /* 変数に代入ができる */ s_print_int ( i ); s_print_newline(); /* 代入は、何度でもでみる */ i = i + 1; /* 変数 i に、式 i+1 の値を代入する */ /* この命令の前には i には、 1 が入っていたので、 i+1 の式の値は、1+1 = 2 になるので、この命令の 後からは、 i には 2 が入っている */ /* i に 1 を加える */ /* 元々 i に入っていたものに、1 を新たに加えている */ /* (気分) i に、すこしずつ、何かが溜ってゆく感じ */ i = i + 1; i = i + 1; i = i + 1; i = i + 1; i = i + 1; /* int i; int j; i = 1; j = i + 1; i = j; */ s_print_int ( i ); s_print_newline(); return 0; }
#include <stdio.h> #include "s_print.h" /* * 1 から n の和を計算する * 再帰関数を利用する */ int sum ( int n ) { /* sum(N) で 1 から N までの総和 */ if ( n <= 0 ) { /* n == 0 */ return 0; /* sum(0) = 0 */ } else { return sum ( n - 1 ) + n; /* sum(n) = 1 + 2 + .. + n-1 + n = ( 1 + 2 + .. + n-1 ) + n = sum(n-1) +n */ } } int main(void) { s_print_int ( sum(6) ); s_print_newline(); return 0; }
#include <stdio.h> #include "s_print.h" int main(void) { int sum; sum = 0; sum = sum + 1; sum = sum + 2; sum = sum + 3; sum = sum + 4; sum = sum + 5; sum = sum + 6; /* sum = 1 + 2 + .. + 6 = 21 */ s_print_int ( sum ); s_print_newline(); return 0; }
#include <stdio.h> #include "s_print.h" int main(void) { int sum; int i; i = 0; sum = 0; i = i + 1; sum = sum + i; /* sum = sum + 1 */ i = i + 1; sum = sum + i; /* sum = sum + 2 */ i = i + 1; sum = sum + i; /* sum = sum + 3 */ i = i + 1; sum = sum + i; /* sum = sum + 4 */ i = i + 1; sum = sum + i; /* sum = sum + 5 */ i = i + 1; sum = sum + i; /* sum = sum + 6 */ s_print_int ( sum ); s_print_newline(); return 0; }
#include <stdio.h> #include "s_print.h" int main(void) { int sum; int i; i = 0; sum = 0; /* i < 6 が成立している間 { 〜 } の間を繰り返す */ while ( i < 6 ) { i = i + 1; sum = sum + i; /* sum = sum + 1 */ } s_print_int ( sum ); s_print_newline(); return 0; }
#include <stdio.h> int main(void) { printf ( "Hollo, World\n" ); /* これまでは、 printf は、引数に文字列指定すると、その文字列を画面に出力する 整数 浮動小数点数 #include "s_print.h" の s_print_int ( 123 ); s_print_double ( 12.3 ); s_print_string ( "123" ); printf で、すべてのデータが表示できる */ return 0; }
#include <stdio.h> int main(void) { printf ( "Hollo, World\n" ); printf ( "%d", 123 ); /* 整数値 123 を、画面に出力 */ printf ( "%f", 12.3 ); /* 浮動小数点値 12.3 を、画面に出力 */ printf ( "%s", "123" ); /* 整数値 123 を、画面に出力 */ /* %d, %f, %s のように % から初まっている文字列は、書式指定 */ /* 書式指定 型に対応してつける必要がある %d 整数値 %f 浮動小数点数値 %s 文字列 %c 文字 */ return 0; }
#include <stdio.h> int main(void) { printf ( "Hollo, World\n" ); printf ( "整数値 : %d \n", 123 ); printf ( "浮動小数点数値 %f\n", 12.3 ); printf ( "文字列 : %s\n", "123" ); printf ( "文字 : %c\n", 'x' ); /* 書式指定は、文字列の一部として指定できる 書式指定の部分は、後の引数の値でおきかわるが、 その他の部分は、そのまま表示される。 s_print_string ( "整数値 : " ); s_print_int ( 123 ); s_print_newline(); */ return 0; }
#include <stdio.h> int main(void) { printf ( "Hollo, World\n" ); printf ( "整数値 : %d \n浮動小数点数値 %f\n文字列 : %s\n文字 : %c\n", 123, 12.3, "123", \ 'x' ); /* 書式指定は、一つの文字列の中に複数指定できる 二つ目以後の引数は、書式の個数だけ指定する */ return 0; }
#include <stdio.h> int main(void) { return 0; }
#include <stdio.h> int main(void) { int i = 123; double d = 12.3; char c = 'x'; printf ( "文字 : %c\n", c ); printf ( "整数値 : %d \n", i ); printf ( "浮動小数点数値 %f\n", d ); scanf ( "%c", &c ); /* キーボードから、一文字をよみこんで c に代入する */ scanf ( "%d", &i ); /* キーボードから、整数値をよみこんで i に代入する */ scanf ( "%lf", &d ); /* キーボードから、浮動小数点数値をよみこんで i に代入する */ /* scanf ( "%c%d%lf", &c, &i, &d ) などともできるかお勧めしない */ /* #include "s_input.h" c = s_input_char(); i = s_input_int(); d = s_input_double(); */ printf ( "文字 : %c\n", c ); printf ( "整数値 : %d \n", i ); printf ( "浮動小数点数値 %f\n", d ); return 0; }
#include <stdio.h> int main(void) { int a; int b; int wa; printf ( "一つめの整数値を入力してください : " ); scanf ( "%d", &a ); printf ( "二つめの整数値を入力してください : " ); scanf ( "%d", &b ); wa = a + b; printf ( "%d + %d = %d\n", a, b, wa ); return 0; }
課題プログラム内の「/*名前:ここ*/」の部分を書き換え「/*この部分を完成させなさい*/」の部分にプログラムを追加して、プログラムを完成させます。
なお「名前(P,Q,R,..)」の部分が同じ所には同じものが入ります。
Download : 20150925-01.c ( SJIS 版 )
/* * CDATE FILENAME * * キーボードから一文字入力し、その文字によって異る国の挨拶をする */ #include <stdio.h> /* * hello ( char contry ) * char contry : 国を表す一文字 * j : 日本 * e : 英語 * c : 中国 * f : フランス語 * g : ドイツ語 */ void hello ( char cmd ) { switch ( cmd ) { case 'j': /* 'j' の時は、日本語にする */ printf ( "こんにちは\n" ); break; case 'e': /* 'e' の時は、英語にする */ /* ** この部分を完成させなさい */ break; case 'c': /* 'c' の時は、中国語にする */ printf ( "ニイハオ\n" ); /* ** この部分を完成させなさい */ case 'f': /* 'f' の時は、フランス語にする */ printf ( "Bonjour\n" ); break; /* ** この部分を完成させなさい */ printf ( "Guten tag\n" ); break; default: /* どれでもなければ.. */ printf ( "???\n" ); break; } } /* * main */ int main( void ) { printf ( "国を表す文字を入力してください\n" ); printf ( "\tj\t日本\n" ); printf ( "\te\t英語\n" ); printf ( "\tc\t中国\n" ); printf ( "\tf\tフランス\n" ); printf ( "\tg\tドイツ\n" ); hello ( getchar() ); /* getchar() で文字を入力し、それに対応する結果を出す */ return 0; }
f
$ ./20150925-01-QQQQ.exe 国を表す文字を入力してください j 日本 e 英語 c 中国 f フランス g ドイツ Bonjour $
Download : 20150925-02.c ( SJIS 版 )
/* * 課題 CNAME-02 * * 20150925 20150925-02-QQQQ.c * * 0 〜 99 の偶数を出力する * */ #include <stdio.h> /* * for 文を利用して、0 から 99 の偶数の数値 (そのニ) i が 0 〜 99 の間の偶数だけを動くようにし、毎回 i を出す */ int main(int ac, char *av[] ) { int i; /* for 文の制御変数 */ for ( i = 0; i < 100; /* p:ここ */ ) { /* i++ だと i = 0, 1, 2, .. */ /* ○○とすれば i = 0, 2, 4, .. */ printf ( "%d\n", i ); /* i を出力 */ } return 0; }
$ ./20150925-02-QQQQ.exe 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 $