様々な実現 〜道は沢山有る〜(続き)

  チャレンジするのは、配列とポインタを学んでからでも良い!

アステリスク「*」を斜めに10個表示してみよう

1.まずはオーソドックスに


/* アステリスク「*」を斜めに10個表示する */
#include <stdio.h>

main()
{
	printf("*\n");
	printf(" *\n");
	printf("  *\n");
	printf("   *\n");
	printf("    *\n");
	printf("     *\n");
	printf("      *\n");
	printf("       *\n");
	printf("        *\n");
	printf("         *\n");
}
/* end of ways31.c */

2.書式文字列を使って工夫する


/* アステリスク「*」を斜めに10個表示する:書式文字列版 */
#include <stdio.h>

main()
{
	int	i;

	for( i = 0; i < 10; i++ )
		printf("%*c\n", i+1, '*' );
}
/* end of ways32.c */

3.文字の2次元配列でメッセージを保持する


/* アステリスク「*」を斜めに10個表示する:メッセージ2次元配列版 */
#include <stdio.h>

	char	msgs[][12] ={
				"*\n",
				" *\n",
				"  *\n",
				"   *\n",
				"    *\n",
				"     *\n",
				"      *\n",
				"       *\n",
				"        *\n",
				"         *\n"
			};

main()
{
	int	i;

	for( i = 0; i < 10; i++ )
		printf( msgs[i] );
		/* printf("%s", msgs[i] ); でも良い */
}
/* end of ways33.c */

4.ポインタの配列でメッセージを保持する


/* アステリスク「*」を斜めに10個表示する:メッセージポインタ配列版 */
#include <stdio.h>

	char	*msgs[] ={
				"*\n",
				" *\n",
				"  *\n",
				"   *\n",
				"    *\n",
				"     *\n",
				"      *\n",
				"       *\n",
				"        *\n",
				"         *\n"
			};

main()
{
	int	i;

	for( i = 0; i < 10; i++ )
		printf( msgs[i] );
		/* printf("%s", msgs[i] ); でも良い */
}
/* end of ways34.c */

今度は左下がりに10個表示してみよう

  1. 上の1(オーソドックス版)の printf を並べ替える版(ways41.c
  2. 上の2(書式文字列版)の書式文字列版の printf を改造する版(ways42.c
  3. 上の4(メッセージポインタ配列版)の msgs を変更する版(ways43.c
  4. 上の4(メッセージポインタ配列版)の msgs を変更しない版(ways44.c