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 $