顺序结构较为简单,本篇不作说明。
一.分支结构
1.if分支
1)简单分支
if(表达式) //表达式:具有逻辑结果的表达式
{ //当表达式结果为真时,执行语句1,否则执行语句2
语句1;
}
else
{
语句2;
}
1.if可以单独存在,但else不可以
2.当if或else后面的语句只有一句时,{}可以省略,建议不要省略
3.{}里面缩进一个Tab
4.if(表达式)后面不要写分号,写分号if语句直接结束
流程图如下

2)阶梯分支
if(表达式1)
{
语句1;
}
else if(表达式2)
{
语句2;
}
else if(表达式3)
{
语句3;
}
else
{
语句4;
}
顺序执行,若前面的表达式符合条件则不会执行后面的
流程图如下

3)嵌套分支
相对阶梯分支效率低,且嵌套多层时可读性差,少用。

2.switch分支
switch(表达式)
{
case 常量/表达式1: 语句1;break;
case 常量/表达式2: 语句2;break;
case 常量/表达式3: 语句3;break;
case 常量/表达式4: 语句4; break;
default :语句;break;
}
1.switch后面的表达式一定是具有整型结果的表达式
2.当只匹配一个结果时,所有的case后面都要加break跳出switch,default后面可省略break
3.default可省略
4.case后面不能用逻辑表达式
5.各个case和default出现次序不影响结果。
二.循环结构
1.for循环
for(表达式1;逻辑表达式2;表达式3)
{
循环体;
}
表达式1:循环的初始条件;
表达式2:循环被执行的条件,表达式2的结果为真,则执行循环体,否则退出循环;
表达式3:让循环趋于结束的条件。
语法规定:
1.for(;;){}--->死循环,表示循环体一直被执行;
2.for循环的三个表达式都可以被省略,但循环初始条件,让循环执行的判断条件及让循环趋于结束的条件必须要有;
3.for循环中的三个表达式的位置不能互换;
4.for(表达式1;逻辑表达式2;表达式3)后不要加分号,加分号代表语句结束;
for(表达式1;逻辑表达式2;表达式3);== for(表达式1;逻辑表达式2;表达式3)
{ {
循环体;
} }
5.一个在
for里定义的变量,就只属于那个循环,只负责把循环跑完,跑完就消失;而一个在外部定义的变量,它的定义域属于整个函数。写代码时,尽量让变量的定义域落在最小需要它的范围内,以便后续调试。
执行流程:
(1)先求解表达式1。
(2)求解表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后
执行下面第(3)步。若为假(值为0),则结束循环,转到第(5)步。
(3)求解表达式3。
(4)转回上面第(2)步骤继续执行。(5)循环结束,执行for语句下面的一个语句
2.while
while(表达式)
{
循环体;
}
循环的初始条件:while()前面
循环执行的条件:逻辑结果的表达式,表达式结果为真则执行循环体,否则退出循环;
让循环趋于结束的条件:循环体内
注意:
1.while(表达式)后面不能加分号,加分号相当于:
while(表达式)
{
//空
}
2.while(表达式)后面的{},当循环体只有一行语句时可以省略,但不建议省略;
3.死循环
while(1)
{
循环体;
}
流程图如下:

3.do while
do
{
循环体;
}while(表达式);
1.do while语句在while()后面必须加分号;
2.无论while()的逻辑结果为真为假,循环体至少执行一次;
执行流程:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。
4.goto
goto语句为无条件转向语句,它的一般形式为
goto 语句标号;
其第一个字符必须为字母或下划线。不能用整数来作标号。例如:
语句标号用标识符表示,它的定名规则与变量名相同,即由字母、数字和下划线组成,
goto label _1;是合法的,而goto 123;是不合法的。结构化程序设计方法主张限制使用goto语句,因为滥用goto语句将使程序流程无规律、可读性差。但也不是绝对禁止使用goto语句。一般来说,有两种用途:
(1)与if语句一起构成循环结构。
(2)从循环体中跳转到循环体外,但在C语言中可以用break语句和continue语句跳出本层循环和结束本次循环。goto语句的使用机会已大大减少,只是需要从多层循环的内层循环跳到外层循环外时才用到goto语句。但是这种用法不符合结构化原则,一般不宜采用,只有在不得已时(例如能大大提高效率)才使用。
int main()
{
int num = 0;
printf("请输入一个正整数:");
scanf("%d", &num);
if (num < 0)
{
goto error; // 负数时跳转到error错误处理,中间代码直接跳过
}
printf("你输入的是:%d\n", num);
return 0;
error:
printf("错误:不能输入负数!\n");
return 1;
}
三.循环辅助语句
1.break
循环断路语句,结束当前循环。(当多层循环嵌套时,只跳出当前层循环)。break不能用于除循环语句和switch语句之外的任何其他语句中。
2.continue
循环短路语句,仅跳出此次循环,执行下次循环。
3.return
跳出当前函数,当在main函数中遇到return时,直接结束整个程序;若在其他函数里时只表示函数结束。



305

被折叠的 条评论
为什么被折叠?



