Download : sample-001.c ( utf8 版 )
/* * DATE sample-001.c */ #include <stdio.h> #include "s_turtle.h" /* 亀プログラムの場合に必要 */ /* * 亀プログラム */ /* * void move_ten(void) * * 現在向いている方向に 10 歩、足跡を残しながら進む */ void move_ten(void) { /* 「一歩進む」事を、10 回行う.. */ s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); } /* * main */ int main ( void ) { /* * 最初は真中 (0,0) で上を向いている */ /* * 二十歩前に足跡を残しながら進む * 矩形の左辺を下から上に引く (0,0) -> (0,20) */ move_ten(); move_ten(); /* * 時計回りに 45 度を二回、すなわち 90 度向きを変える * 矩形の左上隅で右に向きを変える */ s_turtle_turn(); s_turtle_turn(); /* * 矩形の上辺を左から右に引く (0,20) -> (20,20) */ move_ten(); move_ten(); /* * 矩形の右上隅で下に向きを変える */ s_turtle_turn(); s_turtle_turn(); /* * 矩形の右辺を上から下に引く (20,20) -> (0,20) */ move_ten(); move_ten(); /* * 矩形の右下隅で左に向きを変える */ s_turtle_turn(); s_turtle_turn(); /* * 矩形の下辺を右から左に引く (0,20) -> (0,0) */ move_ten(); move_ten(); /* * 元の左下隅 (0,0) に戻った */ putchar ( '>' ); getchar(); s_turtle_stop(); return 0; }
$ ./sample-001.exe > $
Download : sample-002.c ( utf8 版 )
/* * DATE sample-002.c */ #include <stdio.h> #include "s_turtle.h" /* 亀プログラムの場合に必要 */ /* * 亀プログラム */ /* * void jump_ten(void) * * 現在向いている方向に 10 歩、足跡を残こさずに跳ねる */ void jump_ten(void) { /* 「一歩跳ねる」事を、10 回行う.. */ s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); } /* * void move_ten(void) * * 現在向いている方向に 10 歩、足跡を残しながら進む */ void move_ten(void) { /* 「一歩進む」事を、10 回行う.. */ s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); } /* * void turn_90(void) * * 現在向いている方向から時計回りに 90 度向きを * 進行方向の「右」に向きを変える */ void turn_90(void) { /* 「45 度向きを変える」事を、2 回行う.. */ s_turtle_turn(); s_turtle_turn(); } /* * void turn_270(void) * * 現在向いている方向から時計回りに 270 度向きを * 進行方向の「左」に向きを変える */ void turn_270(void) { /* 「90 度向きを変える」事を、3 回行う.. */ turn_90(); turn_90(); turn_90(); } /* * void move_and_turn(void) * * 現在向いている方向から 20 歩進んで右を向く * 四角形の一辺を書く */ void move_and_turn(void) { /* 20 歩進む */ move_ten(); move_ten(); /* 向きを変える */ turn_90(); } /* * void draw_sqare( void ); * * 一辺が 20 の長さの四角形を書く */ void draw_sqare( void ) { /* 「長さ 20 の辺を書いて右を向く」という事を 4 回繰り返す */ move_and_turn(); move_and_turn(); move_and_turn(); move_and_turn(); } /* * int main ( void ) */ int main ( void ) { /* * 最初は真中 (0,0) で上を向いている */ draw_sqare(); /* まず四角を書く */ turn_270(); /* 270 度回転 */ jump_ten(); /* 10 歩跳ねる */ draw_sqare(); /* また四角 */ turn_270(); jump_ten(); draw_sqare(); turn_270(); jump_ten(); draw_sqare(); putchar ( '>' ); getchar(); s_turtle_stop(); return 0; }
$ ./sample-002.exe > $
Download : sample-003.c ( utf8 版 )
/* * DATE sample-003.c */ #include <stdio.h> /* * 文字の出力 */ /* * int main ( void ) */ int main ( void ) { putchar ( 'a' ); /* 「a」という『文字』を出力する */ return 0; }
$ ./sample-003.exe a$
Download : sample-004.c ( utf8 版 )
/* * DATE sample-004.c */ #include <stdio.h> /* * 文字の出力 */ /* * int main ( void ) */ int main ( void ) { putchar ( 'a' ); /* 「a」という『文字』を出力する */ putchar ( 'b' ); /* 同 「b」という『文字』を出力する */ putchar ( 'c' ); /* 「c」 */ putchar ( '\n' ); /* 「\n」は改行を表す */ return 0; }
$ ./sample-004.exe abc $
Download : sample-005.c ( utf8 版 )
/* * DATE sample-005.c */ #include <stdio.h> /* * 文字の入力 */ /* * int main ( void ) */ int main ( void ) { printf ( "[Enter] キーを押してください : " ); getchar(); /* 文字を入力する (入力されるまで待つ) */ /* 目的は「入力」より「待つ」事が目的 */ return 0; }
$ ./sample-005.exe < sample-005.in [Enter] キーを押してください : $
Download : sample-006.c ( utf8 版 )
/* * DATE sample-006.c */ #include <stdio.h> /* * 文字の echo Back */ /* * int main ( void ) */ int main ( void ) { printf ( " 2 文字入力して [Enter] キーを押してください : " ); putchar ( getchar() ); /* 一文字目を入力して出力 */ putchar ( getchar() ); /* ニ文字目を入力して出力 */ putchar ( getchar() ); /* 三文字目(改行)を入力して出力 */ /* [Enter] は、「改行」一文字になる */ return 0; }
3G
$ ./sample-006.exe < sample-006.in 2 文字入力して [Enter] キーを押してください : A1 A1 $
Download : sample-007.c ( utf8 版 )
/* * DATE sample-007.c */ #include <stdio.h> /* * 文字の echo Back */ /* * int main ( void ) */ int main ( void ) { printf ( " 2 文字入力して [Enter] キーを押してください : " ); putchar ( getchar() + 1 ); /* 一文字目を入力して + 1 してから出力 */ putchar ( getchar() - 1 ); /* ニ文字目を入力して - 1 してから出力 */ putchar ( getchar() ); /* 三文字目(改行)を入力して出力 */ /* [Enter] は、「改行」一文字になる */ return 0; }
3G
$ ./sample-007.exe < sample-007.in 2 文字入力して [Enter] キーを押してください : 3G 4F $
Download : sample-008.c ( utf8 版 )
/* * DATE sample-008.c */ #include <stdio.h> #include <string.h> /* * 文字列に 1 を加えると.. ? * 文字の長さが短くなる (頭の部分がなくなる..) */ /* * main */ int main ( void ) { printf ( "abcde\n" ); /* 当然 「abcde」が表示される.. */ printf ( "abcde\n" + 1 ); /* 文字列に 1 を加えるってどうゆうこと.. ? */ printf ( "abcde\n" + 2 ); printf ( "abcde\n" + 1 + 1 ); /* ("abcde\n" + 1) + 1 => "bcde\n" + 1 => "cde\n" */ return 0; }
$ ./sample-008.exe abcde bcde cde cde $
Download : sample-009.c ( utf8 版 )
/* * DATE sample-009.c */ #include <stdio.h> #include <string.h> /* * void recursive ( char *string ) * char *string 指定した文字列からなる三角形を作る * 実行例 * recursive( "abc\n" ); * -> * abc "abc\n" * bc "bc\n" * c "c\n" * "\n" * 再帰呼出しを利用 */ void recursive ( char *string ) { if ( !strcmp ( string, "" ) ) { /* もし空文字列 ( "" ) ならば */ printf ( "" ); /* これで御仕舞い */ } else { /* そうでなければ、 */ printf ( string ); recursive ( string + 1 ); /* 再帰呼び出しする */ /* +1 を忘れると悲惨な事に.. */ } } /* * main */ int main ( void ) { recursive ( "abcdefg\n" ); recursive ( "xyz\n" ); return 0; }
$ ./sample-009.exe abcdefg bcdefg cdefg defg efg fg g xyz yz z $
Download : sample-010.c ( utf8 版 )
/* * DATE sample-010.c */ #include <stdio.h> #include <string.h> /* * 再帰呼出しを利用して、"Hello, World\n" を沢山出力する */ /* * void rec_hello ( char *count ) * char *count 文字列を指定し、その長さで、繰り返えし回数の指数を指定 * 与えられた文字列の長さを n とすると 2^n 回だけ出力する */ void rec_hello ( char *count ) { if ( !strcmp ( count, "" ) ) { /* カラッポなら.. */ printf ( "Hello, World\n" ); /* 一つだけ表示してみる */ } else { /* そうでなければ.. */ rec_hello ( count + 1 ); /* 二倍にして再帰よびだし */ rec_hello ( count + 1 ); } } /* * main */ int main ( void ) { rec_hello ( "****" ); /* 2^4 = 16 回出力 */ /* 2^10 = 1024 だから、 "**********" を与えれば... */ return 0; }
$ ./sample-010.exe Hello, World Hello, World Hello, World Hello, World Hello, World Hello, World Hello, World Hello, World Hello, World Hello, World Hello, World Hello, World Hello, World Hello, World Hello, World Hello, World $
Download : sample-011.c ( utf8 版 )
/* * DATE sample-011.c */ #include <stdio.h> #include <string.h> /* * フィボナッチ数の計算 */ /* * void fib ( char *n ) * char *n n の長さで何番目の項かを表す * n 番目のフィボナッチ数だけ '*' を表示する */ void fib ( char *n ) { if ( !strcmp ( n, "" ) ) { /* カラッポ(0)なら.. */ printf ( "*" ); /* 一つだけ : fib(0) = 1 だから */ } else if ( !strcmp ( n, "*" ) ) { /* 一つ(1)なら */ printf ( "*" ); /* 一つだけ : fib(1) = 1 だから */ } else { /* そうでなければ.. */ fib ( n + 1 ); /* fib ( n - 1 ) と */ fib ( n + 2 ); /* fib ( n - 2 ) だけだす */ } } /* * main */ int main ( void ) { printf ( "fib 3 : " ); fib ( "***" ); printf ( "\n" ); printf ( "fib 5 : " ); fib ( "*****" ); printf ( "\n" ); return 0; }
$ ./sample-011.exe fib 3 : *** fib 5 : ******** $
Download : sample-012.c ( utf8 版 )
/* * DATE sample-012.c */ #include <stdio.h> #include <string.h> /* strcmp に必要 */ #include "s_turtle.h" /* 亀プログラムの場合に必要 */ /* * 亀プログラムと再帰呼出し */ /* * void jump_n( char *n ) * char *n 足跡の長さを表す * 指定された長さだけ現在向いている方向に足跡を残こさず跳ねる */ void jump_n( char *n ) { if ( !strcmp ( n, "" ) ) { /* n が空文字列 ("") なら何もしない */ } else { s_turtle_jump(); /* とりあえず、一歩跳ねる */ jump_n ( n + 1 ); /* 文字列を短くして、再帰呼出し */ } } /* * void move_n( char *n ) * * char *n 足跡の長さを表す * 指定された長さだけ現在向いている方向に足跡を残こして歩く */ void move_n(char *n) { if ( !strcmp ( n, "" ) ) { /* n が空文字列 ("") なら何もしない */ } else { s_turtle_move(); /* とりあえず、一歩歩く */ move_n ( n + 1 ); /* 文字列を短くして、再帰呼出し */ } } /* * void turn_n(char *n) * * 現在向いている方向から時計回りに n * 45 度向きを変える */ void turn_n(char *n) { if ( !strcmp ( n, "" ) ) { /* n が空文字列 ("") なら何もしない */ } else { s_turtle_turn(); /* とりあえず、45 度向きをかえる */ turn_n ( n + 1 ); /* 文字列を短くして、再帰呼出し */ } } /* * void turn_90(void) * * 現在向いている方向から時計回りに 90 度向きを * 進行方向の「右」に向きを変える */ void turn_90(void) { turn_n ( "**" ); } /* * void turn_270(void) * * 現在向いている方向から時計回りに 270 度向きを * 進行方向の「左」に向きを変える */ void turn_270(void) { turn_n ( "******" ); } /* * void move_n_and_turn(char *n) * * 現在向いている方向から n 歩進んで右を向く * 四角形の一辺を書く */ void move_n_and_turn( char *n ) { move_n ( n ); /* 向きを変える */ turn_90(); } /* * void draw_n_sqare( char *n ); * * 一辺が n の長さの四角形を書く */ void draw_n_sqare( char *n ) { /* 「長さ n の辺を書いて右を向く」という事を 4 回繰り返す */ move_n_and_turn(n); move_n_and_turn(n); move_n_and_turn(n); move_n_and_turn(n); } /* * int main ( void ) */ int main ( void ) { /* * 最初は真中 (0,0) で上を向いている */ draw_n_sqare( "********************" ); /* まず四角を書く */ turn_270(); /* 270 度回転 */ jump_n( "**********" ); /* 10 歩跳ねる */ draw_n_sqare( "********************" ); /* また四角 */ turn_270(); jump_n( "**********" ); draw_n_sqare( "********************" ); turn_270(); jump_n( "**********" ); draw_n_sqare( "********************" ); putchar ( '>' ); getchar(); s_turtle_stop(); return 0; }
$ ./sample-012.exe > $
#include <stdio.h> void hello3(void) { /* 関数の定義 */ printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); } int main(void) { hello3(); /* 関数呼び出し */ /* => hello3 という名前の関数を探す => printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); */ hello3(); /* 関数呼び出し */ return 0; }
#include <stdio.h> /* print3 は、同じ文字列を三回出力したい */ /* 「"Hello, World\n"」の部分を変数(X)にしたい */ void print3(char *X) { /* 関数の定義 */ printf ( X ); printf ( X ); printf ( X ); } int main(void) { print3("Hello, World\n"); /* 関数呼び出し */ /* => print3 という名前の関数を探す => print3 ( char *X ); を見つける print3("Hello, World\n"); X = "Hello, World\n" => X = "Hello, World\n" printf ( X ); printf ( X ); printf ( X ); => X = "Hello, World\n" printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); */ print3( "こんにちは、皆さん\n" ); /* 関数呼び出し */ /* => print3 という名前の関数を探す => print3 ( char *X ); を見つける print3("こんにちは、皆さん\n"); X = "こんにちは、皆さん\n" => X = "こんにちは、皆さん\n" printf ( X ); printf ( X ); printf ( X ); => X = "こんにちは、皆さん\n" printf ( "こんにちは、皆さん\n" ); printf ( "こんにちは、皆さん\n" ); printf ( "こんにちは、皆さん\n" ); */ print3( "ニーハオ,中国\n" ); /* 関数呼び出し */ return 0; }
#include <stdio.h> /* aisatsuXniYwo X さん、Y という挨拶をする */ /* 二引数(一般に、引数はいくつでもできる */ void aisatsuXniYwo(char *X, char *Y) { /* 関数の定義 */ printf ( X ); printf ( "さん、" ); printf ( Y ); printf ( "\n" ); } int main(void) { aisatsuXniYwo ( "鈴木", "おはよう" ); /* => aisatsuXniYwo を探す => aisatsuXniYwo(char *X, char *Y) が見つかり、 aisatsuXniYwo ( "鈴木", "おはよう" ); と比較して、 X = "鈴木" Y = "おはよう" => X = "鈴木" Y = "おはよう" printf ( X ); printf ( "さん、" ); printf ( Y ); printf ( "\n" ); => X = "鈴木" Y = "おはよう" printf ( "鈴木" ); printf ( "さん、" ); printf ( "おはよう" ); printf ( "\n" ); */ aisatsuXniYwo ( "金", "ニーハオ" ); aisatsuXniYwo ( "Ben", "Hello" ); aisatsuXniYwo ( "田中", "お休み" ); return 0; }
#include <stdio.h> /* print3 は、同じ文字列を三回出力したい */ /* 「"Hello, World\n"」の部分を変数(X)にしたい */ void print3(char *X) { /* 関数の定義 */ /* X が "Hello" に等しい時だけ、他の場合と異なる振る舞いをする */ if ( !strcmp ( X, "Hello\n" ) ) { /* X が "Hello" に等しい時 */ printf ( "もう。飽きた\n" ); } else { /* X が "Hello" に等しく無い時 */ printf ( X ); printf ( X ); printf ( X ); } } int main(void) { print3("Hello, World\n"); /* 関数呼び出し */ print3("Hello\n" ); /* 引数として、特別な「"Hello\n"」を指定 */ print3( "こんにちは、皆さん\n" ); /* 関数呼び出し */ print3( "ニーハオ,中国\n" ); /* 関数呼び出し */ return 0; }
#include <stdio.h> int main(void) { /* これ以後は、しばらく、半角のみ(日本語[全角]) */ printf ( "abc\n" ); /* 画面に「abc」と改行が表示される */ printf ( "abc\n" + 1 ); /* 画面に「bc」と改行が表示される */ /* "abc\n" + 1 -> "bc\n" */ printf ( "abc\n" + 2 ); /* 画面に「c」と改行が表示される */ /* "abc\n" + 2 -> ( "abc\n" + 1 ) + 1 -> "bc\n" + 1 -> "c\n" */ return 0; }
#include <stdio.h> int main(void) { /* これ以後は、しばらく、半角のみ(日本語[全角]) */ printf ( "abc\n" + 2 ); printf ( "abc\n" + 1 ); printf ( "abc\n" ); printf ( "abc\n" + 1 ); printf ( "abc\n" + 2 ); return 0; }
#include <stdio.h> void primit3 ( char *X ) { printf ( X + 2 ); printf ( X + 1 ); printf ( X ); printf ( X + 1 ); printf ( X + 2 ); } int main(void) { /* これ以後は、しばらく、半角のみ(日本語[全角]) */ primit3 ( "abc\n" ); printf ( "----\n" ); primit3 ( "123\n" ); return 0; }
#include <stdio.h> void primit3 ( char *X ) { printf ( X + 2 ); printf ( X + 1 ); printf ( X ); printf ( X + 1 ); printf ( X + 2 ); } void primit6 ( char *X ) { printf ( X + 5 ); printf ( X + 4 ); printf ( X + 3 ); printf ( X + 2 ); printf ( X + 1 ); printf ( X ); printf ( X + 1 ); printf ( X + 2 ); printf ( X + 3 ); printf ( X + 4 ); printf ( X + 5 ); } int main(void) { /* これ以後は、しばらく、半角のみ(日本語[全角]) */ primit3 ( "abc\n" ); printf ( "----\n" ); primit3 ( "123\n" ); printf ( "----\n" ); primit6 ( "ABCDEF\n" ); return 0; }
#include <stdio.h> /* [a] triangleN ( "abc\n" ); abc bc c となるようにしたい [b] triangleN ( "abcefg\n" ); abcdef bcdef cdef def ef f */ void triangleN ( char *X ) { if ( !strcmp ( X + 3, "\n" ) ) { /* [だめ] X = "abc\n" の時には */ /* [よい] X が 3 文字 + \n の時 X + 3 = "\n" */ printf ( X ); printf ( X + 1 ); printf ( X + 2 ); } else { /* "abcdef\n" の時 ( X が "abc\n" でない時 ) には */ printf ( X ); printf ( X + 1 ); printf ( X + 2 ); printf ( X + 3 ); printf ( X + 4 ); printf ( X + 5 ); } } int main(void) { triangleN ( "abc\n" ); printf ( "----\n" ); triangleN ( "abcefg\n" ); printf ( "----\n" ); triangleN ( "123\n" ); printf ( "----\n" ); triangleN ( "123456\n" ); printf ( "----\n" ); return 0; }
#include <stdio.h> /* [a] triangleN ( "abc\n" ); abc bc c となるようにしたい [b] triangleN ( "abcefg\n" ); abcdef bcdef cdef def ef f */ void triangleN ( char *X ) { if ( !strcmp ( X, "\n" ) ) { /* 0 文字 + "\n" */ /* 空っぽ */ } else { if ( !strcmp ( X + 1, "\n" ) ) { /* 1 文字 + "\n" */ printf ( X ); } else { if ( !strcmp ( X + 2, "\n" ) ) { /* 2 文字 + "\n" */ printf ( X ); printf ( X + 1 ); } else { if ( !strcmp ( X + 3, "\n" ) ) { /* 3 文字 + "\n" */ printf ( X ); printf ( X + 1 ); printf ( X + 2 ); } else { if ( !strcmp ( X + 4, "\n" ) ) { /* 4 文字 + "\n" */ printf ( X ); printf ( X + 1 ); printf ( X + 2 ); printf ( X + 3 ); } else { if ( !strcmp ( X + 5, "\n" ) ) { /* 5 文字 + "\n" */ printf ( X ); printf ( X + 1 ); printf ( X + 2 ); printf ( X + 3 ); printf ( X + 4 ); } else { /* 6 だと思うことにする */ printf ( X ); printf ( X + 1 ); printf ( X + 2 ); printf ( X + 3 ); printf ( X + 4 ); printf ( X + 5 ); } } } } } } } int main(void) { triangleN ( "ab\n" ); printf ( "----\n" ); triangleN ( "abcef\n" ); printf ( "----\n" ); triangleN ( "1234\n" ); printf ( "----\n" ); triangleN ( "123456\n" ); printf ( "----\n" ); return 0; }
#include <stdio.h> /* [a] triangleN ( "abc\n" ); abc bc c となるようにしたい [b] triangleN ( "abcefg\n" ); abcdef bcdef cdef def ef f */ void triangleN ( char *X ) { if ( !strcmp ( X, "\n" ) ) { /* 0 文字 + "\n" */ /* 空っぽ */ } else { printf ( X ); triangleN ( X + 1 ); } } /* triangleN ( "abcd\n" ); => abcd bcd cd d => abcd + bcd cd d => printf ( "abcd\n" ); triangleN ( "bcd\n" ): => printf ( "abcd\n" ); triangleN ( "abcd\n" + 1 ): */ int main(void) { triangleN ( "ab\n" ); printf ( "----\n" ); triangleN ( "abcef\n" ); printf ( "----\n" ); triangleN ( "1234\n" ); printf ( "----\n" ); triangleN ( "123456\n" ); printf ( "----\n" ); triangleN ( "XYZ\n" ); /* => triangleN を探す => triangleN ( char *X ) triangleN ( "XYZ\n" ); X = "XYZ\n" => X = "XYZ\n" if ( !strcmp ( X, "\n" ) ) { } else { printf ( X ); triangleN ( X + 1 ); } => X = "XYZ\n" if ( !strcmp ( "XYZ\n", "\n" ) ) { } else { printf ( "XYZ\n" ); triangleN ( "XYZ\n" + 1 ); } => printf ( "XYZ\n" ); triangleN ( "XYZ\n" + 1 ); => printf ( "XYZ\n" ); triangleN ( "YZ\n" ); => printf ( "XYZ\n" ); triangleN を探す => printf ( "XYZ\n" ); triangleN ( char *X ); triangleN ( "YZ\n" ); X = "YZ\n" => printf ( "XYZ\n" ); X = "YZ\n" if ( !strcmp ( X, "\n" ) ) { } else { printf ( X ); triangleN ( X + 1 ); } => printf ( "XYZ\n" ); X = "YZ\n" if ( !strcmp ( "YZ\n", "\n" ) ) { } else { printf ( "YZ\n" ); triangleN ( "YZ\n" + 1 ); } => printf ( "XYZ\n" ); printf ( "YZ\n" ); triangleN ( "YZ\n" + 1 ); => printf ( "XYZ\n" ); printf ( "YZ\n" ); triangleN ( "Z\n" ); => printf ( "XYZ\n" ); printf ( "YZ\n" ); triangleN を探す => printf ( "XYZ\n" ); printf ( "YZ\n" ); triangleN ( char *X ); triangleN ( "Z\n" ); X = "Z\n" => printf ( "XYZ\n" ); printf ( "YZ\n" ); X = "Z\n" if ( !strcmp ( X, "\n" ) ) { } else { printf ( X ); triangleN ( X + 1 ); } => printf ( "XYZ\n" ); printf ( "YZ\n" ); X = "Z\n" if ( !strcmp ( "Z\n", "\n" ) ) { } else { printf ( "Z\n" ); triangleN ( "Z\n" + 1 ); } => printf ( "XYZ\n" ); printf ( "YZ\n" ); printf ( "Z\n" ); triangleN ( "\n" + 1 ); => printf ( "XYZ\n" ); printf ( "YZ\n" ); printf ( "Z\n" ); triangleN を探す => printf ( "XYZ\n" ); printf ( "YZ\n" ); printf ( "Z\n" ); triangleN ( char *X ); triangleN ( "\n" ); X = "\n" => printf ( "XYZ\n" ); printf ( "YZ\n" ); printf ( "Z\n" ); X = "\n" if ( !strcmp ( "Z\n", "\n" ) ) { } else { printf ( "Z\n" ); triangleN ( "Z\n" + 1 ); } => printf ( "XYZ\n" ); printf ( "YZ\n" ); printf ( "Z\n" ); X = "\n" if ( !strcmp ( "\n", "\n" ) ) { } else { printf ( "\n" ); triangleN ( "\n" + 1 ); } => printf ( "XYZ\n" ); printf ( "YZ\n" ); printf ( "Z\n" ); */ printf ( "----\n" ); triangleN ( "1234567890\n" ); return 0; }
#include <stdio.h> /* primaid ( "abc\n" ); => c bc abc bc c primaid ( "12345\n" ); => 5 45 345 2345 12345 2345 345 45 5 => 5 45 345 2345 12345 2345 345 45 5 */ void triangleN ( char *X ) { /* triangleN ( "12345\n" ); => 12345 2345 345 45 5 => 12345 + 2345 345 45 5 => printf ( "12345\n" ); triangle ( "2345\n" ); => printf ( "12345\n" ); triangle ( "12345\n" + 1 ); */ if ( !strcmp ( X, "\n" ) ) { /* 何もしない */ } else { printf ( X ); triangleN ( X + 1 ); } } void triangleN2 ( char *X ) { /* triangleN2 ( "12345\n" ); => 5 45 345 2345 12345 => 5 45 345 2345 + 12345 => triangleN2 ( "2345\n" ); + printf ( "12345\n" ); */ if ( !strcmp ( X, "\n" ) ) { /* 何もしない */ } else { triangleN2 ( X + 1 ); printf ( X ); } } void piramid ( char *X ) { /* 上る三角 */ triangleN2 ( X + 1 ); /* 下る三角 */ triangleN ( X ); } int main(void) { piramid ( "abc\n" ); printf ( "---\n" ); piramid ( "123456\n" ); return 0; }
#include <stdio.h> #include "s_turtle.h" /* ?T?v???O???????g??????? */ int main(void) { /* ???? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ /* ?T?????v 4 ????????c???????i?? */ s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ /* ?T???????? */ /* ???? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ /* ?T?????v 4 ????????c???????i?? */ s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ /* ?T???????? */ /* ?O??? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ /* ?T?????v 4 ????????c???????i?? */ s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ /* ?T???????? */ /* ?l??? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ /* ?T?????v 4 ????????c???????i?? */ s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ /* ?T???????? */ getchar(); /* ?\????? [Enter] ???? */ s_turtle_stop(); /* ?T?v???O?????I??????????? */ return 0; }
#include <stdio.h> #include "s_turtle.h" /* ?T?v???O???????g??????? */ int main(void) { /* ???? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ /* ?T?????v 4 ????????c???????i?? */ s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ /* ?T???????? */ /* ???? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ /* ?T?????v 4 ????????c???????i?? */ s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ /* ?T???????? */ /* ?O??? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ /* ?T?????v 4 ????????c???????i?? */ s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ /* ?T???????? */ /* ?l??? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ /* ?T?????v 4 ????????c???????i?? */ s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ /* ?T???????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ /* ?T?????????? */ s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_turn(); /* ??? 45 ?x?????? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ s_turtle_move(); /* ?T??????O???????c???????i?? */ getchar(); /* ?\????? [Enter] ???? */ s_turtle_stop(); /* ?T?v???O?????I??????????? */ return 0; }
Download : 20160520-01.c ( utf8 版 )
/* * 20160520-01-QQQQ.c * * 漢字の「回」という文字(にみえる..) 絵を Turtle Graphics で書きなさい */ #include <stdio.h> #include "s_turtle.h" /* * sub */ void jump_ten(void) { /* 10 歩跳ねる */ s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); s_turtle_jump(); } void move_ten(void) { /* 10 歩進む */ s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); s_turtle_move(); } void turn_90() { /* 90 度向きをかえる */ s_turtle_turn(); s_turtle_turn(); } void small_square() { move_ten(); turn_90(); /* ** この部分を完成させなさい */ } void big_square() { move_ten(); move_ten(); move_ten(); turn_90(); /* ** この部分を完成させなさい */ } int main ( void ) { small_square(); /* ** この部分を完成させなさい */ big_square(); putchar ( '>' ); getchar(); s_turtle_stop(); return 0; }
$ ./20160520-01-QQQQ.exe >$