恭喜你,学习到这里说明C语言的学习正式开始了。学习完本节知识,已经可以写大部分的题目啦!
我们先来看这个:
C语言语句分类:1.表达式语句
2.函调用语句
3.控制语句
4.复合语句
5.空语句
C语言有五大语句,我们现在要去学习的就是控制语句;而控制语句分为顺序,选择结构和循环结构,这节课我们先学会if语句和switch语句。好啦,我们先来了解一下我们这两节课需要学的:
1.if选择语句 2.switch选择语句 3.while循环语句 4.for循环语句
5.break和continue在这些语句的用法 6.do...while语句 7.goto语句
本节目录
一.if语句
1.单分支 2.双分支 3.多分支
二.swtich语句
上面不是重点,下面才是哦!
一.if语句
1.单分支
1.结构
if(表达式)
语句;
表达式:如果表达式结构为真,则会执行语句(默认执行后面跟的一条语句,若是想要执行多条语句,需要自行加大括号),为假则什么都不会执行。另一种判断方式:若表达式的结果为0,则为假;若结果非0,为真,也会执行语句。
我们看代码
#include<stdio.h>
int main()
{
int a=0;
scanf("%d",&a);//输入一个数
if(a>0)
printf("a为正数");//如果a>0则会在屏幕打印这句话,反之什么也不打印
return 0;
}
2.双分支
结构:二选一
if(表达式)
语句1;
else
语句2;
表达式为真执行语句1,为假执行语句2
1.我们看例子:
#include<stdio.h>
int main()
{
int a=0;
scanf("%d",&a);//输入一个数
if(a>0)
printf("a为正数");//如果a>0则会在屏幕打印这句话
else
printf("a表示正数");//表达式为假则会打印这句话
return 0;
}
2.可以嵌套使用
if(条件1)
{
//语句1
}
else
{
if(条件2)
{
//语句2
}
else
{
//语句3
}
}
一般可以用嵌套都可以同多分支结构,所以嵌套一般不用,比较的繁琐。
3.错误案例
一般是if跟else的错误用法,跟条件的写法。
if跟else匹配问题
//错误写法
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)//是这个if和下面的else匹配,与对齐不对齐没有关系
printf("hehe\n");//所以会输出hehe
else
printf("haha\n");
return 0;
}
//正确写法
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)//这里a!=1不会进入括号,就是什么都不会输出
{ //需要自己加大括号把想要匹配的if和else括起来
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
}
return 0;
}
条件写法问题
//如果年龄在18-30岁之间就输出青年,反之什么也不输出
//错误写法
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (18<=age<=30)//错误写法
printf("青年\n");//只要输入>18的都会输出青年
return 0;
}
//分析:我们输入50,理论上什么也不会输出。但是,它会先执行前面的表达式:18<50,显然
//18<50是成立的,也是就真,那就是1(真默认1,假为0);然后再执行后面表达式:1<30,
//显然这个也是成立的,也就是真,那就会执行后续语句,这就是也会输出青年的原因!
//正确写法
#include<stdio.h>
int main()
{
//如果年龄大于等于18-成年人
int age = 0;
scanf("%d", &age);
if (age>=18 && age<=30)//括号里面的条件我们需要写成逻辑结构,需要同属满足才会为真
printf("青年\n");
return 0;
}
//还有一种错误写法
//本应该是这样写
if(a==1)
//却写成if(a=1),这样是错误的!
3.多分支
我们先看结构
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3
在多分支里面,可以有多个else if(表达式),但是开头的If和结尾的else只有一个。
else if 后面要跟条件,else后面不能跟条件
我们看一道题
//按照不同年龄输出不同数据
//age<18 - 未成年
//18~30 - 青年
//31~50 - 中年
//51~70 - 中老年
//71~99 - 老年
//>99 - 老寿星
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
printf("未成年\n");
else if (age <= 30)
printf("青年\n");
else if (age <= 50)
printf("中年\n");
else if (age <= 70)
printf("中老年\n");
else if (age <= 99)
printf("老年\n");
else
printf("老寿星\n");
return 0;
}
不同的年龄输出不同的数据,因为条件比较多,所以适合多分支结构。
最上面的条件都不满足的时候,就会执行最后else的语句。
你说你学上瘾了?
那我们继续哈!
二.switch语句
结构:
switch(整形表达式)
{
语句项;
}
整形表达式可以是数字或者字符,不能为小数。
switch(整形表达式)
{
case 整形常量表达式:语句;//case和整形常量表达式中间要用空格隔开,跟语句中间要用冒号
default:语句;
}
switch语句要与break语句相互搭配,但是不能使用continue语句。
switch语句允许嵌套
一般用于输入数字或者字符就输出什么
我们看一个例子:
输入1,输出星期一,以此类推,输入7,输出星期天
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);//4
switch (day)
{
case 1:
printf("星期1\n");
break;
case 2:
printf("星期2\n");
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
case 5:
printf("星期5\n");
break;
case 6:
printf("星期6\n");
break;
case 7:
printf("星期天\n");
break;
}
return 0;
}
我们可以看到,每一个分号前面都有一个break,break的意思就是跳出该程序,不会再执行其他。
比如,我们输入4,此时day=4,然后就会选择case后面为4的语句,就会在屏幕上打印星期四,然后会执行break,跳出循环。所以输入一个4,只会打印星期四,其他的一律不打印。
那有同学就有疑问了,我就要输入1-7之外的数字,看你怎么办!那也不怕,满足你的需求,我们对程序改进一下。
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);//4
switch (day)
{
case 1:
printf("星期1\n");
break;
case 2:
printf("星期2\n");
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
case 5:
printf("星期5\n");
break;
case 6:
printf("星期6\n");
break;
case 7:
printf("星期天\n");
break;
default:printf("抱歉啦,输入错误!");
break;
}
return 0;
}
我们在最后面加了default,只要你输入的数据没有跟case后面的匹配,通通会交给default处理。
格式:
default:语句;//注意,default和语句之间用冒号隔开,结尾要用分号
break;
同学疑问又来了,那能不能输入不同的数据输出同一个结果呢?那当然也是可以的,我们把题目改一下
例子二:
输入1-5,输出工作日;输入6-7,输出休息日。
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);//4
switch (day)
{
case 1://输入1,会从这里进入,因为没有break会继续往下执行,直到遇到break结束
case 2:
case 3://输入3,会从这里开始,也是遇到break才结束
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:printf("抱歉啦,输入错误!");
break;
}
return 0;
}
由此可见,我们可以根据break灵活控制语句的执行。
顺序可以不一样,如case 1到case 4可以换顺序;case1-5也可以跟case6-7换顺序;但是其他的不可以随便调换。最好也不要调换
啊,你都看到这里了,也不打算给我点个赞再走嘛?