目录
分支语句
1.if-else语句
1)单if语句:即只有if的分支语句
2)if-else双分支语句
3)if- else if -else
2.switch语句
3.分支语句的嵌套
循环语句
goto语句
C语言是结构化的程序设计语言,所有的结构大致可分为三种:顺序结构、选择结构、循环结构
下面介绍一下选择结构和循环结构
分支语句中有if语句和switch语句
循环语句有while语句,for语句,do while语句,goto语句
#include
int main()
{
int age = 20;
if (age > 18)
printf("可以考驾照\n");
return 0;
}
注意:C语言中if后的条件判断:非零为真,零为假
不加大括号时if仅与其后最近的一条语句配对
双分支语句其实就是判断题,非if即else
#include
int main()
{
int age;
scanf("%d",&age);
if (age >= 18)
printf("adult\n");//成年
else
printf("nonage\n");//未成年
}
多分支语句就像是判断题变成了多选题
int main()
{
int score = 80;
if (score >= 0 && score < 60)
printf("挂科\n");
else if (score >= 60 && score < 70)
printf("中等\n");
else if (score >= 70 && score < 90)
printf("良好\n");
else if (score >= 90 && score <= 100)
printf("优秀\n");
else
printf("成绩出错\n");
}
常见错误:
int main()
{
int a = 10;
int b = 20;
if (a == 20)
if (b == 20)
printf("%d", b);
else
printf("%d", a);
return 0;
}
结果是什么都不打印,原因是else默认与离自己最近的未匹配的if匹配,上面代码书写风格不好,实际上排版应是下面这种形式:
int main()
{
int a = 10;
int b = 20;
if (a == 20)
if (b == 20)
printf("%d", b);
else
printf("%d", a);
return 0;
}
所以代码风格很重要
switch语句是一种适用于处理多分支的语句,switch后面的()内为整型表达式,就是说这个表达式结果的数据类型必须是整型,case后面的表达式是整型常量表达式,就是说这个表达式不仅结果必须是整型,而且结果必须是常量。
int main()
{
int day = 6;
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;
}
return 0;
}
其中的break关键字充当的是switch程序块出口的角色,作用是让程序读到它时跳出自己当前所在的子程序,这样,程序块就被划分成了不同的部分,进而实现分支的功能
小结:switch的入口是case,出口是break
break直接跳出switch语句,不执行后续操作;
default:当case语句中的所有整型变量表达式均不满足时,执行default中的语句,default可写在任意地方,没有顺序可言
if-else语句嵌套
int main()
{
int a = 1,b;
if (a == 1)
{
printf("你是否要努力学习?(1 or 0):");
scanf("%d",&b);
if (b == 1)
print("找到好工作\n");
else
printf("放飞自我,毕业即失业\n");
}
return 0;
}
switch嵌套
#include
int main()
{
int x = 3;
int y = 3;
switch (x % 2)
{
case 1:
switch (y)
{
case 0:
printf("first");
break;
case 1:
printf("second");
break;
default:
printf("hello");
break;
}
case 2:
printf("third");
}
return 0;
}
C语言中的循环结构有三种常见的语句,分别是while,for,do-while循环,结构上都分为初始化部分、条件判断部分、调整部分
1)while循环语句
例,打印1~10的数字
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int i = 1;//初始化部分
while (i <= 10)//条件判断部分
{
printf("%d ", i);//循环体
i++;//调整部分
}
return 0;
}
2)for循环语句
int main()
{
int i = 0;
for (i = 1/*初始化*/; i <= 10/*判断部分*/; i++/*调整部分*/)
{
printf("%d ", i);
}
return 0;
}
变种1:
int main()
{
for( ; ;)
printf("hehe\n");
return 0;
}
结果为死循环打印hehe,原因:当初始化和调整部分省略时,程序不进行初始化和后续的调整;而当判断部分省略时,则程序认为判断部分为真,所以程序会一直运行下去
变种2:
int main()
{
for(x=0,y=0;x<2&&y<5;++x,y++)
printf("hehe\n");
return 0;
}
以上我们可以看出,for循环的控制变量是允许有2个变量存在的,但当有2个变量存在时,需格外谨慎才不会出错
3)do-while()循环语句
程序逻辑:先执行一次循环,再进行条件判断是否继续循环,与for和while循环的区别在于do-while语句至少可以循环一次
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
goto语句相当于一个传送门,可以直接改变代码执行的逻辑,即可以直接跳到目标代码去执行,但它如一把双刃剑,用的好编程效果很不错,滥用就会自废武功
int main()
{
int age;
again:
scanf("%d", &age);
if (age < 18 && age >= 1)
printf("未成年\n");
else if (age >= 18 && age <= 121)
printf("成年\n");
else
{
printf("输入错误,请重新输入\n");
goto again;
}
return 0;
}
注意:goto语句只能在一个函数范围内跳转,不能跨函数