关于一个循环升级到四个循环的那些事(使用四个循环做出一个圣诞树)


前言:
大家好我是内向今天我为大家带来了一个自己的扩展使用for循环实现一个圣诞树今天也是为了让大家对嵌套更加的熟悉循环套循环再套循环再套循环我们可以称之为话里有话哈哈哈哈。
首先我们先来看for循环。

for的基础使用方法。

首先for是一个循环while也是循环我们都知道两个格式不一样,那么我们这里主要是要用for循环去实现圣诞树的输出。
疑问一:为什么我们不使用while来输出呢。
解答:因为使用for效率更高而且更加简洁直观。
疑问二:什么是循环?
解答:循环顾名思义就是一直重复一件事条件正确就重复不正确就不重复有的甚至还会陷入死循环
我们来看一下例子:

  int i=10;
  for(i=0;i<9;i++) ;

我们从上方代码可以看出10是大于9的所以无法执行
只有当条件成立时候才可以进行循环。
接下来我们先来看一个基础的for循环代码。
例:

#include<stdio.h>
int main(){
	int i,sum=0;
	for(i=0;i<=100;i++)
	{
		sum=sum+i;
	}
	printf("%d",sum);
	return 0;
}

一直加到100结果就是5050.
在这里插入图片描述

使用两个循环实现九九乘法表

我们从上文知道了一个循环就可以进行简单的加减乘除运算,
那么我们如果实现两个循环的话效果又是如何的呢。
以下就是最为经典的九九乘法表
采用外循环与内循环的组成。

内向的小知识:
提个知识点:
1.如果你超过了两个循环我们一般称之为多循环。
2.具体的分类也还是外循环内循环的组成。
3.但是唯一不同的是内循环会是无限个但是外循环只能是一个。

#include<stdio.h>
int main(){
	int i,j;
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=i;j++)
		printf("%d*%d=%d\t",j,i,j*i);
	    printf("\n");
	}
	return 0;
}

疑问一: \t是什么。
解答:\t是一个tab符号占四个字节也就是要空格四个。
疑问二:为什么里面的循环不写括号。
解答:因为你写括号与不写括号输出结果是不一样的。格式会发生一个小变化。本来是循环一次就整体换行一次但是如果我们第二个循环还加了一个括号而且换行还在内循环里面那么我们的外循环i就无法读取到换行。最终读取到换行的只有内循环那么整体肯定无法输出我们想要的效果撒。

现在我们已经知道了两个循环的基础效果那么我们现在升级一下使用三个循环

三个循环实现输出三角形

升级三个for循环写一个三角形。
我们直接看代码。
例:

#include<stdio.h>
int main() {
	int i,j,z;
	for(i=1; i<=6; i++) { //行
		for(j=1; j<=6-i; j++) { //列
			printf(" ");
		}
		for(z=1; z<=2*i-1; z++) {
			printf("*");
		}
		printf("\n");

	}
	return 0;
}

代码运行如下:
在这里插入图片描述
各位读者如果无法理解这个三角形如何输出的请移步此链接关于三角形如何输出的细致教学
内向在这里也就不多赘述了直接进入下一个环节

四个循环输出圣诞树的细致教学。

因为我们知道了三个循环也知道了两个循环那么如果是四个循环呢我们又能做一些什么呢。
我们回到了本篇文章的中心如何输出圣诞树我们此刻就要使用四个循环去实现。
具体请看下方代码。

#include<stdio.h>
int main() {
	int i,j,z,t,n,a;
	printf("请你输入你想要打印的圣诞树层数:");
	scanf("%d",&n);
	for(i=1; i<=n; i++) {
		for(j=1; j<=i+1; j++) {
			for(z=1; z<=n+1-j; z++) {
				printf(" ");
			}
			for(t=1; t<=2*j-1; t++) {
				printf("*");
			}
			printf("\n");
		}
	}
	for(a=1; a<=n+1; a++) {
		if(a==n+1) {
			printf("|");
		}
		printf(" ");
	}
	printf("\n");
	return 0;
}

代码运行如下:

在这里插入图片描述

关于程序解答的疑惑加解决

此刻我们通过上方的扩展基础已经完美的了解了for的运行规则。
我此刻也相信喜欢学习的小伙伴们一定有好多疑惑
为什么 j<=i+1。
为什么z<=n+1-j。
为什么t<=2*j-1。
为什么for(a=1; a<=n+1; a++)。
那么由我来一 一解答。
解答如下:

树枝部分解答:

第一我们要做的是分类。
树是分为什么的?
树分为,树枝和树干。
我们先来解答关于树枝的疑惑。
首先我们先假设输入一个圣诞树的树枝也就是n=1。
j<=i+1主要作用是方便下方的代码输出数据的调用,同时也是兼具输出空格的任务。
此刻 j=2。
我们代入:
z<=n+1-j也就是1+1-2=0。
这时我们开始打印空格1个
可能你会疑问为什么明明是0却还要输出一个空格。
那么我会告诉你0也是会占一个字符的所以还是会输出一个空格。
上方的三个循环都是为了为下方的输出做铺垫。
我们晓得语文撒承上启下同样也是这个道理。
接下来到了输出树枝的代码。
t<=2j-1。
我们还是代入我们发现因为我们只要一个树枝所以我们相应的也只循环一遍。
t=2
2-1。
此刻就是我们想要输出的三个数据。。
最后一步要想完成我们的效果必须循环一次则换行一次。
因为不换行的话全都在一个直线上我们不能直观上的看出效果所以我们必须选择换行。
换行分为整体换行与部分换行。
我们在上方的代码中讲过了换行的一些细节故内向我也就不在这里一 一赘述了。
到目前为止树枝部分已经完成了。
以下是关于树干的解析。

大家是不是也发现了树干总是输出在中间位置无论如何都不会偏。
那么如何实现呢?
我们仅仅需要加一个条件语句
我相信细心的读者们已经发现了空格与输出的数据顺序与上方不一样。
又是一个小知识点让内向来解答:

这里的逻辑就不相同了如果我们按照上方的逻辑先打印空格再输出来打印树干那么就会出现无法居中的情况。

在这里插入图片描述

树干部分解答

具体逻辑就是:

条件语句先打印如果没有到指定的位置就开始打印空格
因为我们这里的空格是没有做出任何的限制的,完全就是一个普通的条件对了就执行不对我就直到它对了我就执行。
若是本身条件就是假的那么是不会输出的
只有条件为真就会输出。

内向的小思路

内向的小思路我们可以通过加一些颜色以及一些清屏作用具体如何操作请看内向的这篇文章讲的很细的希望大家喜欢各位读者可以点击细致教学
好了今天带来的内容各位学者可还喜欢若是觉得内向的内容对您有用那么还是希望您留下一个赞点一个关注这也是内向更新的动力。
拜拜! 咱们下期再见。
请添加图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值