本人0基础开始学编程,我能学会的,你也一定可以,学会多少写多少。
下载安装请从官网入手,社区版本即可,这里主要使用的软件是VS2019,图标如下。
上一篇:从0开始学c语言-12-循环执行语句(1)while语句、getchar、putchar、缓冲区_阿秋的阿秋不是阿秋的博客-CSDN博客
控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成, C 语 言有九种控制语句,可以分为以下三类:
1. 条件判断语句也叫分支语句: if 语句、 switch 语句;
2. 循环执行语句: do while 语句、 while 语句、 for 语句;
3. 转向语句: break 语句、 goto 语句、 continue 语句、 return 语句。
目录
for语句
上一篇我们学了while语句
int main()
{
int a = 0; //初始化
while (a <= 10) //判断部分
{
printf("%d ", a);
a++; //调整部分
}
return 0;
}
可以看到这段代码中有三个部分,分别为初始化部分、判断部分、调整部分。
为了方便寻找循环重要的三个部分,就出现了for语句。
语法结构
for(表达式1;表达式2;表达式3)
循环语句;
表达式1、2、3分别对应
初始化部分:初始化循环变量
判断部分:判断循环是否终止
调整部分:循环条件的调整方式
执行流程
代码展示
int main()
{
int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
for (i = 1; i <= 10; i++)
{
printf("%d ", i); //调试看过程
}
return 0;
}
按照上面的流程,想一下如果for那行加了分号,输出结果会是?
结果会是11。
加了分号后相当于没有循环语句,只是单纯在执行循环三部分,然后跳出循环。
比较continue区别
int main()
{
int a = 0;
while (a <= 10)
{
if (a == 5)
continue; //continue跳过本次循环它之后的语句
//来到while语句的表达式部分,判断是否进行下一次循环
printf("%d\n", a);
a++;
}
return 0;
}
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue; //和while中的死循环不一样,回到判断部分
/*if (i == 5)
break;*/
printf("%d ", i);
}
return 0;
}
第一段代码会陷入死循环。
而第二段代码的打印结果是1 2 3 4 6 7 8 9 10,跳过了5。
为什么第二段代码就不会陷入死循环呢?
因为for语句跳出循环的调整部分不会受到continue位置的影响,while语句的continue如果在调整部分之前,循环会无法跳出导致死循环。
如果不懂,就去调试看看过程。
但是while语句和for语句的break倒是没有什么区别的,都是直接跳出循环了。
书写建议
1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。
2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
第一种的后果
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
i = 7; //死循环
}
return 0;
}
同样的i,每次循环语句部分都会把i赋值为7,永远跳不出循环。
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
i++; //改变打印结果
}
return 0;
}
上面这段代码会改变我们打印1-10数字的结果,改写成这样就可以了。
int main()
{
int i = 0;
for (i = 1; i <= 10;) //这两个分号不能丢
{
printf("%d ", i);
i++; //调整部分放这里
}
return 0;
}
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
int j = 0;
for (j = 1; j <= 10; i++) //i++会死循环
{
printf("阿秋");
}
}
return 0;
}
以上都是循环体内改变循环变量的后果,建议大家保持好的书写习惯。
第二种
int main()
{
int aqiu[10] = { 0 };
int i = 0;
for (i = 0; i < 10;i++) //这是左闭右开,建议这么写,代表循环10次
//写成i<=9也可以
{
printf("%d ", aqiu[i]);
}
return 0;
}
我觉得第二种按照自己习惯来就行,别改来改去自己晕了。
省略书写的艺术
int main()
{
//三个部分都可以省略
//判断部分的省略,判断部分会恒为真
for (; ; )
{
printf("aqiu ");
}
return 0;
}
但是在不熟悉的情况下还是别随便省略了,你看这是正常的。
int main()
{
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("我爱秋天\n"); //会打印9次
}
}
return 0;
}
省略后……就意思不一样了。
int main()
{
int i = 0;
int j = 0;
for (; i < 3; i++)
{
for (; j < 3; j++) //第一次大循环的时候j=3停止,
//第二次大循环j还是等于3,就没办法继续执行小循环
//省略初始化的后果
{
printf("我爱秋天\n"); //只会打印3次
}
}
return 0;
}
使用两个变量控制循环
int main()
{
int x, y;
for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
{
printf("hehe\n");
}
return 0;
}
练习
//请问循环要循环多少次?
#include <stdio.h>
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++)
k++;
return 0;
}
答案
注意判断部分的k=0这是赋值而不是等于,那么就是说判断部分为假,不会循环。
总结
一、for语句的三个表达式
初始化部分:初始化循环变量
判断部分:判断循环是否终止
调整部分:循环条件的调整方式
二、break和continue
for语句跳出循环的调整部分不会受到continue位置的影响,while语句的continue如果在调整部分之前,循环会无法跳出导致死循环。
但是while语句和for语句的break倒是没有什么区别的,都是直接跳出循环了。
三、书写建议
1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。
2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。3.别随意省略。
下一篇:从0开始学c语言-12-循环执行语句(3)do……while()语句+练习_阿秋的阿秋不是阿秋的博客-CSDN博客