前言
经过一学期的学习,C语言算是入门了。这个寒假准备花点时间把主要知识点和题目理一下。本篇文章主要讲解如何用C语言实现星形图里的菱形的打印。
一、何为星形图
顾名思义,即用 * 与空格所组成的各种图形,解题的主要突破口是“找规律”,即找到行与列的关系;第二个关键点就是学会用循环打空格,使得图形美观。
二、经典题型
1.七层菱形图
本题要求打印一个层数为7的菱形图,第一行1列,第二行3列,第三行5列,第四行7列,第五行5列,第六行3列,第七行1列。我的思路是分为两半来打印:先打1,2,3,4层的图形,再接着打5,6,7层。分别用两层循环i,j控制行与列。k的循环控制与调整打出空格的多少,使图形美观。
#include"stdio.h"
int main()
{
int i,j,k;
for(i=0;i<4;i++)//上半层打印
{
for(k=0;k<17-i;k++)//k控制打空格 ,先循环递减打空格
printf(" ");//每次循环打出两个空格
for(j=0;j<2*i+1;j++)//观察发现,每一行的列数是2*i+1
printf("* ");//每次打出一个*和一个空格
printf("\n");//内循环结束,即每行打印结束换行
}
for(i=2;i>=0;i--)//下半层打印
{
for(k=0;k<17-i;k++)//逐级递增打空格
printf(" ");
for(j=0;j<2*i+1;j++)
printf("* ");
printf("\n");
}
printf("图形打印完毕!\n");
return 0;
}
![调试结果](https://img-blog.csdnimg.cn/20210118125336143.png)
2.打印n层菱形图
解题思路同上,根据上例打印7层菱形这一特例,从中发现一般规律,总结层数为n的代码更具一般性。体现了由特殊到一般的思想。
#include"stdio.h"
int main()
{
int i,j,k,n;
printf("请输入所要打印菱形的层数:\n");
scanf("%d",&n);
for(i=0;i<(n+1)/2;i++)
{
for(k=0;k<17-i;k++)
printf(" ");
for(j=0;j<2*i+1;j++)
printf("* ");
printf("\n");
}
for(i=(n-1)/2-1;i>=0;i--)
{
for(k=0;k<17-i;k++)
printf(" ");
for(j=0;j<2*i+1;j++)
printf("* ");
printf("\n");
}
printf("图形打印完毕!\n");
return 0;
}
![调试结果](https://img-blog.csdnimg.cn/20210118123930936.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzUyNDg3MDY2,size_16,color_FFFFFF,t_70#pic_center)
# 总结
打印星形图这类题型。主要考察是否熟练使用循环的嵌套,而不是自作聪明的用一连串的printf。
本篇文章从菱形为例出发,从特殊到一般。其它各种图形(只要不是特别复杂的)万变不离其宗。
解题技巧主要是:观察图形规律,找到行与列的关系,控制内层循环的打印,以及空格的打印也是很重要的。
因为它决定了你所打印出来的图形是否美观好看而不紧凑。
( 以上就是对打印菱形图的详解,大佬可以路过。希望给小白带来帮助。
第一次写博客,后续更新。
求关注,并留下你的赞哈。)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/93519.html