C语言支持三种程序运行结构:顺序结构、选择结构、循环结构。
- 顺序流程:按照语句编写的顺序上到下逐句zhix逐句执行。
- 分支流程:也叫分支结构,依据是否满足条件,有选择的执行相应功能。
- 循环流程:依据条件是否满足,重复多次执行某段代码。
一、选择结构
1、if语句
1.if语句的三种形式:
第一种:
plain 代码:
代码语言:javascript复制if(测试条件)
条件为真的流程
第二种:
c 代码:
代码语言:javascript复制if(测试条件)
条件为真的流程
else
条件为假所执行的流程
第三种:
c 代码:
代码语言:javascript复制if(条件表达式1)
语句1
else if(条件表达式2)
语句2
else if(条件表达式3)
语句3
.....
else
语句n
2.if嵌套语句
c 代码:
代码语言:javascript复制if()
if()
语句1
else
语句2
else
if
语句3
else
语句4
2、条件运算符
他是C语言中唯一一个三元运算符
意味着它有三个运算对象 伪代码如下:
c 代码:
代码语言:javascript复制c=x >=10 ? 'Y' : 'n';
//测试条件 ? 表达式1 : 表达式2;
3、switch语句
语法:
c 代码:
代码语言:javascript复制switch (表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
...
case 常量表达式n-1: 语句n-1;break;
default : 语句n
}
执行逻辑:
计算"表达式"的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的 值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达 式的值与所有case后的常量表达式均不相同时,则执行default后的语句。注意:每个语句后面都有break
示例代码:
c 代码:
代码语言:javascript复制#include <stdio.h>
int main()
{
int day;
printf("plz Input weekday number: ");
scanf("%d", &day);
switch (day)
{
case 1:printf("星期一n"); break;
case 2:printf("星期二n"); break;
case 3:printf("星期三n"); break;
case 4:printf("星期四n"); break;
case 5:printf("星期五n"); break;
case 6:printf("星期六n"); break;
case 7:printf("星期日n"); break;
default:printf("I don't know n");
}
return 0;
}
总结:
- switch结构的表达式必须为“常量表达式”
- switch结构可以用if ... else if ... else 结构来实现
二、循环结构
1、while循环
c 代码:
代码语言:javascript复制while(循环条件)
{
循环行为1
循环行为2
循环行为3
}
求1~100的和示例代码:
c 代码:
代码语言:javascript复制#include <stdio.h>
int main()
{
int sum,i;
sum=0,i=1;
while (i<=100)
{
sum=sum i;
i ;
}
printf("%d %dn",sum,i);
return 0;
}
C语言中非0即为真,一定要注意检查代码,避免出现死循环的情况。如何避免出现死循环呢?
- 开始时,为计数器设计初始值
- 计数器与一个有限值比较作为循环条件
- 更新计数器
2、for循环
c 代码:
代码语言:javascript复制for (计数器设置初始值;循环条件;计数器更新)
{
循环行为1
循环行为2
循环行为3
}
求1~100的和示例代码:
plain 代码:
代码语言:javascript复制#include <stdio.h>
int main()
{
int sum,i;
sum=0;
for (i=1; i <= 100; i )
{
sum=i sum;
}
printf("%d %d",sum,i);
return 0;
}
3、do-while循环
while与do-while的不同
c 代码:
代码语言:javascript复制do{
循环行为1
循环行为2
循环行为3
}while(循环条件);
三、流程控制
1、break语句
1.break在switch语句中的使用
- break用于switch中时,可使程序跳出switch,如果没有break语句,则会继续执行下一个case逻辑 中的语句(不论case后面的表示式结果与switch后的表达式结果是否相等),直到遇到break才 会跳出switch
c 代码:
代码语言:javascript复制switch(x)
{
case 1:printf("1n");break;
case 2:printf("2n");
case 3:printf("3n");break;
case 4:printf("4n");break;
}
# 上面的例子中因为case 2 逻辑后没有break,所以当x为2时,输出结果为 2 3
2、break在循环语句中的使用
- 当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语 句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。
c 代码:
代码语言:javascript复制int m, n;
for (m = 0; m < 10; m )
{
for (n = 0; n < 10; n )
{
if (n == 3)
break;
printf("%dn", n);
}
}
3、contiune语句
break
语句有两种用法:
一种是与switch语句配套使用,用来中断某个分支的执行。 另一种用法是在循环体内部跳出循环,不再进行后面的循环了。
continue
语句的作用是:
跳过本次循环,直接开始下一轮循环
1.while
循环中使用contiune
c 代码:
代码语言:javascript复制#include<stdio.h>
int main()
{
int i=0;
while (i<20)
{
if (i==6)
{
i=15;
continue;
}
printf("%d ", i);
i ;
}
}
2.for
分支语句中使用contiune
c 代码:
代码语言:javascript复制#include <stdio.h>
int main()
{
int i = 0;
for(i=0;i<20;i )
{
if (i == 6)
i=15;
continue;
printf("%d",i);
}
return 0;
}