C语言是一门结构化的程序设计语言。
什么是语句?
C语言中由一个分号
;
隔开的就是一条语句。例如:
printf("Hello");
1+2
;
顺序结构
选择结构(分支语句)
if
语句
语法结构:
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式)
语句1;
else if(表达式2)
语句2;
else
语句3;
//如果条件成立,要执行多条语句,该怎样使用代码块?
if(表达式){
语句1;
语句2;
}else{
语句3;
语句4;
}
年龄判断
while (1) {
int age = 0;
printf("请输入年龄:\n");
scanf("%d", &age);
if (age <= 18)
printf("未成年\n");
else if (age <= 35)
printf("青年\n");
else if (age <= 55)
printf("中老年\n");
else
printf("老年\n");
}
注意:
int age = 10;
if (18< age <= 35)
printf("青年\n");
程序输出结果:
青年
程序结果分析:
程序执行到
18 < age <= 35
时先执行18<age
,此时age=10
,所以18<10
的结果为0
,而0 <= 35
,所以输出了青年
。在C语言中,0表示假,非0表示真
。
注意事项:
if else
语句在没有大括号的情况下,else
的匹配原则是就近匹配if
.int a = 1; int b = 2; if (a == 0) if (b == 2) printf("进入内层if"); else printf("外层else");
程序输出结果:
int a = 1; if (a = 2) { printf("输出咯"); }
程序输出结果
输出咯
程序结果分析:
需要注意,在
C语言
中,0为false,true为非0
,=
是赋值操作,不是判断操作,此时num=5
也就是:int num = 4; if(5){ printf("输出咯") }
switch
语句
switch(整型表达式){
语句项;
}
何为语句项:
case 整型常量表达式:
语句;
int day = 0;
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("无效日期");
}
int day = 0;
scanf("%d", &day);
switch (day){
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("周末啦\n");
break;
default:
printf("无效日期");
}
return 0;
注意:default
和case
的顺序并没有限制
int day = 0;
scanf("%d", &day);
switch (day){
default:
printf("无效日期");
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("周末啦\n");
break;
}
循环结构
while
语句
while(表达式)
循环语句;
int num = 0;
while (num < 10)
{
printf("%d", num++);
if (num == 5) {
break;
}
}
int num = 0;
while (num != EOF){
num = getchar();
putchar(num);
}
return 0;
EOF
:end of file:文件结束标志,值为-1,等同键盘输入Ctrl + Z
for
语句
for(表达式1;表达式2;表达式3)
循环语句;
表达式1为初始化部分,用于初始化循环变量的。表达式2为条件判断部分,用于判断循环时候终止。表达式3为调整部分,用于循环条件的调整。
for语句的循环控制变量
一些建议:
1.不可在for循环内修改循环变量,防止for循环失去控制。
2.建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
for(int i = 0; i < 10; i++){ }
特殊的for
循环
for (;;) {
printf("哈哈哈哈");
}
for
循环的初始化、调整、判断都可以省略,但是:for
循环的判断部分被省略,那判断条件就是恒为真。- 如果不是非常熟练,建议不要随意省略;
int i = 0;
int j = 0;
for (; i < 10; i++) {
for (; j < 10; j++) {
printf("瓜皮");
}
}
代码分析:
现有需求是
i
每循环一次,j
就要循环10次。但是当初始化条件省略后,i
执行第一次,j
为10,i
进入下一次循环,但是此时因为j
省略了初始化,导致j
为10,从而无法进入j
循环的方法体。
循环将会执行几次
int i = 0;
int j = 0;
for (i = 0,j = 0; j = 0; i++,j++) {
j++;
}
do while
语句
do
循环语句;
while(表达式);