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 $