目录
语句
C语言语句分为五类:
1.表达式语句:3+5;
2.函数调用语句:printf("...");
3.控制语句(9种可分为3类):
1.条件判断语句(分支语句):if语句,switch语句
2.循环执行语句:do while语句,while语句,for语句
3.转向语句:break语句,goto语句,continue语句,return语句
4.复合语句
5.空语句: ;
分支语句(选择结构)
if语句
注:if语句如果表达式结果为真,则执行语句(if语句默认管理后面一条语句)
0表示假,非0表示真
语法结构
if(表达式) if(表达式) if(表达式)
语句; 语句; 语句;
else else if(表达式)
语句; 语句;
.........
else
语句;
include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
printf("未成年");
return 0;
}
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
printf("未成年");
else
printf("成年");
return 0;
}
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("未成年");
}
else if (age >= 18 && age <= 30)
{
printf("青年");
}
else if (age > 30 && age <= 50)
{
printf("中年");
}
else
{
printf("老年");
}
return 0;
}
if语句默认管理后面一条语句,如果需要执行多条语句,应该使用代码块:
#include <stdio.h>
int main()
{
if (表达式)
{
多条语句;
}
else if (表达式)
{
多条语句;
}
else
{
多条语句;
}
return 0;
}
这里的一对{ }就是一个代码块
else的使用
else与离之最近的if匹配
列:这里我们想当a=0且b=2的时候输出haha,否则输出hehe
输出空值,因为else与if(2==b)这个if配对了,a不等于0这个程序直接结束了
正确代码:
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
if (0 == a)
{
if (2 == b)
{
printf("haha\n");
}
}
else
{
printf("hehe\n");
}
return 0;
}
if语句练习
1.判断1个数是否为奇数
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if (a % 2 == 0)
{
printf("不是奇数");
}
else
{
printf("奇数");
}
return 0;
}
2.输出1-100之间的奇数
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 100; i++)
{
if (i % 2 == 1)
{
printf("%d ", i);
}
}
return 0;
}
switch语句
语法结构
switch(整型表达式)
{
case 整型常量表达式:语句:
。。。
case 整型常量表达式:语句:
}
switch语句无法直接实现分支,需要搭配break才能实现分支
例:输出日期程序(输出星期五)
在switch语句中,“case 常量表达式”只相当于一个语句标号, 表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,所以出现了继续执行所有后面case语句的情况
添加break语句
当输入1-5时输出weekday
当输入6,7时间输出weekend
由switch语句的特点和break语句的用处我们可以写出
break语句的实际效果是把语句列表划分为不同的分支部分
default语句
如果输入的值与case后的值都不匹配的话,所有的语句都会被跳过,但是程序既不会终止
也不会报错,但是如果你并不想忽略所有标签的表达式的值的时候,可以添加一条default语句(可以出现在case语句能出现的任何位置,每个switch语句中只能出现一条default子句)
循环语句
while语句
语法结构
while(表达式)
语句;
例:打印0-10这几个数字
#include <stdio.h>
int main()
{
int i = 0;
while (i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
while语句中的break语句和continue语句
break:停止后期所有的循环,终止循环
continue:终止本次循环,跳转到下次循环的判断部分
break语句实例
continue语句实例
光标一直闪烁,当i=5时continue跳过本次循环跳转到下次循环判断处,没有进行i++操作,i一直为5,程序死循环
for循环语句
语法结构
for(表达式1;表达式2;表达式3)
语句;
表达式1:初始化
表达式2:判断
表达式3:调整
打印0-10这些数字
#include <stdio.h>
int main()
{
int i = 0;
for (i = 0/*初始化*/; i <= 10/*判断*/; i++/*调整*/)
{
printf("%d ", i);
}
return 0;
}
for循环中的break和continue
break:停止后期所有的循环,终止循环
continue:终止本次循环,跳转到下次循环的判断部分
for循环变种
省略三个部分,死循环
省略初始化部分
如果给变量赋初值,程序正常运行,没有初始化,程序错了
省略判断部分,意味着判断部分恒为真
省略调整部分,死循环
多个for循环嵌套
使用多个变量控制循环
笔试练习题
#include <stdio.h>
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++)
{
k++;
}
return 0;
}
问:该循环循环多少次?
该循环不循环,判断条件为假,不循环(C语言中0为假,非0为真)
do...while循环语句
语法结构
do{
语句;
}while(表达式);
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
do while循环至少执行一次
do...while语句中的break和continue
break:停止后期所有的循环,终止循环
continue:终止本次循环,跳转到下次循环的判断部分
continue和while中的continue一样
goto语句
C语言中提供了可以随意滥用的goto语句和标记跳转的标号
可以用在跳出两层循环或多次循环,break只能跳出一层循环
用法