这次高手病挑战的是一个简单得离谱的图形~难道是去不挑战高难度吗~这个先保留意见~其实~发这博客的目的是想学习一下编程思想~不知有多少人留意到~在打印图形2里面就用到了一种数学方法~叠加取代法(虽然九九不知道是不是有这种方法~但是感觉这样容易理解)~
下面就讲讲如何应用叠加取代法吧~
当N=5时~
打印
*
**
***
****
*****
感觉图形不是很对齐~但能看出大致框架结构就行了~
这个可以理解为一个矩形减去
****
***
**
*
就行了~
所以思路就是在打印矩形的基础上再打印一个倒三角(如上图)~
打印两者字符可以合并在一个输出函数中~当两者都满足条件时打印
' '就行了~当然~还要考虑换行符~
具体代码如下~
#include<stdio.h>
#define N 5
int main()
{
int i=0;
int k=N+1;
for (i=0;i<k*(k-1);i++)
{
int a=i/k+1;
int b=k-a-2;
putchar(" *\n"[(i%k==k-1)+(i%k>b)]);
}
return 0;
}
后记~发帖当天19:14更~哎呀呀~想不到一个大大的疏忽啊~原程序有一个无关变量除了有个赋值表达式外~输出根本没有用到~我也在原贴修改一下算了~有种无语的感觉~