今天脑袋一热,重学C语言,以前基础不牢固,现在重新学
首先分析:
可以看成是这个图形的后期处理,现在要来完成这个图形的输出。
分析:1.图形可以分解成两部分,前4行一部分,后三行一部分。
2.第一部分以奇数递增形式出现,1,3,5,7,第二部分递减形式,5,3,1.
现在至少需要两个变量,才能完成这个图形的输出,
i | j |
0 | 1 |
1 | 3 |
2 | 5 |
3 | 7 |
for(i=0;i<=3;i++)
再看i和j的关系,j=2*i+1
再来个for循环
for(j=1;j<=2*i+1;j++)
程序如下:
#include<stdio.h>
void main(){
int i,j,k;
for(i=0;i<=3;i++){
for(j=1;j<=2*i+1;j++)
printf("*");
} getchar();
}
运行结果
因为忘记加换行,所以是一条直线
再加一条
printf("\n");
结果输出
然后输出下面图形
程序
for(i=0;i<=2;i++) {
for(j=0;j<=4-2*i;j++)
printf("*");
printf("\n");
}
图形如下
接下来就是考虑怎么放在中间的问题了
上面图形空格分别是2,1,0
程序就要循环输出,因为k的值和i的值有关,所以
for(k=0;k<=2-i;k++)
printf(" ");
下面图形中空格数量增加同样和i有关,所以
for(k=0;k<=i;k++)
printf(" ");
综合起来,程序如下:
#include<stdio.h>
void main(){
int i,j,k;
for(i=0;i<=3;i++){
for(k=0;k<=2-i;k++)
printf(" ");
for(j=1;j<=2*i+1;j++)
printf("*");
printf("\n");
}
for(i=0;i<=2;i++) {
for(k=0;k<=i;k++)
printf(" ");
for(j=0;j<=4-2*i;j++)
printf("*");
printf("\n");
}
getchar();
}
输出结果