C语言结构
C语言程序设计主要分为顺序结构,选择(分支)结构和循环结构3种。
- 循环结构——程序按照语句顺序一条一条执行即可。
- 选择结构——程序依据不同的条件执行不同语句的场景,常用if_else,switch语句。
- 循环结构——用于多次执行同一段语句,常用for,while,do_while语句。
这里主要向大家介绍选择结构和循环结构的使用方法和注意事项。
选择结构
if_else
基本用法
if(条件)
{
语句;
}
else if(条件)
{
语句;
}
else
{
语句;
}
需要注意的是这里的语句只有一条,如果有多条语句,需要用{}包括。
执行流程
1.整个if_else语法由上到下执行,每次执行到if/else if都会判断条件是否为真,为真则执行语句,为假,则不执行。若条件均是假,则执行else里面的语句。
switch
是一种独特的if_else结构,主要用于实现判断条件有多个结果的情况。
基本用法:
switch (state)
{
case value1:语句1;break;
case value2:语句2;break;
case value3:语句3;break;
default:语句4;break;
}
1.上述用法是用的最广的一种,不唯一。
2. state:必须是一个整型表达式
3. value:必须是一个整型常量表达式
4.case 和 value之间必须有空格。
4. 这里的语句可以不止一条。
5. break不是每个语句后面都需要有,需要看自己程序的功能。决定了程序何时跳出switch语句。
6. 此处的case和default顺序无关紧要,但是建议default放到最后。
程序执行流程
当state的数值等于case后面的数值时,程序将直接跳到对应的case语句后面执行代码。
例如:state的结果和value2相等,将会执行语句2,语句2执行完成之后,遇到break,将会退出 switch语句。当state的结果和value都不相等时,将会执行语句4,之后遇到break,将会退出switch 语句。此处的break的意思是退出switch语句,如果没有遇见break,将会一直执行后面的语句。例如如果语句2后面没有break,当state等于value2的时候,程序将执行语句2,之后执行语句3 ,直到遇到语句3后面的break才会退出switch语句。这因为switch的state的表达式只能决定程序的入口,不能决定出口,需要使用break语句跳出switch语句。
实例:
int main()
{
int a = 0;
printf("请输入一个数字\n");
while (1)
{
scanf("%d", &a);
switch (a)
{
case 1:printf("1.你输入的数字时%d\n", a); break;
case 2:printf("2.你输入的数字时%d\n", a);
case 3:printf("3.你输入的数字时%d\n", a); break;
default:printf("4.你输入的数字时%d\n", a); break;
}
}
return 0;
}
循环结构
for
基本用法
for(表达式1; 表达式2; 表达式3;)
{
语句;
}
- 表达式1用于循环变量的初始化
- 表达式2用于循环条件的判断
- 表达式3用于循环变量的调整
- 该循环大多数情况下用于循环次数已知的情况
执行流程
1.执行表达式1将循环变量初始化。
2.判断循环条件是否为真,为真则执行for循环语句为假则退出循环
3.语句执行完毕之后,执行表达式3,调整循环变量,再执行表达式2,判断循环条件是否为真。
4.循环2,3步骤,直到循环条件为假,退出循环。
在这个过程中,表达式1执行一次,表达式2和表达式3循环执行。
while
循环变量初始化;
while (循环条件)
{
语句;
循环变量调整;
}
while循环执行流程和for循环一样。不同之处在于for循环将循环变量初始化,判断循环条件和循环变量调整放到了一块,方便阅读。而while循环则将这三者分散在程序的不同位置。
do while
do
{
语句;
} while (循环条件);
执行流程
该循环首先执行语句,执行完成之后判断循环条件是否为真,为假则退出,为真则执行语句。
该循环先执行语句,后判断,于for,while先判断,后执行不同。
主要用于必须执行一次循环的场景,这点比较特殊。在这三个循环中使用最少。
循环的嵌套
在实际的代码应用中,往往不是单一的循环就能够完成程序的目的,需要多个循环嵌套使用,在这里不多讲,大家可以看代码练习里面的程序自主练习。里面基于题目要求给出了详细代码,包括了循环,判断以及他们之间的嵌套使用。
附加小知识
break,continue
break和continue是C语言的两个关键字,主要用于在程序遇到某些情况是,提前终止循环的场景。不过,二者也有区别,break是退出所在层循环,每个break只能退出一层。而continue则是停止执行该次循环continue之后的语句,接着开启下次循环。
实例:
int main()
{
int i = 0;
printf("break演示\n");
for (i = 0; i < 10; i++)
{
if (i == 5)
{
break;
}
printf("第%d次循环\n", i);
}
printf("\n", i);
printf("continue演示\n");
for (i = 0; i < 10; i++)
{
if (i == 5)
{
continue;
}
printf("第%d次循环\n", i);
}
return 0;
}
break中当i== 5时,遇到了break,退出了整个循环,没有了之后的循环。
而continue中 当i==5,只是停止了第5次循环,之后的6-9次循环依旧执行。
goto
goto是C语言提供的一个跳转语句,可以实现再一个函数内部跳转到指定标号的作用。当然也可以用于直接跳出多层循环。需要注意的是,这里必须是一个函数内部才可以跳转。
实例:
int main()
{
int i = 0;
int j = 0;
printf("break演示\n");
printf("\n");
while (i < 10)
{
for (j = 0; j < 10; j++)
{
if (j == 2)
{
goto flag;
}
printf("哈哈\n");
}
}
flag:printf("goto跳到指定位置\n");
return 0;
}
当j==2 时,遇到goto,直接跳到flag位置,执行printf(“goto跳到指定位置\n”);