目录

分支和循环语句

顺序结构

分支语句(选择结构)

if语句

if语句建议以以下两种方式书写:

[ 表达式内的关系操作符与逻辑操作符:](# 表达式内的关系操作符与逻辑操作符:)

[ else:](# else:)

switch语句:

[ 循环语句:](# 循环语句:)

while语句:

while语句中的break与continue:

[ do…while语句](# do…while语句)

[ for语句:](# for语句:)

答案:


分支和循环语句


顺序结构

分支语句(选择结构)

if语句

语法结构:

1.if(表达式)

​ 语句;

2.if(表达式)

​ 语句1;

else

​ 语句2;

3.if(表达式)

​ 语句1;

else if(表达式)

​ 语句2;

else

​ 语句3;

*表达式结果为非0(真)则执行语句

{ }代表代码块

if语句建议以以下两种方式书写:

if(5 == a ){//这么写if结构更加清晰明了
...; //变量放在右侧可以避免少写=
}
else{
...;
}

点击并拖拽以移动

注意:“==”与“=”的区别

表达式内的关系操作符与逻辑操作符:

示例:

img

点击并拖拽以移动

18 <= age <= 30的程序中判断过程是:

18 <= age (40) 为真 所以左边部分变为1

1 <= 30 为真 值为 1

所以if内的语句可以被执行

正确写法:

img

点击并拖拽以移动

else:

else 与相邻最近的if匹配(就近)

img

点击并拖拽以移动

else会与第二个if匹配而不是第一个

img

点击并拖拽以移动

正确的写代码规范十分重要,如下这样写就不会有问题:

img

点击并拖拽以移动

当然也是可以简化的:

img

点击并拖拽以移动

switch语句:

switch(整型常量表达式){

​ case 1:

​ …;

​ break;

​ case 2:

​ …;

​ break;

​ case 3:

​ …;

​ break;

​ …

​ case n:

​ …;

​ break;

​ default:

​ …;

​ break;

}

1.switch中必须为整型的常量表达式

2*.break语句建议在每个case后加上,避免以后修改时忘记添加*

3.default只能出现一次

思考:

#include <stdio.h>
int main() {
int n = 1;
int m = 2;
switch (n) {
case 1:
m++;
case 2:
n++;
case 3:
switch (n) {//switch允许嵌套使用
case 1:
n++;
case 2:
m++;
n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}

点击并拖拽以移动

循环语句:

while语句:

while(表达式){

​ 循环语句;

}

while语句中的break与continue:

以下给出三个示例

示例1:

img

示例2:

img

程序没有结束,这是一个死循环

示例3:

img


do…while语句

do{

​ 循环语句;

}while(表达式);//分号不要忘记


for语句:

for( 初始化部分;条件判断部分;调整部分 ){

​ 循环语句;

}

  1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。
  2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。

\1. 请问下面的代码中循环体执行几次?

#include <stdio.h> 
int main() {
int i = 0;
int k = 0;
for(i =0,k=0; k=0; i++,k++)
k++;
return 0;
}

2.下面的代码会输出什么?

#include<stdio.h>
int main(){
int i = 0;
int j = 0;
for(; i < 10; i++)
for(; j < 10; j++)
printf("%d ",j);
return 0;
}

代码应该书写规范:

#include<stdio.h>
int main(){
int i = 0;
int j = 0;
for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
printf("%d ",j);
return 0;
}

答案:

m=5,n=3

0 1 2 3 4 5 6 7 8 9(因为在第一次大循环中j已经变为10 后面的大循环中第二个循环是没有输出的)