请用控制台程序绘制如下图案。
打印30行
一般打印结果
分析
这个图形共31行,可以分成两个部分。上半部分是一个16行的正三角形,下半部分是一个15行的倒三角形。三角形的绘制方法我们上一篇已经讲过了,很容易,我们可以写出下面这段代码。
int main()
{
int i, j;
int n; // 正三角形
for (i = 0; i < 16; i++)
{
for (j = 0; j < 15 - i; j++)
printf(" ");
for (j = 0; j < 2 * i + 1; j++)
printf("*");
printf("\n");
} // 倒三角形
for (i = 0; i < 15; i++)
{
for (j = 0; j < i + 1; j++)
printf(" ");
for (j = 0; j < 2 * (15 - i) - 1; j++)
printf("*");
printf("\n");
}
return 0;
}
自己执行一下这段代码,功能倒是实现了,但是两部分用两组for循环实在有些累赘。把这段代码进行优化,得到最终结果。
答案
#define LINE 31int main(){ int i, j; int n; for (i = 0; i < LINE; i++)
{ if (i <= LINE / 2)
n = i; else
n = LINE - i - 1; for (j = 0; j < (LINE / 2 - n); j++) printf(" "); for (j = 0; j < 2 * n + 1; j++) printf("*"); printf("\n");
} return 0;
}
请大家仔细研读这段代码,有问题欢迎探讨。
如有能力可尝试打印以下结果
背景白色&字体蓝色&心形
大体与上面相同只需用system函数控制窗体背景色与字体颜色即可
至于输出形状可根据自己喜好打印
代码如下
#include
#include
int main (){
int i,j,k,n;
scanf("%d",&n);
for(i=0;i
for(j=0;j
printf(" ");
}
for(k=0;k
printf("\3");
}
printf("\n");
}
for(i=n-1;i>0;i--){
for(j=n-i+1;j>0;j--){
printf(" ");
}
for(k=i*2-1;k>0;k--){
printf("\3");
}
printf("\n");
}
system("color f9");
return 0;
}
有兴趣的还可尝试以下代码
#include
#include
int main (){
int i,j,k,n;
scanf("%d",&n);
for(i=0;i
for(j=0;j
printf(" ");
}
for(k=0;k
printf("\3");
}
printf("\n");
}
for(i=n-1;i>0;i--){
for(j=n-i+1;j>0;j--){
printf(" ");
}
for(k=i*2-1;k>0;k--){
printf("\3");
}
printf("\n");
}
while(1){
system("color45");system("color
b4");system("color a6");system("color
b1");system("color f1");system("color
94");system("color 38");system("color
e5");system("color 2c);system("color
d7");system("color 87");system("color
76");system("color
f9");
}
return 0;
}