这篇文章介绍了某不知名初学者对流程控制的一些理解,大家可以拿来参考,欢迎大家在评论区留下自己的理解!
流程控制是程序代码执行的顺序,三大流程控制分别为顺序、选择以及循环。
顺序结构
顺序结构也即从上到下执行每条语句的结构,每个程序的代码在整体上都是这样执行的。
选择结构:if与switch
1.if语句
在我的理解中,if语句即:
1.如果满足了xxx就xxxx。
if(表达式)
{
语句;
}
2.如果满足了xxx就xxxx,否则xxxxx。
if(表达式1)
{
语句1;
}
else if(表达式2)
{
语句2;
}
3.如果满足了xxx就xxxx,(否则)如果xxx就xxxxx,(否则)如果xxx就xxxxx,(否则)如果xxx就xxxxx。
if(表达式1)
{
语句1;
}
else if(表达式2)
{
语句2;
}
else if(表达式3)
{
语句3;
}
...
else if(表达式n)
{
语句n;
}
需要区分的是多条if语句与if语句的多分支。
前者,多条if语句,将进行多次判断,如果多个if语句都被满足那么对应的语句都将执行,即可能执行多个语句。
后者,if语句的多分支,也可能进行多次判断,但当前一个判断满足,后面的判断将不被执行,即只执行一个语句。
浅浅地举一个小例子:
#include <stdio.h>
int main()
{
int a = 0;
int b = 1;
printf("a=%d,b=%d\n", a, b);
//if条件判断语句
//如果a>b a与b交换,否则a+1
if (a > b)
{
int temp = 0;
temp = a;
a = b;
b = temp;
}
else
{
a++;
}
printf("a=%d,b=%d\n", a, b);
return 0;
}
2.switch语句
我觉得比起if语句,switch在语法上更容易看出它是一个分支语句,即根据程序产生或输入的某个值来执行语句。
需要注意的是:
1.switch语句判断的必须是整型表达式,我认为即表达式的结果必须为一个整型常量,也只有这样才方便进行分支判断。
2.switch语句需要利用break语句才能实现分支。实际情况是,如果不使用break语句打断,那么所有的分支将依次执行。
3.如果表达值与所有case标签的值均不符,那么将执行default语句。(default可以写在任何一个case标签可以出现的地方)。
switch (整型表达式)
{
case 整型常量表达式1: 语句1;
break;
case 整型常量表达式2: 语句2;
break
case 整型常量表达式3: 语句3;
break;
...
case 整型常量表达式n: 语句n;
break
default:默认执行语句;
break;
感受一下switch:
#include <stdio.h>
int main()
{
int ch = 0;
printf("**********1.星期一**********\n");
printf("**********2.星期二**********\n");
printf("**********3.星期三**********\n");
printf("**********4.星期四**********\n");
printf("**********5.星期五**********\n");
printf("**********6.星期六**********\n");
printf("**********7.星期日**********\n");
printf("**********0.退出 **********\n");
scanf("%d", &ch);
switch (ch)
{
default:printf("输入错误,请重新输入");
break;
case 1:printf("Monday");
break;
case 2:printf("Tuesday");
break;
case 3:printf("Wednesday");
break;
case 4:printf("Thursday");
break;
case 5:printf("Friday");
break;
case 6:printf("Saturday");
break;
case 7:printf("Sunday");
break;
}
return 0;
}
循环结构:for、while、do-while
1.for循环
感觉for循环是非常常用的,比起while循环比较方便吧。
#include <stdio.h>
int main()
{
int i=0;
for(初始化循环控制变量;结束条件;更新循环控制变量)
{
语句;
}
return 0;
}
如果在for循环内初始化循环控制变量,它的作用域只在for循环内。
利用for循环输入和输出:
#include <stdio.h>
int main()
{
int arr[10] = { 0 };
int i=0;
for (int i = 0; i < 10; i++)//i的作用域在for循环内
{
scanf("%d", &arr[i]);
}
for (i = 0; i < 10; i++)//此处的i与上一个for循环的i是不同的
{
printf("%d ", arr[i]);
}
return 0;
}
2.while循环
当xxxx时执行代码。
#include <stdio.h>
int main()
{
while(条件)
{
代码块;
}
return 0;
}
当条件为真时,执行代码块,条件可以是表达式
用while循环输入数字并倒序输出:
#include <stdio.h>
int main()
{
int i = 0;
int arr[10] = { 0 };
while ((scanf("%d", &arr[i]) == 1))
{
i++;
}
while (i != 0)
{
i--;
printf("%d ", arr[i]);
}
return 0;
}
3.do-while循环
当xxxxx时执行代码块。
do-while语句与while语句不同在于,它的代码块被执行一次后才会进行条件表达式的第一次判断。
#include <stdio.h>
int main()
{
do
{
代码块;
} while (条件表达式);
return 0;
}
举个不恰当的例子;do-while是先打你一顿再问你知不知道错,不知道错继续打…while循环是先问你知道知不知道错,不知道错就打,打完再问一遍…
用代码来感受一下do-while循环:
#include <stdio.h>
i#include <stdio.h>
int main()
{
int ch = 0;
do
{
printf("1.菜单项\n");
printf("2.菜单项\n");
printf("3.菜单项\n");
printf("4.菜单项\n");
printf("5.菜单项\n");
printf("6.菜单项\n");
printf("0.退出\n");
printf("请选择:\n");
scanf("%d", &ch);
} while (ch); //配合switch语句可以达到多次输出菜单的目的
return 0;
}
上面代码利用do-while循环实现了菜单的多次输出,可以配合switch语句实现多次选择