目录
序言
相信很多人,刚开始学习C语言的时候总是会碰到各种各样的打印图形的题目,然后就会觉得很麻烦,或者说还不能够很好的编写程序以达到自己的需求。
所以在这篇博客中,我会详细的讲解,以便于各位理解
打印因素
在打印一个图形的时候,我们往往只需要确定四个要点
-
循环次数
-
行数
-
空格数
-
字符数
下面我会仔细地从这四个角度剖析例题,来进行讲解。
打印倒金字塔
程序地实现效果如下:
先从循环数开始入手,我们将循环数设置为变量a,a就是循环的次数。然后变量i为行数,且i的初始值为0,i是小于a的。将行数确定下来后,我们就需要考虑空格数和字符数了。
仔细分析这个图案的规律,我们不难得出空格数加字符数等于行数,那么这不就简单了吗?先打印空格,再打印字符,最后换行。所以用变量j来表示空格数,j<a-i就是为了保证字符数正常打印的条件。
好了,看下一题。
打印菱形
看到这个题目应该反应过来,跟上面一样的操作,确定行数,确定空格数,确定字符数,只是要拆分为上下两部分。
来看代码实现效果
还是先把num设置为可输入的变量,再将line1变量设置为菱形上半部分的行数,将j变量设置为空格数。注意此时的空格数、行数、字符数的关系为:空格数等于num-line1,而字符数等于行数。
所以对照着上半部分,可以得到下半部分的代码,在此就不多赘述。
打印K形图案
也是一样的分为上下两部分,看代码
还是四点,循环次数,行数,空格数,字符数。这里没有空格就不考虑了。
循环次数由自己输入;行数小于等于循环次数;字符数等于num,由于在这里l变量是小于等于num变量的,所以我在写m变量和j变量的时候就没有仔细的去抠细节。大家见谅。
所以整个的思路非常清晰。下面就放两道简单一点的题目
两道题目
第一道:打印反斜线,利用代码实现下图的效果。
答案
int main()
{
int num = 0;
while (scanf("%d", &num) != EOF)
{
//行数
int l = 0;
for (l = 0; l < num; l++)
{
for (int i = 0; i <= l - 1; i++)
{
printf(" ");
}
printf("* ");
printf("\n");
}
}
return 0;
}
第二道:打印空心三角形,利用代码实现这种效果
答案
int main()
{
int n = 0;
while (scanf("%d", &n) != EOF)
{
int i = 0;
for (i = 1; i <= n; i++)
{
int j = 0;
for (j = 1; j <= n; j++)
{
if ((i == j) || (j == 1) || (i == n))
{
printf("* ");
}
else
{
printf(" ");
}
}
printf("\n");
}
}
return 0;
}
总结
-
一定要把握住行数,空格数,字符数三者之间的关系和规律
-
一定要确定行数和循环次数的关系
-
祝大家能够学会这类编程题目的写法和思路