九九の表への道

1の段を表示する

1.1から9までの整数を表示する(文字列版)

/* 1から9までの整数を表示する(文字列版) */
#include <stdio.h>	/* printfを使うためのおまじない */

main()
{	/* printfは文字列を表示する関数 */
	printf("  1  2  3  4  5  6  7  8  9\n");
}	/* 文字列は " で囲む */
/* end of q11.c */

2.1から9までの整数を表示する(forループ版)

/* 1から9までの整数を表示する(forループ版) */
#include <stdio.h>

main()
{
	int	i;
	
	for( i = 1; i < 10; i++ ) /* i が 1 から 9 まで繰り返す */
		printf("  %d", i ); /* 空白を2個空けて整数を表示 */
	printf("\n"); /* 最後に改行を表示 */
}
/* end of q12.c */

3の段を表示する

3.3から3ずつ足して行く

/* 3の段を表示する(3ずつ足して行く) */
#include <stdio.h>

main()
{
	int	i;
	
	for( i = 3; i < 30; i += 3 ) /* 3 から 3 ずつ足しながら... */
		printf("  %d", i );
	printf("\n");
}
/* end of q13a.c */

4.ちゃんと掛け算しながら

/* 3の段を表示する(掛け算しながら) */
#include <stdio.h>

main()
{
	int	i;
	
	for( i = 1; i < 10; i++ )
		printf("  %d", 3*i ); /* 3 と i の積を表示 */
	printf("\n");
}
/* end of q13m.c */

5.縦位置を揃える!

/* 3の段を表示する(掛け算しながら) */
#include <stdio.h>

main()
{
	int	i;
	
	for( i = 1; i < 10; i++ )
		printf("%3d", 3*i ); /* 3 文字分の場所を使って整数を表示 */
	printf("\n");
}
/* end of q13.c */

kの段を表示する

6.kの値を変数の初期値として与えて、掛け算しながら

/* kの段を表示する */
#include <stdio.h>

main()
{
	int	i, k;
	
	k = 4;	/* 4 の段の例 */
	for( i = 1; i < 10; i++ )
		printf("%3d", k*i );
	printf("\n");
}
/* end of q14.c */

7.kの値をキー入力する

/* kの段を表示する(kをキー入力する版) */
#include <stdio.h>

main()
{
	int	i, k;

	printf("何の段を表示しますか?:");
	/* データをキー入力するには関数scanfを使う */
	scanf("%d", &k ); /* 整数データをキー入力する */
	for( i = 1; i < 10; i++ )
		printf("%3d", k*i );
	printf("\n");
}
/* end of q14i.c */

九九の表を表示する


☆kの段を表示するループを、
 kの値を変えながら繰り返すには?
     
2重ループ→  
kの段の表示を
関数呼び出しに
 

8.2重ループで

/* 九九の表を表示する(2重ループ版) */
#include <stdio.h>

main()
{
	int	i, k;
	
	for( k = 1; k < 10; k++ ) /* k を 1 から 9 まで変化させる */
	{	/* k の段を表示するブロック */
		for( i = 1; i < 10; i++ )
			printf("%3d", k*i );
		printf("\n");
	}
}
/* end of q15.c */

9.kの段を表示するブロックを関数にして

/* 九九の表を表示する(失敗版) */
#include <stdio.h>

/* kの段を表示する関数の定義〜6.のq14.cのmain()と殆ど同じ〜 */
void	dan()
{
	int	i;
	/* ここに int k; と書いちゃ〜ダメダメ! */
	
	for( i = 1; i < 10; i++ )
		printf("%3d", k*i ); /* この k が未定義! */
	printf("\n");
}

main()
{
	int	k; /* 実は、この k が関数mainの中でのみ有効! */

	for( k = 1; k < 10; k++ )
		dan(); /* kの段を表示する関数の呼び出し */
}
/* end of q16e.c */

10.グローバル変数(global variable)を使ってkの値を渡す

/* 九九の表を表示する(グローバル変数版) */
#include <stdio.h>

	int	k; /* この k は大域的に有効! */

/* kの段を表示する関数の定義 */
void	dan()
{
	int	i;
	/* ここに int k; と書いちゃ〜ダメダメ! */

	for( i = 1; i < 10; i++ )
		printf("%3d", k*i );
	printf("\n");
}

main()
{
	/* ここに int k; と書いちゃ〜ダメダメ! */
	
	for( k = 1; k < 10; k++ )
		dan(); /* kの段を表示する関数の呼び出し */
}
/* end of q16.c */
/* 九九の表を表示する(グローバル変数版) */
#include <stdio.h>

	int	k; /* この k は大域的に有効! */

void	dan(); /* 関数danの宣言 */

main()
{
	/* ここに int k; と書いちゃ〜ダメダメ! */
	
	for( k = 1; k < 10; k++ )
		dan(); /* kの段を表示する関数の呼び出し */
}

/* kの段を表示する関数の定義 */
void	dan()
{
	int	i;
	/* ここに int k; と書いちゃ〜ダメダメ! */

	for( i = 1; i < 10; i++ )
		printf("%3d", k*i );
	printf("\n");
}
/* end of q16d.c */

11.引数を使ってkの値を渡す

/* 九九の表を表示する(引数渡し版) */
#include <stdio.h>

/* kの段を表示する関数の定義 */
void	dan( int k ) /* 仮引数、関数dan の中の k と 関数main の中の k は別物! */
{
	int	i;

	for( i = 1; i < 10; i++ )
		printf("%3d", k*i );
	printf("\n");
}

main()
{
	int	k;

	for( k = 1; k < 10; k++ )
		dan( k ); /* kの段を表示する関数の呼び出し */
		/* 変数 k の値が仮引数の k にコピーされる */
}
/* end of q17.c */
/* 九九の表を表示する(引数渡し版) */
#include <stdio.h>

void	dan( int n ); /* 関数danの宣言 */

main()
{
	int	k;

	for( k = 1; k < 10; k++ )
		dan( k ); /* nの段を表示する関数の呼び出し */
		/* 変数 k の値が仮引数の n にコピーされる */
}

/* nの段を表示する関数の定義 */
void	dan( int n )
{
	int	i;

	for( i = 1; i < 10; i++ )
		printf("%3d", n*i );
	printf("\n");
}
/* end of q17d.c */

今度は以下のような表にしてみよう!

インドの九九の表にしてみよう!

  日本の九九は 1×1 から 9×9 までですが、インドの九九は 19×19 までとか言われています。