今天又看了下刚学C语言时的一些程序,其中有一个打印菱形的。
其目的是程序接收一个整型数字,比方说4,则打印出下面的图案:
虽然知道整体思路,但还是花了十几分钟才把代码写好。(可能是思路不明确,没有思考好流程步骤造成的)
所以总结了下:
1.实际上就是打印空白及“#”号
2.一行一行的打印
3.分成上半部分及下半部分
再者就是最重要的,每一行打印的空白及“#”号的个数是多少。
看图形后,不难发现:(以n=4为例)
第一行:从第5个开始打印"#",也就是说前面打印了4个空白
第二行:从第4个开始打印"#",也就是说前面打印了3个空白
第三行到第五行依次类推。
以上是上半部分。
从第六行:刚好与上半部分相反。
一直到第九行打印完毕。
上述过程可以定义两个变量i,j来实现对打印数量的控制。
代码如下:
#include void main( )
{
int i, j, n;
printf( "Input\nPlease input n: \n" );
scanf( "%d", &n );
printf( "Output:\n" );
for( i = 1; i <= n + 1; i++ )
{
for( j = 1; j <= n + 1 - i; j++ )
printf( " " );
for( j = 1; j <= 2 * i - 1; j++ )
printf( "#" );
printf( "\n" );
}
for( i = n; i > 0; i-- )
{
for( j = n - i; j >= 0; j-- )
printf( " " );
for( j = 2 * i - 2; j >= 0; j-- )
printf( "#" );
printf( "\n" );
}
}
接着逛贴吧时又看到了一个打印金字塔的帖子。
其实这种程序原理都是一样,就是利用变量控制打印空白及符号。
实现代码:
#include void main( )
{
int i, j, n = 4;
for( i = 1; i <= n; i++ )
{
for( j = 1; j <= 2 * ( n - i ); j++ )
printf( " " );
for( j = 1; j <= 2 * i - 1; j++ )
printf( "*" );
printf( "\n" );
}
}