Download : sample-001.c
/* * CDATE sample-001.c */ /* * 複数条件の分岐 * * 利用方法 * コンパイル * cc -I ~/c/include -o sample-001.exe sample-001.c * 実行 * sample-001 */ #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
/* * 2017/09/29 sample-002.c */ /* * 複数条件の分岐(case 文を利用した場合) * * 利用方法 * コンパイル * cc -I ~/c/include -o sample-002.exe sample-002.c * 実行 * sample-002 */ #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
/* * 2017/09/29 sample-003.c */ #include <stdio.h> /* * for 文を利用して、0 から 9 の数値を表示する * * 利用方法 * コンパイル * cc -I ~/c/include -o sample-003.exe sample-003.c * 実行 * sample-003 */ 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
/* * 2017/09/29 sample-004.c */ #include <stdio.h> /* * for 文を利用して、1 から 10 の数値を表示する * * 利用方法 * コンパイル * cc -I ~/c/include -o sample-004.exe sample-004.c * 実行 * sample-004 */ 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
/* * 2017/09/29 sample-005.c */ #include <stdio.h> /* * for 文を利用して、0 から 9 の数値を表示する * * 利用方法 * コンパイル * cc -I ~/c/include -o sample-005.exe sample-005.c * 実行 * sample-005 */ 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
/* * 2017/09/29 sample-006.c */ #include <stdio.h> /* * for 文を利用して、0 から 9 迄の 10 個の数値を和を表示する * sum = \sum_{i=0}^{9} i * * 利用方法 * コンパイル * cc -I ~/c/include -o sample-006.exe sample-006.c * 実行 * sample-006 */ 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
/* * 2017/09/29 sample-007.c */ #include <stdio.h> /* * for 文を利用して、0 から 9 の数値を表示する * プログラムを while に書き直す * * 利用方法 * コンパイル * cc -I ~/c/include -o sample-007.exe sample-007.c * 実行 * sample-007 */ 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
/* * 2017/09/29 sample-008.c */ #include <stdio.h> /* * for 文では、条件式がサボれる * * 利用方法 * コンパイル * cc -I ~/c/include -o sample-008.exe sample-008.c * 実行 * sample-008 */ int main(int ac, char *av[] ) { for ( ;; ) { /* while では条件を省略できないが for 文ではできる .. */ /* 条件が省略されると、「常に真」になるので無限ループ */ /* プログラムを停止させるには * Ctrl-C ([Ctrl] キーを押しながら [C] キーを押す) * を押す。 */ printf ( "動いています...\n" ); } return 0; }
動いています... 動いています... 動いています... 動いています... .... 動いています... 動いています... 動いています... 動いています... 動いてい^C
Download : sample-009.c
/* * 2017/09/29 sample-009.c */ #include <stdio.h> /* * for 文を利用して、0 から 99 の偶数の数値 * アプローチ * (その一) i を 0 〜 99 として、但し偶数だけを出す * * 利用方法 * コンパイル * cc -I ~/c/include -o sample-009.exe sample-009.c * 実行 * sample-009 */ 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 $
/* * 2017/09/22 20170922-02.c * * printf による書式指定出力 * */ #include <stdio.h> /* * */ /* * main */ int main( int argc, char *argv[] ) { int ia = 7; /* int ia; ... ia = 7; に二行と「ほぼ」同じ、 初期化忘れをしないための推奨形式 */ int ib = 15; double da = 3.14; double db = 1.59; /* 「iaの値 + ibの値 = ia+ibの値」を表示したい */ printf ( "%d + %d = %d\n", ia, ib, ia + ib ); /* 整数型の和 */ printf ( "/* r:ここ */ / /* r:ここ */ = /* r:ここ */\n", da, db, da / db ); /* 浮動小数点数の商 */ return 0; }
/* * 2017/09/22 20170922-03.c * * scanf による書式指定入力 * */ #include <stdio.h> /* * */ /* * main */ int main( int argc, char *argv[] ) { int i; /* キーボードから入力された整数値を保持する整数型変数 */ // double d; /* キーボードから入力された浮動小数点数値を保持する浮動小数点数型変数 */ printf ( "整数値をキーボードから入力します : " ); scanf ( "%d", &i ); printf ( "入力された整数値は %d でした。\n", i ); // printf ( "浮動小数点数値をキーボードから入力します : " ); // scanf ( "/* r:ここ */", /* s:ここ */ ); // printf ( "入力された浮動小数点数値は %f でした。\n", d ); return 0; }
/* * 2017/09/22 20170922-05.c * * while 文 */ #include <stdio.h> #include "s_print.h" /* * main */ int main( int argc, char *argv[] ) { /* 整数型変数 odd の宣言とその初期化 ( 初期値は 1 を指定 ) */ int odd = 1; /* 整数型変数 sum の宣言とその初期化 ( 初期値は 0 を指定 ) */ int sum = 0; /* sum = 1 + 3 + .. + 9 = 25 = 5^2 */ /* odd の値が 9 以下の間は繰り返す */ while ( odd <= 9 ) { /* sum に odd の値を「追加」する */ sum = sum + odd; // printf ( "odd = %d, sum = %d\n", odd, sum ); /* odd の値を次の奇数にする */ odd = odd + 2; } /* 整数型変数 sum の値を画面に出力 */ s_print_string ( "1 から 9 までの奇数の和は " ); s_print_int ( sum ); s_print_string ( " です。\n" ); return 0; }
#include <stdio.h> /* この関数は、引数で指定された文字列を 二度出力する */ void twice ( char *text ) { printf ( text ); /* 変数 text に実引数の値が入っている */ printf ( text ); /* 変数 text に実引数の値が「代入」された */ } int main(int argc, char *argv[] ) { twice ( "Hello\n" ); /* 引数に "Hello\n" を指定している */ /* twice ( "Hello\n" ); -> twice ( "Hello\n" ); 関数名 twice 利用して、その関数定義を見つける void twice ( char *text ) { printf ( text ); printf ( text ); } -> text = "Hello\n" { printf ( text ); printf ( text ); } -> { printf ( "Hello\n" ); printf ( "Hello\n" ); } */ twice ( "World\n" ); /* 関数側では、仮引数 text にそれが入る */ return 0; }
#include <stdio.h> /* この関数は、引数で指定された文字列を 二度出力する */ void twice ( char *text ) { printf ( text ); /* 変数 text に実引数の値が入っている */ text = "こんにちわ\n"; /* 変数 text に別の値を代入 */ /* 変数に対し、その今の値を捨てて、 新しい、値を割り当てる */ /* 変数の値は、代入文の前後で変化 */ /* その変数を含む文の意味も変化 */ /* 変数として、「関数の仮引数変数」を利用 */ /* 「関数の仮引数変数」以外の変数も使いたい場合がある.. */ /* -> 局所変数(local 変数) の宣言 */ /* その関数(ブロック)の中で自由に利用できる 変数を「宣言」し、その変数が利用できるようにする */ /* 注意 : C 言語では、local 変数の宣言は、 ブロックの先頭でしかできない */ /* 関数本体もブロック */ printf ( text ); /* 直前の代入文で代入された値が入っている */ } int main(int argc, char *argv[] ) { char *hello; /* local 変数「hello」の宣言 */ /* 変数を宣言する(型宣言) 利用する変数名 変数が代入される値の型 有効範囲 local 変数/仮引数 : ブロック内 */ hello = "Hello\n"; /* 変数に値を代入 初めて、値を代入する事を「初期化」 !! 変数は「初期化」されるまえは !! どんな値が入っているか「不定」 !! 「変数の初期化忘れ」は典型的な誤り */ twice ( hello ); /* 引数に "Hello\n" を指定している */ hello = "World\n"; /* 変数に値を再代入 これによって、以前の値は失われる -> 結構、「怖い」 */ /* 関数の実引数が仮引数に代入されている -> 初期化忘れはおきない -> 仮引数は実引数で初期化される この代入に失われるものはない 関数を利用する -> 代入を安全に利用する技術 */ twice ( hello ); return 0; }
#include <stdio.h> #include "s_print.h" int main(int argc, char *argv[] ) { printf ( "Hello, World\n" ); /* printf という関数が、引数である文字列 「"Hello, World\n"」 を、画面に出力する。 */ /* 文字列以外は... ? #include "s_print.h" して、 s_print_int ( 123 ); などする。 */ s_print_int ( 123 ); /* 整数値(int) 123 を整数値として出力 */ /* これは、「非標準」ソフトウェア概論固有の機能 */ /* じゃあ、「標準」:世界中どこでも使える */ return 0; }
#include <stdio.h> int main(int argc, char *argv[] ) { printf ( "Hello, World\n" ); /* printf という関数が、引数である文字列 「"Hello, World\n"」 を、画面に出力する。 */ /* では、整数値 123 を出力するには... ? */ /* printf を使って、整数値を表示する事ができる */ printf ( "整数値は%dです。\n", 123 ); /* %d の場所に、次の引数である 123 を、整数値として出力する */ /* s_print_string ( "整数値は" ) */ /* s_print_int ( 123 ) */ /* s_print_string ( "です。\n" ) */ /* 1. 引数の数は、1 個以上(可変) 2. その最初の引数は、文字列でなければならない 3. 基本は、その最初の文字列がそのまま表示される 4. その文字列の中に、書式指定があると、特別なふるまい 4.1 「書式指定」は「%」から始まる一定のルールの文字列 4.2 「書式指定」は色々あるが、その中で、 %d -> その後に引数を整数値としてその場所に置き換える */ return 0; }
#include <stdio.h> int main(int argc, char *argv[] ) { printf ( "Hello, World\n" ); printf ( "整数値は%dです。\n", 123 ); /* 1. 引数の数は、1 個以上(可変) 2. その最初の引数は、文字列でなければならない 3. 基本は、その最初の文字列がそのまま表示される 4. その文字列の中に、書式指定があると、特別なふるまい 4.1 「書式指定」は「%」から始まる一定のルールの文字列 4.2 「書式指定」は色々あるが、その中で、 %d -> その後に引数を整数値としてその場所に置き換える %f -> その後に引数を浮動小数点数値としてその場所に置き換える %c -> 文字 %s -> 文字列 */ printf ( "浮動小数点数値は%fです。\n", 456.789 ); printf ( "文字は%cです。\n", 'a' ); printf ( "文字列は%sです。\n", "Hello, World\n" ); /* printf のメリット ( cf. s_print_ と比較して.. ) 文字列の中に、色々な値が埋め込める 関数は一つだけ デメリット ほぼ、メリットと同じ 間違えやすい <= きちんと、理解して注意して慣れれば避けられる */ printf ( "浮動小数点数値は%dです。\n", 456.789 ); /* 典型的なミス : 書式指定と、後の引数の対応が間違っている この例では、「%f」とすべき所を「%d」と誤っている */ return 0; }
#include <stdio.h> int main(int argc, char *argv[] ) { printf ( "Hello, World\n" ); printf ( "整数値は%dです。\n", 123 ); /* 1. 引数の数は、1 個以上(可変) 2. その最初の引数は、文字列でなければならない 3. 基本は、その最初の文字列がそのまま表示される 4. その文字列の中に、書式指定があると、特別なふるまい 4.1 「書式指定」は「%」から始まる一定のルールの文字列 4.2 「書式指定」は色々あるが、その中で、 %d -> その後に引数を整数値としてその場所に置き換える %f -> その後に引数を浮動小数点数値としてその場所に置き換える %c -> 文字 %s -> 文字列 4.3 書式指定は、複数可能 -> 書式指定に対応した、数だけ、引数を増やす */ printf ( "%d + %d = %d\n", 123, 456, 123 + 456 ); /* 書式に、三つの書式指定があるので、 その後に。三つの引数が必要で、それらが、 順に、書式指定の場所に埋め込まれる 出力 "%d + %d = %d\n", 123, 456, 123 + 456 ^^ ^^ ^^ | | | | | | | | | | | +--------------------+ | | | | | +----------------+ | | +-----------------+ => 123 + 456 = 579 */ printf ( "'A' は文字としては%c だが、整数値としては %d です。\n", 'A', 'A' ); /* %c では、'A'は、「A」と出力されるが、 %d では、'A'は、'A' の ASCII Code 値が整数値として出る */ return 0; }
#include <stdio.h> /* printf を利用すると、出力が、かなり自由にできるようになった [s_print.h] は、もういらない じゃあ、[s_input.h] もいらないじゃないか.. ? -> yes. scanf を使うとよい */ #include "s_input.h" int main(int argc, char *argv[]) { /* scanf は,printf とほぼ、対応している。 */ /* 従来のやりかた #include "s_intpu.h" 整数値を入力したい場合は、s_input_int を呼ぶ 他の型の値の場合は、それに応じた関数を呼び出す */ printf ( "入力データは %d です。\n", s_input_int() ); return 0; }
#include <stdio.h> /* printf を利用すると、出力が、かなり自由にできるようになった [s_print.h] は、もういらない じゃあ、[s_input.h] もいらないじゃないか.. ? -> yes. scanf を使うとよい */ int main(int argc, char *argv[]) { /* scanf は,printf とほぼ、対応している。 */ /* 新しいやりかた 入力した値を本尊する変数を宣言 関数 scanf を利用して、その変数に、値を入力する */ int iinput; /* 入力した整数値を保存する local 変数 */ printf ( "整数値を入力してください : " ); /* 入力を要求するときには、 プロンプト(入力督促メッセージ) を出すとよい */ scanf ( "%d", &iinput ); /* scanf の使い方: 一つ目の引数は、書式指定を一つ %d : 整数値 %c : 文字 %lf : 浮動小数点数は「%f」ではなく、「%lf」を使う %s : いまは、「使えない」 二つ目の引数は、「基本」「&」+「変数名」 ※これは、本当は嘘なのだが、後でちゃんと説明する scanf は printf と対で覚える int ivar; scanf ( "%d", &ivar ); printf ( "%d", ivar ); */ printf ( "入力データは %d です。\n", iinput ); return 0; }
#include <stdio.h> int main(int argc, char *argv[]) { int i; /* ?????^?? local ?????? */ i = 0; /* ??? i ?? 0 ??????? */ /* int i=0; ???????????u????v*/ printf ( "i=%d\n", i ); /* ??? i ??l???o?? */ i = i + 1; /* ??? i ??A?????? i ??l?? 1 ???????? ?l???????? ?u=?v??A?u????(??????????????)?v??????A # C ?????A?u?????v??u==?v??L?? ?u????v????????A ?u=?v??E??????l???v?Z???A??????????????? => ????I??A??? i ??l?? 1 ?????????? */ printf ( "i=%d\n", i ); /* ??? i ??l???o??(???x?? 1 ?????) */ i = i + 1; printf ( "i=%d\n", i ); return 0; }
#include <stdio.h> int main(int argc, char *argv[]) { int i; /* ?????^?? local ?????? */ int sum; i = 0; /* ??? i ?? 0 ??????? */ /* int i=0; ???????????u????v*/ sum = 0; printf ( "i=%d, sum = %d\n", i, sum ); i = i + 1; /* ????I??A??? i ??l?? 1 ?????????? */ sum = sum + i; printf ( "i=%d, sum = %d\n", i, sum ); i = i + 1; sum = sum + i; printf ( "i=%d, sum = %d\n", i, sum ); i = i + 1; sum = sum + i; printf ( "i=%d, sum = %d\n", i, sum ); return 0; }
#include <stdio.h> int main(int argc, char *argv[]) { int i; /* 整数型の local 変数の宣言 */ int sum; /* sum = 1 + 2 + ... + 10 */ /* 同じ命令を繰り返している */ i = 0; /* 変数 i を 0 で初期化 */ /* int i=0; とまとめた方が「良い」*/ sum = 0; printf ( "i=%d, sum = %d\n", i, sum ); while ( i < 10 /* 繰り返す条件 */ ) { /* 最初(初期化によって..) i の値は 0 */ /* この三行を一度実行すると、結果的に i は一増える */ /* もし、10 回繰り返せば、i のは 10 になる(おしまい) */ /* 逆に i<10 ならば、まだ 10 回していないので、繰り返す必要がある */ /* 次の三行の命令を 10 回数繰り返し */ /* i=0, i<10; i = i + 1 の三つ組みで、10 回繰り返す */ i = i + 1; /* 計算を進めながら */ sum = sum + i; /* 求める値を積み上げてゆく */ printf ( "i=%d, sum = %d\n", i, sum ); /* 経過を出力 */ } /* while 構文は、先頭で、繰り返し条件を書く 繰り返し条件は、その後繰り返し命令を実行するたびに、 毎回、チェックされるが、この中に変数を含んでいて、 繰り返す命令で、それを変更(代入文を使う)をしないと 無限ループになってしまう 「繰り返し(同じ命令を何度も行う)」をするには、 再帰が使える(ので、原理的には、while 構文は不要) にも拘わらず、while 文があり、学ぶのは... 効率が良いから */ return 0; }
課題プログラム内の「/*名前:ここ*/」の部分を書き換え「/*この部分を完成させなさい*/」の部分にプログラムを追加して、プログラムを完成させます。
なお「名前(P,Q,R,..)」の部分が同じ所には同じものが入ります。
Download : 20170929-01.c
/* * 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
$ ./20170929-01-QQQQ.exe 国を表す文字を入力してください j 日本 e 英語 c 中国 f フランス g ドイツ Bonjour $
Download : 20170929-02.c
/* * 課題 CNAME-02 * * 20170929 20170929-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; }
$ ./20170929-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 $