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をする。