清晰思路带你掌握如何运用循环打印各种图案(新手向)

本文介绍了如何使用C语言通过循环打印各种图案,包括直角三角形、对称图形(如菱形和沙漏)等。文章详细讲解了循环语句(do、while、for)的使用,强调了找寻规律和理解图案共性的关键,以及在多组输入情况下如何避免死循环。通过实例和代码,读者可以逐步掌握循环打印技巧。
摘要由CSDN通过智能技术生成

目录

  一、简单介绍三种循环语句及使用时的注意事项(已学会的可跳过)

1、do语句

2、while语句

3、for语句

4、补充说明

二、打印图案的共性发现

三、循环打印直角三角形

四、另类思路打印其他图案

五、上下对称图形(“K”,菱形,漏斗)

1、菱形

2、“K”型图案

3、沙漏

六、总结


  当我们进入循环语句的学习后,免不了遇见打印各种图案的题目。星号三角形,平行四边形,符号金字塔,沙漏......发现图案表面的规律并不困难,但其中隐藏的联系与如何用代码去实现,却会让很多不能灵活运用循环语句的同学难以下手。这周就请和笔者一起,以清晰的思路,由易到难,深入浅出地探究循环打印图案的奥秘。

  一、简单介绍三种循环语句及使用时的注意事项(已学会的可跳过)

  我们以一个“请分行打印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。

总之,二者虽可以替换,但存在不同,在我们能灵活运用之后,是可以轻松找到最优解的。

二、打印图案的共性发现

我们先来看一道不用循环写的简单题吧——打印一个小飞机。

https://www.nowcoder.com/practice/5cd9598f28f74521805d2069ce4a108a?tpId=107&&tqId=33287&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-rankinghttps://www.nowcoder.com/practice/5cd9598f28f74521805d2069ce4a108a?tpId=107&&tqId=33287&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-rankinghttps://www.nowcoder.com/practice/5cd9598f28f74521805d2069ce4a108a?tpId=107&&tqId=33287&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking(题目来自牛客网,绿色无毒,可放心点开)

对于这道题,相信只要是一个学过输出“hello world!”,知道换行符的新手,就能轻松打印。

#include<stdio.h>
int main()
{
    printf("     **\n");
    printf("     **\n");
    printf("************\n");
    printf("************\n");
    printf("    *  *\n");
    printf("    *  *\n");
    return 0;
}

一行一行输出,开头两行先按5次空格,再打两个星号,换行…………

也许你会疑问,这道题与循环打印有什么联系呢?(强行)问得好!(.doge)共性尽在其中,可以发现,打印是一行行打印,都是从空格开始,再符号(*),最后换行,结束一行的打印。包括中

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值