Download : sample-001.c ( SJIS 版 )
/* * 2014/04/25 sample-001.c */ /* * 長いプログラムを複数に分割する * 変更前 */ #include <stdio.h> int main ( void ) { /* 16 回同じ亊をする */ printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); return 0; }
C:\usr\c>sample-001 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 C:\usr\c>
Download : sample-002.c ( SJIS 版 )
/* * 2014/04/25 sample-002.c */ /* * 長いプログラムを複数に分割する * 変更後 */ #include <stdio.h> void fourTimes() { printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); } int main ( void ) { /* 16 回 = 4 × 4 回同じ亊をする */ fourTimes(); fourTimes(); fourTimes(); fourTimes(); return 0; }
C:\usr\c>sample-002 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 C:\usr\c>
Download : sample-003.c ( SJIS 版 )
/* * 2014/04/25 sample-003.c */ /* * 長いプログラムを複数に分割する * 変更後 */ #include <stdio.h> void fourTimes() { printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); } void fourFourTimes() { fourTimes(); fourTimes(); fourTimes(); fourTimes(); } int main ( void ) { /* 64 回 = 4 × 4 × 4 回同じ亊をする */ fourFourTimes(); fourFourTimes(); fourFourTimes(); fourFourTimes(); return 0; }
C:\usr\c>sample-003 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 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 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 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 C:\usr\c>
Download : sample-004.c ( SJIS 版 )
/* * 2014/04/25 sample-004.c */ #include <stdio.h> /* * 「金糸雀(かなりや)」 * (c) 西條八十作詞・成田為三作曲 * http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/kanariya.html */ int main ( void ) { printf ( "唄を忘れた 金糸雀(かなりや)は\n" ); printf ( "後の山に 棄てましょか\n" ); printf ( "いえ いえ それはなりませぬ\n" ); printf ( "\n" ); printf ( "唄を忘れた 金糸雀(かなりや)は\n" ); printf ( "背戸の小薮に 埋けましょか\n" ); printf ( "いえ いえ それはなりませぬ\n" ); printf ( "\n" ); printf ( "唄を忘れた 金糸雀(かなりや)は\n" ); printf ( "柳の鞭で ぶちましょか\n" ); printf ( "いえ いえ それはかわいそう\n" ); printf ( "\n" ); printf ( "唄を忘れた 金糸雀(かなりや)は\n" ); printf ( "象牙の船に 銀の櫂\n" ); printf ( "月夜の海に 浮べれば\n" ); printf ( "忘れた唄を おもいだす\n" ); return 0; }
C:\usr\c>sample-004 唄を忘れた 金糸雀(かなりや)は 後の山に 棄てましょか いえ いえ それはなりませぬ 唄を忘れた 金糸雀(かなりや)は 背戸の小薮に 埋けましょか いえ いえ それはなりませぬ 唄を忘れた 金糸雀(かなりや)は 柳の鞭で ぶちましょか いえ いえ それはかわいそう 唄を忘れた 金糸雀(かなりや)は 象牙の船に 銀の櫂 月夜の海に 浮べれば 忘れた唄を おもいだす C:\usr\c>
Download : sample-005.c ( SJIS 版 )
/* * 2014/04/25 sample-005.c */ #include <stdio.h> /* * 「金糸雀(かなりや)」 * (c) 西條八十作詞・成田為三作曲 * http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/kanariya.html */ /* * まず、四つの歌にわける */ void kyoku_1() { printf ( "唄を忘れた 金糸雀(かなりや)は\n" ); printf ( "後の山に 棄てましょか\n" ); printf ( "いえ いえ それはなりませぬ\n" ); } void kyoku_2() { printf ( "唄を忘れた 金糸雀(かなりや)は\n" ); printf ( "背戸の小薮に 埋けましょか\n" ); printf ( "いえ いえ それはなりませぬ\n" ); } void kyoku_3() { printf ( "唄を忘れた 金糸雀(かなりや)は\n" ); printf ( "柳の鞭で ぶちましょか\n" ); printf ( "いえ いえ それはなりませぬ\n" ); } void kyoku_4() { printf ( "唄を忘れた 金糸雀(かなりや)は\n" ); printf ( "象牙の船に 銀の櫂\n" ); printf ( "月夜の海に 浮べれば\n" ); printf ( "忘れた唄を おもいだす\n" ); } int main ( void ) { kyoku_1(); printf ( "\n" ); kyoku_2(); printf ( "\n" ); kyoku_3(); printf ( "\n" ); kyoku_4(); return 0; }
C:\usr\c>sample-005 唄を忘れた 金糸雀(かなりや)は 後の山に 棄てましょか いえ いえ それはなりませぬ 唄を忘れた 金糸雀(かなりや)は 背戸の小薮に 埋けましょか いえ いえ それはなりませぬ 唄を忘れた 金糸雀(かなりや)は 柳の鞭で ぶちましょか いえ いえ それはなりませぬ 唄を忘れた 金糸雀(かなりや)は 象牙の船に 銀の櫂 月夜の海に 浮べれば 忘れた唄を おもいだす C:\usr\c>
Download : sample-006.c ( SJIS 版 )
/* * 2014/04/25 sample-006.c */ #include <stdio.h> /* * 「金糸雀(かなりや)」 * (c) 西條八十作詞・成田為三作曲 * http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/kanariya.html */ /* * 更に、共通する部分を抜き出す */ void uta() { printf ( "唄を忘れた 金糸雀(かなりや)は\n" ); } void ieie() { printf ( "いえ いえ それはなりませぬ\n" ); } void kyoku_1() { uta(); printf ( "後の山に 棄てましょか\n" ); ieie(); } void kyoku_2() { uta(); printf ( "背戸の小薮に 埋けましょか\n" ); ieie(); } void kyoku_3() { uta(); printf ( "柳の鞭で ぶちましょか\n" ); ieie(); } void kyoku_4() { uta(); printf ( "象牙の船に 銀の櫂\n" ); printf ( "月夜の海に 浮べれば\n" ); printf ( "忘れた唄を おもいだす\n" ); } int main ( void ) { kyoku_1(); printf ( "\n" ); kyoku_2(); printf ( "\n" ); kyoku_3(); printf ( "\n" ); kyoku_4(); return 0; }
C:\usr\c>sample-006 唄を忘れた 金糸雀(かなりや)は 後の山に 棄てましょか いえ いえ それはなりませぬ 唄を忘れた 金糸雀(かなりや)は 背戸の小薮に 埋けましょか いえ いえ それはなりませぬ 唄を忘れた 金糸雀(かなりや)は 柳の鞭で ぶちましょか いえ いえ それはなりませぬ 唄を忘れた 金糸雀(かなりや)は 象牙の船に 銀の櫂 月夜の海に 浮べれば 忘れた唄を おもいだす C:\usr\c>
Download : sample-007.c ( SJIS 版 )
/* * 2014/04/25 sample-007.c */ #include <stdio.h> /* * 「金糸雀(かなりや)」 * (c) 西條八十作詞・成田為三作曲 * http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/kanariya.html */ /* * 1 〜 3 を引数付き関数でおきかえる */ void uta() { printf ( "唄を忘れた 金糸雀(かなりや)は\n" ); } void ieie() { printf ( "いえ いえ それはなりませぬ\n" ); } void kyoku_123 ( char *center ) { if ( !strcmp ( center, "象牙の船に 銀の櫂\n" ) ) { /* 4 */ uta(); printf ( "象牙の船に 銀の櫂\n" ); printf ( "月夜の海に 浮べれば\n" ); printf ( "忘れた唄を おもいだす\n" ); } else { /* 1, 2, 3 */ uta(); printf ( center ); ieie(); } } void kyoku_1() { kyoku_123 ( "後の山に 棄てましょか\n" ); } void kyoku_2() { kyoku_123 ( "背戸の小薮に 埋けましょか\n" ); } void kyoku_3() { kyoku_123 ( "柳の鞭で ぶちましょか\n" ); } void kyoku_4() { /* uta(); printf ( "象牙の船に 銀の櫂\n" ); printf ( "月夜の海に 浮べれば\n" ); printf ( "忘れた唄を おもいだす\n" ); */ kyoku_123 ( "象牙の船に 銀の櫂\n" ); } int main ( void ) { kyoku_1(); printf ( "\n" ); kyoku_2(); printf ( "\n" ); kyoku_3(); printf ( "\n" ); kyoku_4(); return 0; }
C:\usr\c>sample-007 唄を忘れた 金糸雀(かなりや)は 後の山に 棄てましょか いえ いえ それはなりませぬ 唄を忘れた 金糸雀(かなりや)は 背戸の小薮に 埋けましょか いえ いえ それはなりませぬ 唄を忘れた 金糸雀(かなりや)は 柳の鞭で ぶちましょか いえ いえ それはなりませぬ 唄を忘れた 金糸雀(かなりや)は 象牙の船に 銀の櫂 月夜の海に 浮べれば 忘れた唄を おもいだす C:\usr\c>
Download : sample-008.c ( SJIS 版 )
/* * 2014/04/25 sample-008.c */ #include <stdio.h> #include <string.h> /* * 「金糸雀(かなりや)」 * (c) 西條八十作詞・成田為三作曲 * http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/kanariya.html */ /* * 4 の場合もまとめられないだろうか ? */ void uta() { printf ( "唄を忘れた 金糸雀(かなりや)は\n" ); } void ieie() { printf ( "いえ いえ それはなりませぬ\n" ); } /* * if と strcmp を使って処理できる */ void kyoku_123 ( char *center ) { uta(); printf ( center ); if ( !strcmp ( center, "象牙の船に 銀の櫂\n" ) ) { printf ( "月夜の海に 浮べれば\n" ); printf ( "忘れた唄を おもいだす\n" ); } else { ieie(); } } void kyoku_1() { kyoku_123 ( "後の山に 棄てましょか\n" ); } void kyoku_2() { kyoku_123 ( "背戸の小薮に 埋けましょか\n" ); } void kyoku_3() { kyoku_123 ( "柳の鞭で ぶちましょか\n" ); } void kyoku_4() { kyoku_123 ( "象牙の船に 銀の櫂\n" ); } int main ( void ) { kyoku_1(); printf ( "\n" ); kyoku_2(); printf ( "\n" ); kyoku_3(); printf ( "\n" ); kyoku_4(); return 0; }
C:\usr\c>sample-008 唄を忘れた 金糸雀(かなりや)は 後の山に 棄てましょか いえ いえ それはなりませぬ 唄を忘れた 金糸雀(かなりや)は 背戸の小薮に 埋けましょか いえ いえ それはなりませぬ 唄を忘れた 金糸雀(かなりや)は 柳の鞭で ぶちましょか いえ いえ それはなりませぬ 唄を忘れた 金糸雀(かなりや)は 象牙の船に 銀の櫂 月夜の海に 浮べれば 忘れた唄を おもいだす C:\usr\c>
Download : sample-009.c ( SJIS 版 )
/* * 2014/04/25 sample-009.c */ #include <stdio.h> #include <string.h> /* * 木霊 */ void echo ( char *message ) { if ( !strcmp ( message, "" ) ) { /* もし、メッセージが空っぽならば.. */ printf ( "何か言わないと、言い返せないじゃないか.." ); } else { /* そうじゃなければ、そのまま答える */ printf ( message ); } } void chat ( char *message ) { /* こだまとお喋り */ printf ( "呼掛け : " ); printf ( message ); printf ( "\n" ); /* 呼掛けの言葉 */ printf ( "木霊 : " ); echo ( message ); printf ( "\n" ); /* 木霊の応答 */ } /* * main */ int main ( void ) { chat ( "ヤッホー" ); chat ( "オーイ" ); chat ( "" ); chat ( "生意気なやつだ" ); return 0; }
C:\usr\c>sample-009 呼掛け : ヤッホー 木霊 : ヤッホー 呼掛け : オーイ 木霊 : オーイ 呼掛け : 木霊 : 何か言わないと、言い返せないじゃないか.. 呼掛け : 生意気なやつだ 木霊 : 生意気なやつだ C:\usr\c>
Download : sample-010.c ( SJIS 版 )
/* * 2014/04/25 sample-010.c */ #include <stdio.h> #include <string.h> /* * 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; }
C:\usr\c>sample-010 abcde bcde cde cde C:\usr\c>
Download : sample-011.c ( SJIS 版 )
/* * 2014/04/25 sample-011.c */ #include <stdio.h> #include <string.h> /* * main */ void recursive ( char *string ) { if ( !strcmp ( string, "" ) ) { /* もし空文字列 ( "" ) ならば */ printf ( "" ); /* これで御仕舞い */ } else { /* そうでなければ、 */ printf ( string ); recursive ( string + 1 ); /* 再帰呼び出しする */ /* +1 を忘れると悲惨な事に.. */ } } int main ( void ) { recursive ( "abcdefg\n" ); recursive ( "xyz\n" ); return 0; }
C:\usr\c>sample-011 abcdefg bcdefg cdefg defg efg fg g xyz yz z C:\usr\c>
Download : sample-012.c ( SJIS 版 )
/* * 2014/04/25 sample-012.c */ #include <stdio.h> #include <string.h> /* * */ void rec_hello ( char *count ) { if ( !strcmp ( count, "" ) ) { /* カラッポなら.. */ printf ( "Hello, World\n" ); /* 一つだけ表示してみる */ } else { /* そうでなければ.. */ rec_hello ( count + 1 ); /* 二倍にして再帰よびだし */ rec_hello ( count + 1 ); } } /* * */ int main ( void ) { rec_hello ( "****" ); /* 2^4 = 16 回出力 */ /* 2^10 = 1024 だから、 "**********" を与えれば... */ return 0; }
C:\usr\c>sample-012 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 C:\usr\c>
Download : sample-013.c ( SJIS 版 )
/* * 2014/04/25 sample-013.c */ #include <stdio.h> #include <string.h> /* * */ 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 ) だけだす */ } } /* * */ int main ( void ) { printf ( "fib 3 : " ); fib ( "***" ); printf ( "\n" ); printf ( "fib 5 : " ); fib ( "*****" ); printf ( "\n" ); return 0; }
C:\usr\c>sample-013 fib 3 : *** fib 5 : ******** C:\usr\c>
#include <stdio.h> /* 関数の定義 */ /* これによって、新しい pkurino という 関数が使えるようになった */ void pkurino() { /* この三行 { から } の間は、関数の本体と呼ぶ */ printf ( "Hello, くりの\n" ); printf ( "Hello, のくり\n" ); printf ( "Hello, りのく\n" ); } int main() { pkurino(); /* 関数呼出し : 関数 pkurino を呼び出す */ /* 結果的には名前がつけられた部分(三行) が実行される */ /* この部分は関数の本体があるのと同じ */ pkurino(); pkurino(); return 0; }
/* * DATE sample-001.c */ /* * 長いプログラムを複数に分割する * 変更前 */ #include <stdio.h> void abc() { printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); printf ( "Hello, World\n" ); } int main ( void ) { /* 16 回同じ亊をする */ abc(); abc(); abc(); abc(); return 0; }
/* * 2014/04/25 sample-004.c */ #include <stdio.h> /* * 「金糸雀(かなりや)」 * (c) 西條八十作詞・成田為三作曲 * http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/kanariya.html */ void uta() { printf ( "唄を忘れた 金糸雀(かなりや)は\n" ); } void ieie() { printf ( "いえ いえ それはなりませぬ\n" ); } void kyoku_12( char * X ) { uta(); printf ( X ); ieie(); } void kyoku_1_new() { kyoku_12 ( "後の山に 棄てましょか\n" ); } void kyoku_1() { uta(); printf ( "後の山に 棄てましょか\n" ); ieie(); } void kyoku_2() { uta(); printf ( "背戸の小薮に 埋けましょか\n" ); ieie(); } int main ( void ) { kyoku_1(); printf ( "\n" ); uta(); printf ( "背戸の小薮に 埋けましょか\n" ); ieie(); printf ( "\n" ); uta(); printf ( "柳の鞭で ぶちましょか\n" ); ieie(); printf ( "\n" ); uta(); printf ( "象牙の船に 銀の櫂\n" ); printf ( "月夜の海に 浮べれば\n" ); printf ( "忘れた唄を おもいだす\n" ); return 0; }
/* * 2014/04/25 sample-006.c */ #include <stdio.h> /* * 「金糸雀(かなりや)」 * (c) 西條八十作詞・成田為三作曲 * http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/kanariya.html */ /* * 更に、共通する部分を抜き出す */ void uta() { printf ( "唄を忘れた 金糸雀(かなりや)は\n" ); } void ieie() { printf ( "いえ いえ それはなりませぬ\n" ); } void kyoku( char * X ) {/* X の部分は変るので変数にする */ /* char * は文字列に対応 */ uta(); printf ( X ); /* kyoku_1 と 2 違う部分を X にした */ ieie(); } void kyoku_1() { /* kyoku の X の部分が "後の山に 棄てましょか\n" なら OK */ kyoku ( "後の山に 棄てましょか\n" ); /* kyoku の本体の部分に変る ただし X の部分が "後の山に 棄てましょか\n" になる */ } void kyoku_2() { kyoku ( "背戸の小薮に 埋けましょか\n" ); } void kyoku_3() { uta(); printf ( "柳の鞭で ぶちましょか\n" ); ieie(); } void kyoku_4() { uta(); printf ( "象牙の船に 銀の櫂\n" ); printf ( "月夜の海に 浮べれば\n" ); printf ( "忘れた唄を おもいだす\n" ); } int main ( void ) { kyoku_1(); printf ( "\n" ); kyoku_2(); printf ( "\n" ); kyoku_3(); printf ( "\n" ); kyoku_4(); return 0; }
#include <stdio.h> void threeTimes( char * Message ) { printf ( Message ); printf ( Message ); printf ( Message ); } int main() { threeTimes ( "Hello\n" ); /* ↓ threeTimes ( char * Message ); が呼ばれる ただし Message の所には "Hello\n" が入る Message = "Hello\n" よばれと、本体に変る ↓ ただし、Message = "Hello\n" printf ( Message ); printf ( Message ); printf ( Message ); ↓ ただし、Message = "Hello\n" printf ( "Hello\n" ); printf ( "Hello\n" ); printf ( "Hello\n" ); ↓ Hello Hello Hello が表示される */ threeTimes ( "おはよう\n" ); return 0; }
#include <stdio.h> void goWichiH ( char * darega, char * dokode, char * itsu, char * nanio, char * dousita ) { printf ( darega ); printf ( "が" ); printf ( dokode ); printf ( "で" ); printf ( itsu ); printf ( "の時" ); printf ( nanio ); printf ( "を" ); printf ( dousita ); printf ( "した。\n" ); } int main() { goWichiH ( "猫", "庭", "朝", "鼠", "殺" ); /* ↓ void goWichiH ( char * darega, char * dokode, char * itsu, char * nanio, char * dousita ); が呼ばれて darega = "猫" dokode = "庭" itsu = "朝" nanio = "鼠", dousita = "殺" ↓ printf ( darega ); printf ( "が" ); printf ( dokode ); printf ( "で" ); printf ( itsu ); printf ( "の時" ); printf ( nanio ); printf ( "を" ); printf ( dousita ); printf ( "した。\n" ); ↓ printf ( "猫" ); printf ( "が" ); printf ( "庭" ); printf ( "で" ); printf ( "朝" ); printf ( "の時" ); printf ( "鼠" ); printf ( "を" ); printf ( "殺" ); printf ( "した。\n" ); */ goWichiH ( "小鳥", "屋根上", "夜", "歌", "唱う" ); return 0; }
/* * 20140425-02-QQQQ.c * 歌詞を出力する */ #include <stdio.h> /* * 「一番星みつけた」 * (C) 生沼勝作詞(注)・信時潔作曲/文部省唱歌(一年) * http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/ichibanboshi.html */ /* uta ( "一", "森", "杉" ); */ void uta ( char *ichi, char *basyo, char *ki ) { printf ( ichi ); printf ( "番星みつけた。\n" ); printf ( "あれあの" ); printf ( basyo ); printf ( "の\n" ); printf ( ki ); printf ( "の木のうえに。\n" ); } void itibanboshi() { uta ( "一", "森", "杉" ); printf ( "\n" ); uta ( "ニ", "どて", "杉" ); printf ( "\n" ); /* ** この部分を完成させなさい */ } /* * main */ int main ( void ) { itibanboshi(); return 0; }
関数の定義 単純な場合(先週) 命令の列そのものに名前をつける 例: void threeHello() { printf ( "Hello\n" ); printf ( "Hello\n" ); printf ( "Hello\n" ); } 引数つきの関数 命令の列の一部分が「変数」になっている この変数の値を後から决める事ができる void threeTimes( char * Messeage ) { printf ( Message ); printf ( Message ); printf ( Message ); /* 命令の一部に、Message という変数がふくまれる*/ /* この変数には、実際に利用する場合に 値がはいっていて、その値におきかわる */ } threeTimes ( "Hello\n" ); -> Hello Hello Hello threeTimes ( "おはよう\n" ); -> おはよう おはよう おはよう
課題プログラム内の「/*名前:ここ*/」の部分を書き換え「/*この部分を完成させなさい*/」の部分にプログラムを追加して、プログラムを完成させます。
Download : 20140425-01.c ( SJIS 版 )
/* * 20140425-01-QQQQ.c * 童謡(きらきらほし)を演奏するプログラム * cf. \ http://musicbrier.blog.shinobi.jp/%E6%A5%BD%E8%AD%9C/%E3%81%8D%E3%82%89%E3%81%8D%E3%82%89%E3%81%BC%E3%81%97%E3%80%80%E5%B9%BC%E5%85%90%E7%B7%B4%E7%BF%92%E3%81%A8%E4%BC%B4%E5%A5%8F%E4%BA%8C%E7%A8%AE \ */ #include <stdio.h> #include "s_midi.h" /* * hoshi */ void hoshi_1(void) { /* ドドソソララソ ファファミミレレド */ s_midi_length ( S_MIDI_LEN_4 ); s_midi_play ( S_MIDI_C4 ); /* ド */ s_midi_play ( S_MIDI_C4 ); /* ド */ s_midi_play ( S_MIDI_G4 ); /* ソ */ s_midi_play ( S_MIDI_G4 ); /* ソ */ s_midi_play ( S_MIDI_A5 ); /* ラ */ s_midi_play ( S_MIDI_A5 ); /* ラ */ s_midi_length ( S_MIDI_LEN_2 ); s_midi_play ( S_MIDI_G4 ); /* ソ */ s_midi_length ( S_MIDI_LEN_4 ); s_midi_play ( S_MIDI_F4 ); /* ファ */ s_midi_play ( S_MIDI_F4 ); /* ファ */ s_midi_play ( S_MIDI_E4 ); /* ミ */ s_midi_play ( S_MIDI_E4 ); /* ミ */ s_midi_play ( S_MIDI_D4 ); /* レ */ s_midi_play ( S_MIDI_D4 ); /* レ */ s_midi_length ( S_MIDI_LEN_2 ); s_midi_play ( S_MIDI_C4 ); /* ド */ } void hoshi_2(void) { /* ソソファファミミレ */ /* ** この部分を完成させなさい */ } void hoshi(void) { /* きらきらほし : ドドソソララソ ファファミミレレド ソソファファミミレ ソソファファミミレ ドドソソララソ ファファミミレレド */ hoshi_1(); hoshi_2(); hoshi_2(); hoshi_1(); } /* * main */ int main ( void ) { hoshi(); return 0; }
C:\usr\c\>20140425-01-QQQQ C:\usr\c\>
なお、他の楽曲でもかまいません。
Download : 20140425-02.c ( SJIS 版 )
/* * 20140425-02-QQQQ.c * 歌詞を出力する */ #include <stdio.h> /* * 「一番星みつけた」 * (C) 生沼勝作詞(注)・信時潔作曲/文部省唱歌(一年) * http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/ichibanboshi.html */ void uta ( char *ichi, char *basyo, char *ki ) { printf ( ichi ); printf ( "番星みつけた。\n" ); /* ** この部分を完成させなさい */ printf ( ki ); printf ( "の木のうえに。\n" ); } void itibanboshi() { uta ( "一", "森", "杉" ); printf ( "\n" ); /* ** この部分を完成させなさい */ } /* * main */ int main ( void ) { itibanboshi(); return 0; }
C:\usr\c\>20140425-02-QQQQ 一番星みつけた。 あれあの森の 杉の木のうえに。 二番星みつけた。 あれあのどての 柳の木のうえに。 三番星みつけた。 あれあの山の 松の木のうえに。 C:\usr\c\>
なお、表示する歌詞は、他の楽曲でもかまいません。