循环语句
for语句
for(表达式1;表达式2;表达式3)
{循环体}
表达式1:初始条件赋值
表达式2:条件判断
表达式3:变量改变
首先for语句,可以没有任何表达式,也就是说语法支持for(;;){循环体}。但这种情况一般比较少见,最为常见的便是三个表达式都具备。
for语句执行逻辑,是先从表达式1开始赋值,然后进行表达式2的逻辑判断,如果成立就开始执行,如果不成立就跳出循环。成立之后,执行循环体,然后到表达式3运算,再继续跟表达式2进行逻辑判断,如果成立就执行,不成立就跳出,循环往复。
具体执行逻辑演示图如下:
既然说了那么多,for语句到底适合用在什么情况呢?
可以看到for语句条件很多,这也侧面说明for语句适合用在那些初始条件清楚、终止条件清楚的情况,换句话来说就是你清楚知道要执行多少次,比如下述例子,打印99乘法表。
#include<stdio.h>
int main() {
int i = 0;
int j = 0;
for (i = 1; i < 10; i++) {
for (j = 1; j <= i; j++) {
printf("%d*%d=%d\t", j,j,(j * j));
}
printf("\n");
}
return 0;
}//99乘法表
上述例子,你清楚知道自己要循环多少次,什么时候开始、结束。而且非常适合用在嵌套循环。
do while()语句
该语句也是循环语句的一种,执行逻辑是,一开始便循环一次,然后进行条件判断,成立就继续循环,不成立就跳出循环。
void game() {
// int ret = 0;
// int a = 0;
// ret = rand()%100+1;
// scanf("%d", &a);
// while (1) {
// if (a > ret)
// {
// printf("猜大了\n");
// scanf("%d", &a);
// }
// if (a < ret)
// {
// printf("猜小了\n");
// scanf("%d", &a);
// }
// if (a == ret) {
// printf("恭喜你,猜对了\n");
// break;
// }
// }
//
//
//}
//
//int main(){
// srand((unsigned int)time(NULL));
// int input = 0;
// do
// {
// menu();
// scanf("%d", &input);
// switch (input) {
// case 1:
// printf("请猜数字:\n");
// game();
// break;
// case 0:
// break;
// default:
// printf("输错了!!\n");
// break;
// }
//
//
// } while (input);
//
// return 0;
上诉,猜数字游戏,首先不管循环成立与否,先进行一次菜单打印。通常来说do while语句跟while语句适用条件都是一样的,都是适合那种不知道循环次数,但是知道循环终止条件。
借助上述例子,在讲述switch分支语句
switch(常量表达式)
{
case 1 :…;
case 2 :…;
default :…;
}
分支语句用在选择较多的情况,避免了使用if 、else if 的冗杂,清晰明了。而且现在追求的代码风格就是清晰第一、效率第二!
if
else 语句
顾名思义,如果… 其他…,if语句常用在循环体中的某些条件控制,亦如上述猜数字游戏,用if划分了3中情况,大于、小于、等于。
最后,各种语句唯有多加练习,在运用中不断感悟配合的妙处,方能熟练自如,希望大家都能有所收获。
辛苦各位的阅读!