Download : sample-001.c ( SJIS 版 )
/* * CDATE sample-001.c */ /* * "Hello, World" again */ #include <stdio.h> int main ( void ) { printf ( "Hello, World\n" ); /* "Hello, World" という文字列と改行 ( "\n" ) を表示する */ return 0; }
C:\usr\c>sample-001 C:\usr\c>
Download : sample-002.c ( SJIS 版 )
/* * 2014/05/23 sample-002.c */ /* * プログラム・ノックアウト (1) */ #include <stdio.h> int main ( void ) { /* まず、printf をノックアウト */ return 0; }
C:\usr\c>sample-002 C:\usr\c>
Download : sample-003.c ( SJIS 版 )
/* * 2014/05/23 sample-003.c */ /* * プログラム・ノックアウト (2) */ /* * main 関数もなくしたら ? */ /* ここには何もない */
c:\\usr\\c> cc -c sample-003.c c:\\usr\\c> cc -o sample-003.exe sample-003.o /usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: \ In function `_start': (.text+0x18): undefined reference to `main' collect2: ld はステータス 1 で終了しました c:\\usr\\c>
Download : sample-004.c ( SJIS 版 )
/* * 2014/05/23 sample-004.c */ /* * プログラム・ノックアウト (3) */ /* * #include <stdio.h> // #include を無くした */ int main ( void ) { printf ( "Hello, World\n" ); /* ここで「警告」が出る */ return 0; }
C:\usr\c> cc -c sample-004.c sample-004.c:17:3: 警告: 組み込み関数 ‘printf’ の互換性がない暗黙的な宣言です [デフォルトで有効]
Download : sample-005.c ( SJIS 版 )
/* * 2014/05/23 sample-005.c */ /* * プログラム・ノックアウト (4) */ /* * #include <stdio.h> // #include を無くした */ int main ( void ) { /* printf も使わないと、「警告」はなくなった */ return 0; }
C:\usr\c>sample-005 C:\usr\c>
Download : sample-006.c ( SJIS 版 )
/* * 2014/05/23 sample-006.c */ /* * プログラム・ノックアウト (5) */ void main ( void ) { /* int を void に変更 */ /* return 0; を削って、空っぽにする */ } /* 最も短い C 言語プログラムの実現 */
C:\usr\c>sample-006 C:\usr\c>
Download : sample-007.c ( SJIS 版 )
/* * 2014/05/23 sample-007.c */ /* * プログラム・ノックアウト (6) */ /* * #include の代りに printf の extern 宣言 */ extern int printf ( const char *message, ... ); /* 「extern void printf ( char *message );」 ではない ?? */ /* * main */ int main ( void ) { printf ( "Hello, World\n" ); /* 「警告」が消えた */ return 0; }
C:\usr\c>sample-007 Hello, World C:\usr\c>
Download : sample-008.c ( SJIS 版 )
/* * 2014/05/23 sample-008.c */ #include <stdio.h> /* * 文字列を三度表示する : 関数定義の例 */ void threeTimesPrint ( char *message ) { printf ( message ); /* 一度目 */ printf ( message ); /* ニ度目 */ printf ( message ); /* 三度目 */ } /* * main */ int main(void) { threeTimesPrint ( "Hello\n" ); /* 関数呼出しの例 */ threeTimesPrint ( "こんにちは\n" ); return 0; }
C:\usr\c>sample-008 Hello Hello Hello こんにちは こんにちは こんにちは C:\usr\c>
Download : sample-009.c ( SJIS 版 )
/* * 2014/05/23 sample-009.c */ #include <stdio.h> /* * echo_char ( char ch ) * char ch -- 引数で指定された文字 * 引数で指定された文字を『』付で出力 */ void echo_char ( char ch ) { printf ( "『" ); putchar ( ch ); /* 引数で指定された文字を出力する */ printf ( "』" ); } /* * main */ int main(void) { printf ( "何か文字を入れてから[Enter]キーを押す : " ); echo_char ( getchar() ); /* getchar() で文字を読込み、それを出力 */ putchar ( '\n' ); return 0; }
A
C:\usr\c>sample-009< sample-009.in 何か文字を入れてから[Enter]キーを押す : 『A』 C:\usr\c>
Download : sample-016.c ( SJIS 版 )
/* * 2014/05/23 sample-016.c */ #include <stdio.h> /* * check_star_char */ void check_star_char ( char ch ) { if ( ch == '*' ) { /* ch の中身が '*' かどうかをチェック */ printf ( "これは「*」です\n" ); } else { printf ( "これは「*」ではありません\n" ); } } /* * main */ int main(void) { check_star_char ( getchar() ); /* getchar() で文字を読込み、それを出力 */ return 0; }
A
C:\usr\c>sample-016 これは「*」ではありません C:\usr\c>
#include <stdio.h> void loop_again( char *string ) { if ( *string == '\0' ) { /* 引数が空文字列のとき */ /* なにもしない */ } else { printf ( "Hello\n" ); /* 何か */ loop_again ( string + 1 ); /* 関数 loop_again の中で loop_again (自分自身) を 呼び出す : 再帰呼出し */ } } int main(void) { loop_again ( "123" ); /* 文字列の長さ (3) 回 Hello が出る */ loop_again ( "123456789" ); /* 文字列の長さ (9) 回 Hello が出る */ }
#include <stdio.h> /* 目的は printfint ( 7 ); 7 と出力 printfint ( 123 ); 123 と出力 printfint ( -789 ); -789 と出力 となる関数 */ void printOneDigit ( int n ) { putchar ( '0' + n ); /* 予防的なプログラミング 上のプログラムは 0 <= n <= 9 の時のみ上手く行く 逆の言い方をすれば、それ以外の使いかたをすると問題がおきる そこで、悪い事がおきないように予防する if ( n < 0 ) { putchar ( '0' ); } else { if ( n > 9 ) { putchar ( '9' ); } else { putchar ( '0' + n ); } } */ /* '0' : 「0」という文字 '0' + 0 -> '0' '0' + 1 -> '1' '0' + 2 -> '2' .. '0' + 9 -> '9' '0' + 10 -> '[' // ASCII Code 表に従っている n : 整数値 ( -100, 0, 1, 2, 1000, .. ? ) !! n が 0 〜 9 の時には、 !! '0' + n は '0' 〜 '9' になる !! それ以外の時には... よくわからないが !! ASCII Code 表に従う.. */ } int main(void){ printOneDigit ( 7 ); /* これは OK */ printOneDigit ( -789 ); /* これは.. NG */ }
#include <stdio.h> void printOneDigit ( int n ) { putchar ( '0' + n ); } void printPositiveInteger ( int pn ) { /* pn が正の時に、複数桁でも出力したい.. */ /* printPositiveInteger ( 123 ); 123 と出力する printPositiveInteger ( 123 ); 1 と出力する 2 と出力する 3 と出力する printPositiveInteger ( 123 ); 1 と出力する 2 と出力する 12 と出力する 12 = (123/10) と出力する printPositiveInteger ( 123/10 ); 3 と出力する 3 = 123 % 10 を出力 printOneDigit ( 123 % 10 ); printPositiveInteger ( n ); -> printPositiveInteger ( n / 10 ); printOneDigit ( n % 10 ); */ if ( pn > 0 ) { printPositiveInteger ( pn / 10 ); printOneDigit ( pn % 10 ); } else { /* なにもしなくてもよい */ } /* if ( pn <= 0 ) { } else { printPositiveInteger ( pn / 10 ); printOneDigit ( pn % 10 ); } */ } int main(void){ printPositiveInteger ( 1 ); putchar ( '\n' ); printPositiveInteger ( 123 ); putchar ( '\n' ); printPositiveInteger ( -123 ); putchar ( '\n' ); printPositiveInteger ( 0 ); putchar ( '\n' ); return 0; }
#include <stdio.h> void printOneDigit ( int n ) { putchar ( '0' + n ); } void printPositiveInteger ( int pn ) { if ( pn > 0 ) { printPositiveInteger ( pn / 10 ); printOneDigit ( pn % 10 ); } else { /* なにもしなくてもよい */ } } void printfint ( int n ) { /* n は「色々」な場合が考えられる n > 0 n == 0 n < 0 のような形で、「有限」の物に分類する */ if ( n > 0 ) { /* 正の時 */ printPositiveInteger ( n ); } else { if ( n < 0 ) { /* 負の時 */ /* -123 - 123 */ putchar ( '-' ); printPositiveInteger ( -n ); /* -n == (-1)*n */ } else { /* 0 の時 */ putchar ( '0' ); } } } int main(void){ printfint ( 7 ); putchar ( '\n' ); printfint ( 123 ); putchar ( '\n' ); printfint ( -123 ); putchar ( '\n' ); printfint ( 0 ); putchar ( '\n' ); printfint ( '0' ); putchar ( '\n' ); printfint ( 'A' ); putchar ( '\n' ); return 0; }
#include <stdio.h> int main ( void ) { printf ( "Hello, World\n" ); return 0; }
#include <stdio.h> int main ( void ) { printf ( "こんにちは\n" ); return 0; }
Hello, World
#include <stdio.h> int main ( void ) { return 0; }
/* からっぽ */
#include <stdio.h> void main ( void ) { printf ( "Hello, World\n" ); }
void main ( void ) { printf ( "Hello, World\n" ); }
/* printf の extern 宣言を #include の代りに追加.. */ extern int printf ( const char *mssage, ... ); void main ( void ) { printf ( "Hello, World\n" ); }
void main ( void ) { }
#include "p-017b.c" void main ( void ) { nanika(); }
void nanika( void ) { }
#include <stdio.h> int main(void){ putchar ( 'A' ); /* 'A' を画面に出力 */ /* cf. printf ( "A" ) */ return 0; }
#include <stdio.h> int main(void){ putchar ( getchar() ); /* getchar() はキーボードから一文字「入力」し、 その結果を「返す」 */ return 0; }
#include <stdio.h> int main(void){ putchar ( getchar() ); return 0; }
#include <stdio.h> void printOneDigit ( int n ) { putchar ( '0' + n ); } void printPositiveInteger ( int pn ) { if ( pn > 0 ) { printPositiveInteger ( pn / 10 ); printOneDigit ( pn % 10 ); } else { } } void printfint ( int n ) { if ( n > 0 ) { /* 正の時 */ printPositiveInteger ( n ); } else { if ( n < 0 ) { /* 負の時 */ putchar ( '-' ); printPositiveInteger ( -n ); /* -n == (-1)*n */ } else { /* 0 の時 */ putchar ( '0' ); } }
Download : 20140523-01.c ( SJIS 版 )
/* * CDATE FILENAME * * キーボードから一文字入力し、その文字によって異る国の挨拶をする */ #include <stdio.h> /* * hello ( char contry ) * char contry : 国を表す一文字 * j : 日本 * e : 英語 * c : 中国 * f : フランス語 * g : ドイツ語 */ void hello ( char cmd ) { if ( cmd == 'j' ) { /* 'j' の時は、日本語にする */ printf ( "こんにちは\n" ); } else if ( cmd == 'e' ) { /* 'e' の時は、英語にする */ /* ** この部分を完成させなさい */ } else if ( cmd == 'c' ) { /* 'c' の時は、中国語にする */ printf ( "ニイハオ\n" ); } else if ( cmd == 'f' ) { /* 'f' の時は、フランス語にする */ printf ( "Bonjour\n" ); /* ** この部分を完成させなさい */ printf ( "Guten tag\n" ); } else { /* どれでもなければ.. */ printf ( "???\n" ); } } /* * 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
C:\usr\c\> 20140523-01-QQQQ 国を表す文字を入力してください j 日本 e 英語 c 中国 f フランス g ドイツ Bonjour C:\usr\c\>
Download : 20140523-02.c ( SJIS 版 )
/* * CDATE FILENAME * * キーボードから一行(改行まで..)文字列を読込み、それを逆順に出す */ #include <stdio.h> /* * reverse ( char contry ) * char cmd : どのメッセージにするかを表す文字 * */ void reverse_line ( char ch ) { if ( ch == '\n' ) { /* 改行ならば.. */ /* なにもしなくてよい */ } else { /* そうでなければ.. */ /* ** この部分を完成させなさい */ } } /* * main */ int main( void ) { reverse_line ( getchar() ); /* 最初の文字を読み込んで .. */ putchar ( '\n' ); /* 改行を出力 */ return 0; }
abc123
C:\usr\c\> 20140523-02-QQQQ 321cba C:\usr\c\>
先週(2014/05/23)の課題 20140516-03をする。