C语言的for循环

文章目录

1.for循环的使用方法

2.循环的终止及'继续’

3.for循环的经典代码


大家伙,我是纪宁

这篇文章介绍的是C语言的for循环

          强大,不动如山的强大,不会输给自己的真正的强大。——清濑灰二

1.for循环的使用方法

for循环的语法格式:for(  初始化 ;判断   ;调整  )

step1:初始化  进行变量的初始化。在for循环的第一个分号前面,对变量赋初值

step2:  判断   判断是否符合循环执行的条件

step3:  执行   执行循环体里的语句

step4:  调整   对变量的值进行调整

  如果判断部分省略了,就表示判断部分恒为真

建议:一般不要轻易省略判断部分,防止出现死循环;不要轻易在for循环里修改循环变量;建议使用"前闭后开"区间来控制循环变量,可以直接看出来循环次数。例如下面的代码

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

	}

可以轻易地看出循环次数等于(10-0)=10次,比较方便

2.for循环中continue和break的使用规则

break在循环里面使用后直接可以跳出当前循环

continue在for循环里使用,可以直接跳过continue后面的代码,直接跳到调整部分,进行下一次循环

3.for循环的经典代码

(1)计算 1!+2!+3!+4!+......

  这个题目的思路是设计出计算一个数阶乘的算法,在用循控制多个每次递增一的数执行前面的算法,最后再相加求和即可

#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int i = 0, j = 0;
	int ret = 1;//用于记录每次算出的阶乘值
	int sum = 0;
	for (i = 1; i <= n; i++)//阶乘应该从 1 开始算,并且控制要计算的阶乘和的个数
	{
		ret = 1;
		for (j = 1; j <= i; j++)
		{
			ret *= j;
		}
		sum += ret;
	}
	printf("%d", sum);
	return 0;
}

  这段代码符合大部分人的设想,但是每次都要将阶乘重新计算,稍微有点麻烦。也许还有更简单的方法,有改进的空间,看下面这个代码的思想

#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int i = 0;
	int ret = 1;//用于记录每次算出的阶乘值
	int sum = 0;
	for (i = 1; i <= n; i++)//阶乘应该从 1 开始算,并且控制要计算的阶乘和的个数
	{
		ret *= i;//依次计算 1  2  3.......的阶乘
		sum += ret;//每计算出一个阶乘都能直接加起来,不浪费
	}
	printf("%d", sum);
	return 0;
}

每次计算出的阶乘值都不浪费,直接加起来,效率快了很多 

(2)编写代码,演示多个字符从两端移动,向中间汇聚

这个代码看起来是比较科幻的一个代码,能让写代码的程序员感受到程序的美

比如我是C罗粉丝,我想看到C罗的英文名从中间向两边移动,可以写出如下代码

int main()
{
	char str1[] = "Cristiano Ronaldo";
	char str2[] = "*****************";//刚开始用户看到的画面
	//如果要实现从两边向中间移动,就需要将str1中的字符一个个替换str2中的字符,就要使用到for循环
	int i = 0;
	int sz = strlen(str2) - 1;
	printf("%s\n", str1);
	for (i = 0; i <= sz / 2; i++)
	{
		str2[i] = str1[i];
		str2[sz - i] = str1[sz - i];
		printf("%s\n", str2);
	}
	return 0; 
}

输出效果

   效果是这样的,虽然演示出了从两边向中间,但是没有感受到‘动态的感觉’,我们可以使用库函数Sleep 函数和系统命令system函数一起作用来控制这个输出

  Sleep函数可以让程序休眠一会(以毫秒为单位)Sleep(1000);表示程序休息一秒钟,由此实现出“停顿的感觉”

  而system函数是执行系统命令。system(''cls'');表示清空屏幕上的内容两个结合起来可以达到‘动态的效果’

代码如下

#include<windows.h>
int main()
{
	char str1[] = "Cristiano Ronaldo";
	char str2[] = "*****************";//刚开始用户看到的画面
	//如果要实现从两边向中间移动,就需要将str1中的字符一个个替换str2中的字符,就要使用到for循环
	int i = 0;
	int sz = strlen(str2) - 1;
	for (i = 0; i <= sz / 2; i++)
	{
		str2[i] = str1[i];
		str2[sz - i] = str1[sz - i];
		printf("%s\n", str2);
		Sleep(1000);
		system("cls");
	}
	printf("%s\n",str1);
	return 0;
}

动态的效果不好在这里示范,大家可以自己复制代码,将C罗改成自己想要的任何字符进行测试。每次走心的学习,都能让我们获得成长,成长虽然渺小,但是积累起来的效果就很大了,加油!

 博主写了好长时间,如果你能给博主一个免费三连鼓励一下博主的话,那么你真是 泰裤辣

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值