文章目录
大家伙,我是纪宁
这篇文章介绍的是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罗改成自己想要的任何字符进行测试。每次走心的学习,都能让我们获得成长,成长虽然渺小,但是积累起来的效果就很大了,加油!
博主写了好长时间,如果你能给博主一个免费三连鼓励一下博主的话,那么你真是 泰裤辣