当日のOHP資料です。
Download : sample-001.c ( SJIS 版 )
/* * 2011/04/22 sample-001.c */ /* * 最初のプログラムは "Hello, World" */ #include <stdio.h> int main ( void ) { printf ( "Hello, World\n" ); /* "Hello, World" という文字列と改行 ( "\n" ) を表示する */ return 0; }
C:\usr\c\> sample-001 Hello, World C:\usr\c\>
Download : sample-002.c ( SJIS 版 )
/* * 2011/04/22 sample-003.c */ /* * printf を並べれば、沢山の文字列が表示される */ #include <stdio.h> int main ( void ) { printf ( "おはよウナギ\n" ); printf ( "こんにちワン\n" ); printf ( "こんばんワニ\n" ); return 0; }
C:\usr\c\> sample-002 おはよウナギ こんにちワン こんばんワニ C:\usr\c\>
Download : sample-003.c ( SJIS 版 )
/* * 2011/05/13 sample-008.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-003 呼掛け : ヤッホー 木霊 : ヤッホー 呼掛け : オーイ 木霊 : オーイ 呼掛け : 木霊 : 何か言わないと、言い返せないじゃないか.. 呼掛け : 生意気なやつだ 木霊 : 生意気なやつだ C:\usr\c\>
Download : sample-004.c ( SJIS 版 )
/* * 2011/05/13 sample-010.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-004 abcdefg bcdefg cdefg defg efg fg g xyz yz z C:\usr\c\>
Download : sample-005.c ( SJIS 版 )
/* * 2011/05/27 sample-005.c */ #include <stdio.h> /* * 別のファイルの関数を呼出す main 関数 */ int main () { prt ( "Hello, World\n" ); // sample-006.c の中に定義されている prt 関数を利用している return 0; }
C:\usr\c\> sample-005 C:\usr\c\>
Download : sample-006.c ( SJIS 版 )
/* * 2011/05/27 sample-006.c */ #include <stdio.h> /* * */ void prt ( char *str ) { /* この関数は sample-005.c の main から呼出す */ printf ( str ); }
C:\usr\c\> sample-006 C:\usr\c\>
Download : 20110930-01.c ( SJIS 版 )
/* * 20110930-1-QQQQ.c * 成績を入力して、ヒストグラムと順位を表示する */ /* * */ #define EOS '\0' #include <stdio.h> #include "s_print.h" #include "s_input.h" /* * */ extern void score ( char my, int cs, int ca, int cb, int cc, int cd ); /* * */ void print_bar ( int len ) { if ( len > 0 ) { s_print_char ( '*' ); print_bar ( len - 1 ); } } void print_hist ( int ch, int len ) { s_print_char ( ch ); s_print_char ( ':' ); print_bar ( len ); s_print_newline(); } /* * */ void print_report ( char my, int cs, int ca, int cb, int cc, int cd ) { print_hist ( 'S', cs ); print_hist ( 'A', ca ); print_hist ( 'B', cb ); print_hist ( 'C', cc ); print_hist ( 'D', cd ); switch ( my ) { case 'S': s_print_int ( 1 ); break; case 'A': s_print_int ( cs + 1 ); break; case 'B': s_print_int ( cs + ca + 1 ); break; case 'C': s_print_int ( cs + ca + cb + 1 ); break; case 'D': s_print_int ( cs + ca + cb + cc + 1 ); break; } s_print_string ( "位です。\n" ); } /* * */ void score_with_input ( char my, int cs, int ca, int cb, int cc, int cd, \ char *is ) { if ( is == NULL ) { /* もう入力はない */ print_report ( my, cs, ca, cb, cc, cd ); } else { switch ( *is ) { /* 成績をみる */ case 'S': score ( my, cs + 1, ca, cb, cc, cd ); break; case 'A': score ( my, cs, ca + 1, cb, cc, cd ); break; case 'B': score ( my, cs, ca, cb + 1, cc, cd ); break; case 'C': score ( my, cs, ca, cb, cc + 1, cd ); break; case 'D': score ( my, cs, ca, cb, cc, cd + 1 ); break; default: score ( my, cs, ca, cb, cc, cd ); break; } } } void score ( char my, int cs, int ca, int cb, int cc, int cd ) { score_with_input ( my, cs, ca, cb, cc, cd, s_input_string() ); } /* * */ int main ( int argc, char *argv[] ) { if ( argc == 2 ) { /* 引数が一つだけ指定されるものとする */ switch ( argv[1][0] ) { /* 引数の最初の文字だけみる */ case 'S': case 'A': case 'B': case 'C': case 'D': score ( argv[1][0], 0, 0, 0, 0, 0 ); /* ただしければ処理 */ break; default: printf ( "引数は S, A, B, C, D のいずれかです。\n" ); break; } } else { printf ( "引数が一つ必要です\n" ); } return 0; } /* * */
A A A A A A A C C C D S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S
C:\usr\c\> 01 A< 01.in S:*************************************************** A:******* B: C:*** D:* 52位です。 C:\usr\c\>