当前位置:网站首页>c语言学习
c语言学习
2022-07-01 12:40:00 【51CTO】
分支和循环(1)
正文
一.分支语句和循环语句
分支语句
if switch
循环语句
while for do while go to语句
什么是语句?
c语言中由一个分号(;)隔开的是一条语句。
1.分支语句(选择结构)
1).if语句
if语句的语法结构:
if(表达式) 或 if(表达式)
语句; 者 语句1;
else
语句2;
多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
如果表达式的结果为真,则语句执行(0表示假,非零表示真)
int
main()
{
int
age
=
111;
if (
age
<
18)
printf(
"未成年\n");
else
if (
age
>=
18
&&
age
<
20)
//&&表示逻辑与,如果表达式的结果为真,则语句执行(0表示假,非零表示真)
printf(
"青少年\n");
else
if (
age
>=
20
&&
age
<
50)
printf(
"壮年\n");
else
if (
age
>=
50
&&
age
<
90)
printf(
"老年人\n");
else
printf(
"老不死\n");
return
0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
如果条件成立,要执行多条语句,应该使用代码块
#include <stdio.h>
int main()
{
if(表达式)
{
语句列表1;
}
else
{
语句列表2
}
return 0;
}
int
main()
{
int
age
=
111;
if (
age
<
18)
{
printf(
"未成年\n");
//语句列表1
printf(
"不能谈恋爱\n");
//可以打印多个printf
}
else
{
if (
age
>=
18
&&
age
<
20)
printf(
"青少年\n");
else
if (
age
>=
20
&&
age
<
50)
//语句列表2
printf(
"壮年\n");
else
if (
age
>=
50
&&
age
<
90)
printf(
"老年人\n");
else
printf(
"老不死\n");
}
return
0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
这里的{}就是一代码块
悬空else
//适当的使用{}可以使代码的逻辑更加清楚
//代码风格很重要
练习:输出1~100之间的奇数
2).switch语句
switch语句的语法结构:
switch(整型表达式)
{
语句项;
}
语句项是什么?
//是一些case语句
//如下:
case整型常量表达式:
语句;
//switch语句里面可以有if语句
int
main()
{
int
day
=
0;
scanf(
"%d",
&
day);
//&取地址符,取出变量day
if (
1
==
day)
//判断变量day是否等于1,是的话输出星期一
printf(
"星期一\n");
else
if(
2
==
day)
printf(
"星期二\n");
else
if (
3
==
day)
printf(
"星期三\n");
else
if (
4
==
day)
printf(
"星期四\n");
else
if (
5
==
day)
printf(
"星期五\n");
else
if (
6
==
day)
printf(
"星期六\n");
else
if (
7
==
day)
printf(
"星期日\n");
return
0;
}
//用else if...else if 比较复杂,用switch多分支语句比较简单
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
更改后
int
main()
{
int
day
=
0;
//day为整型变量
scanf(
"%d",
&
day);
switch (
day)
//day为整型表达式
{
case
1:
//case 1(1为常变量表达式):
printf(
"星期一\n");
break;
//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;
}
//总结:通俗易懂
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
在switch语句中的break:
在switch语句中,我们没法实现分支,搭配了break就可以实现真正的分支了。
练习:输入1~5,输出“weekday”;输出6~7,输入“weekend”
int
main()
{
int
day
=
0;
scanf(
"%d",
&
day);
switch(
day)
{
case
1:
case
2:
case
3:
case
4:
case
5:
printf(
"weekday\n");
break;
case
6:
case
7:
printf(
"weekend\n");
break;
default:
//default可以放在switch的任何地方,当switch表达式的值不等于case标签的值时,这个时候default后面的语句就会执行。
printf(
"输入错误\n");
break;
}
return
0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
break语句的实际效果是把语句列表划分为不同的部分。
default子句(default和case没有顺序可言,放在那里都可以用)
如果表达的值与所有case标签的值不一样该怎么样?
其实也没什么,结果就是所有语句都被跳过而已;程序不会终止,也不会报错,因为这种情况在c中并不认为适合报错。
如果你并不想忽略不匹配所有标签的表达式的值时该怎么办?
你可以在语句列表中增加一条default子句,把下面的标签default:写在任何一个case标签可以出现的位置(当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会被执行。所有,每个switch语句中只能出现一条default子句,但是它可以出现在语句列表中的任意位置,而且语句流会向贯穿case标签一样贯穿default子句。)
练习:
int
main()
{
int
n
=
1;
int
m
=
2;
switch (
n)
{
case
1:
m
++;
case
2:
n
++;
case
3:
switch (
n)
{
//switch允许嵌套使用
case
1:
n
++;
case
2:
m
++;
n
++;
break;
}
case
4:
m
++;
break;
default:
break;
}
printf(
"m=%d,n=%d\n",
m,
n);
return
0;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
1.循环语句
while for do while
1).while语句
while语法结构:(while语句,可实现循环)
while(表达式)
循环语句;
练习:在屏幕上打印1~10
break停止
continue跳过,进行下一次循环的入口判断
结论:continue表示死循环(循环没结束)
边栏推荐
- Tencent always takes epoll, which is annoying
- 快速整明白Redis中的压缩列表到底是个啥
- leetcode:226. 翻转二叉树【dfs翻转】
- Ansi/ul 94 VTM vertical burning test for thin materials
- VS Code 设置代码自动保存
- 有人碰到过这种情况吗,oracle logminer 同步的时候,clob字段的值丢失
- 微信小程序 – 80个实用的微信小程序项目实例
- ROS2 Foxy depthai_ros教程
- Circular linked list--
- 强大、好用、适合程序员/软件开发者的专业编辑器/笔记软件综合评测和全面推荐
猜你喜欢

数据库之MHA高可用集群部署及故障切换

Manage nodejs with NVM (downgrade the high version to the low version)

数论基础及其代码实现

Look at the sky at dawn and the clouds at dusk, and enjoy the beautiful pictures

晓看天色暮看云,美图欣赏

79. 单词搜索【dfs + 回溯visit + 遍历起点】

Stack-------

Queue operation---

A hole in solder paste

MHA high availability cluster deployment and failover of database
随机推荐
Tencent Li Wei: deeply cultivate "regulatory technology" to escort the steady and long-term development of the digital economy
Share several tools for designing exquisite circuit diagrams
Ikvm of toolbox Net project new progress
工具箱之 IKVM.NET 项目新进展
Run PowerShell script prompt "because running script is prohibited on this system" solution
【MAUI】为 Label、Image 等控件添加点击事件
Teach you to complete the actual battle of image classification hand in hand -- Image Recognition Based on convolutional neural network
数据库之MHA高可用集群部署及故障切换
Scene function of wooden frame
Manage nodejs with NVM (downgrade the high version to the low version)
shell脚本导入存储过程到数据库
ROS2 Foxy depthai_ros教程
腾讯安全发布《BOT管理白皮书》|解读BOT攻击,探索防护之道
logstash报错:Cannot reload pipeline, because the existing pipeline is not reloadable
CPI tutorial - asynchronous interface creation and use
leetcode:329. The longest incremental path in the matrix [DFS + cache + no backtracking + elegance]
The difference between memcpy and strcpy
A hole in solder paste
R语言基于h2o包构建二分类模型:使用h2o.gbm构建梯度提升机模型GBM、使用h2o.auc计算模型的AUC值
Arm GIC (V) how arm TrustZone supports security interrupt analysis notes.