目录
一、简单介绍三种循环语句及使用时的注意事项(已学会的可跳过)
当我们进入循环语句的学习后,免不了遇见打印各种图案的题目。星号三角形,平行四边形,符号金字塔,沙漏......发现图案表面的规律并不困难,但其中隐藏的联系与如何用代码去实现,却会让很多不能灵活运用循环语句的同学难以下手。这周就请和笔者一起,以清晰的思路,由易到难,深入浅出地探究循环打印图案的奥秘。
一、简单介绍三种循环语句及使用时的注意事项(已学会的可跳过)
我们以一个“请分行打印5次‘1024快乐!祝你永不脱发!’”的任务来引出它们。
1、do语句
#include<stdio.h>
int main()
{
int count = 0;
do
{
printf("1024快乐!祝你永不脱发!\n");
count++; //设了一个从0开始,每循环一次加1的计数器。
} while (count != 5); //do语句里也是包含一个while语句作为循环判断条件的。
return 0;
}
do语句的特点是“先试试再看”,即先执行再判断,所以无论满不满足while中的条件,它都至少执行一次。另外,注意while()后要跟一个分号“;”,有些同学学完while语句之后容易与此混淆。
2、while语句
#include<stdio.h>
int main()
{
int count = 0;
while (count != 5)
{
printf("1024快乐!祝你永不脱发\n");
count++;
}
return 0;
}
while语句的特点是“先看再试试”,即先判断再执行,如果不满足()里的条件,语句是不执行的。且()后面是不接分号“;”的(其实写判断条件的括号后面,似乎只有do语句里的while()后接分号,其他都不接)
3、for语句
#include<stdio.h>
int main()
{
for (int i = 0; i < 5; i++)//或者for(i=1;i<=5;i++)也行
{
printf("1024快乐!祝你永不脱发!\n");
}
return 0;
}
for语句是今天的主角,我们待会打印图案最常用到的就是它。我们需要注意一下它的执行顺序。
先执行一次①,对②进行判断是否满足,如果满足,则执行③并最后执行④,一轮循环完成,①不再执行重新判断②,再③④③④③④......
4、补充说明
对比while和for语句,我们会发现二者都是先判断再执行,即两者其实是可以互换的,能用for写的程序就一定能用while写,反之亦然。但就像选择分支结构里的if语句和swtich语句一样,不同的情况选择性的使用,是能够让你的程序更加简洁易懂的。
用循环打印图案,我们不可避免的需要用到多重循环,且清楚循环次数,那时用for循环写出的程序,可读性将明显更高。(具体我们后面再说,此处按下不表)但当我们不清楚一个程序到底需要循环几次,只知道不满足某种条件才会停止时,用for写就要用到“if&break”来跳出循环。而循环次数小时,while语句的优势又体现出来,不满足(……)便不执行,免去了再写break。
总之,二者虽可以替换,但存在不同,在我们能灵活运用之后,是可以轻松找到最优解的。
二、打印图案的共性发现
我们先来看一道不用循环写的简单题吧——打印一个小飞机。
对于这道题,相信只要是一个学过输出“hello world!”,知道换行符的新手,就能轻松打印。
#include<stdio.h>
int main()
{
printf(" **\n");
printf(" **\n");
printf("************\n");
printf("************\n");
printf(" * *\n");
printf(" * *\n");
return 0;
}
一行一行输出,开头两行先按5次空格,再打两个星号,换行…………
也许你会疑问,这道题与循环打印有什么联系呢?(强行)问得好!(.doge)共性尽在其中,可以发现,打印是一行行打印,都是从空格开始,再符号(*),最后换行,结束一行的打印。包括中