进入今天的主体之前,我们先思考一个问题,如果我们仔细去观察我们生活中发生的事,就可以发现,几乎所以的事情都可利用分支或循环来表述
例如:
分支:如果明天不下雨,我们就去公园玩,否则就在家看电视
如果我能抢到演唱会的门票,那我就去看演唱会,否则我就去旅游
循环:在学校,我们会一直做作业, 重复做作业的这个动作,直到掌握知识点,考高分
假如一个爱上头的游戏玩家,输了一把游戏,那么他就会一直重复的玩,直到取得一把胜利才甘心
这就是现实生活中的分支和循环,那我们应该怎样用c语言的形式表示这种关系呢?
正文:
要实现分支和循环,我们得先知道:C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合
那么我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构,下面我们介绍分支语句
If语句
表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏;在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果是 不是0,则语句执⾏
案例:
int main()
{
int x= 0;
scanf("%d", &x);
if (x % 2 == 1)
printf("%d 是奇数\n", x);
else
printf("%d 是偶数\n", x);
return 0;
}
|
分支中包含多条语句
C语言中默认if和else都控制一条语句,如果要在if或else语句下执行多条语句,那么就需要添加{ }将多条语句放入里面,形成代码块
例如:
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
{
printf("成年\n");
printf("可以谈恋爱了\n");
}
else
{
printf("未成年\n");
printf("不建议谈恋爱\n");
}
return 0;
}
这个时候就需要将两个printf放入{ }中了 |
嵌套if
在c语言中,if和else可以进行嵌套,进行多从判断
案例:
int main()
{
int a = 0;
scanf("%d", &a);
if (a / 2 == 0)//对a除2的商进行判断
printf("输入的数字是0");
else
{
if (a / 2 > 0)
printf("输入的数字是正数");
else
printf("输入的数字是负数");
}
return 0;
}
例子:判断年龄
int main()
{
int x = 0;
scanf("%d", &x);
if (x <= 18)
printf("少年");
else
{
if (x <= 44)
printf("青年");
else
{
if (x <= 59)
printf("中老年");
else
{
if (x <= 89)
printf("老年");
else
{
printf("老寿星");
}
}
}
}
return 0;
}
悬空else
悬空else:如果有多个if和else,可以记住一条规则,else总是跟最接近的if匹配
案例:
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
注意:在这段代码中,第一个if语句没有else,而代码中的else是隶属于第二个if语句的,因为else是与它最近的if进行匹配,那么又因为这第一个if语句就不成立,故就不继续执行子语句,故就什么都没有打印 |
Switch语句
Switch语:switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。
基本语法:
int main()
{
switch (x) {
case value1: statement
break;
case value2: statement
break;
default: statement
}
return 0;
}
Switch语句:判断x表达式的值,如果是value1,那么就执行value1,如果不是就看value2,如果是那么就执行value2,如果都不是,那么就执行default语句 |
注意:.
- switch 后的 x表达式 必须是整型表达式 (字符也可以,存放的ascll码)
- case 后的值,必须是整形常量表达式
- 如果做分支,那么分支后要加上break,来退出case,防止系统进行进入下一条case
- Case后跟的是冒号不是分号
练习:
int main()
{
int a = 0;
scanf("%d", &a);
switch (a % 3)
{
case 0:
printf("余数是0");
break;
case 1:
printf("余数是1");
break;
case 2:
printf("余数是2");
break;
}
return 0;
}
|
练习:求星期
int main()
{
int a = 0;
scanf("%d", &a);
switch (a)
{
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
case 4:
printf("星期四");
break;
case 5:
printf("星期五");
break;
case 6:
printf("星期六");
break;
case 7:
printf("星期日");
break;
default:
printf("请输入正确的周期");
break;
}
}
练习求工作日:
int main()
{
int a = 0;
scanf("%d", &a);
switch (a)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日");
break;
case 6:
case 7:
printf("休息日");
break;
default:
printf("请输入正确的周期");
break;
}
return 0;
}
因为没有了break,所以,系统会一直执行,也就是1-5都是工作日,6\7是休息日 |
if和Switch就到这了,循环将在下一章更新
如有错误请指出