当前位置:网站首页>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表示死循环(循环没结束)
边栏推荐
- 系统测试UI测试总结与问题(面试)
- 木架的场景功能
- 硬阈值(Hard Thresholding)函数解读[通俗易懂]
- [encounter Django] - (II) database configuration
- Like the three foot platform
- (mixed version 1) multiple TXT text to one table
- SQLAlchemy在删除有外键约束的记录时,外键约束未起作用,何解?
- Tencent security and KPMG released a regulatory technology white paper to analyze the "3+3" hot application scenarios
- 第十四章 信号(四)- 多进程任务示例
- There are risks in trading
猜你喜欢

redis探索之缓存击穿、缓存雪崩、缓存穿透

第十四章 信号(四)- 多进程任务示例

【脑洞大开】《西潮》及《走向世界丛书》

logstash报错:Cannot reload pipeline, because the existing pipeline is not reloadable
![[Suanli network] technological innovation of Suanli Network -- key technology of operation service](/img/80/6e3648c88d309516d4bc29db9c153c.jpg)
[Suanli network] technological innovation of Suanli Network -- key technology of operation service

MHA high availability cluster deployment and failover of database

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

leetcode:241. 为运算表达式设计优先级【dfs + eval】

【开发大杀器】之Idea

Mobile note application
随机推荐
从数据库中更新一条数据,用cdc会同时获得op字段分别为d和c的两条数据吗?我记得之前是只有op为u
"Analysis of 43 cases of MATLAB neural network": Chapter 40 research on prediction of dynamic neural network time series -- implementation of NARX based on MATLAB
我选的热门专业,四年后成了“天坑”
There are risks in trading
Router.use() requires a middleware function but got a Object
运行Powershell脚本提示“因为在此系统上禁止运行脚本”解决办法
Wechat applet - 80 practical examples of wechat applet projects
项目部署,一点也不难!
redis探索之缓存击穿、缓存雪崩、缓存穿透
Huawei interview question: Recruitment
Circular linked list--
Ansible Playbook
BIM and safety in road maintenance-buildSmart Spain
Chain storage of binary tree
基因检测,如何帮助患者对抗疾病?
硬阈值(Hard Thresholding)函数解读[通俗易懂]
VS Code 设置代码自动保存
Operations related to sequence table
简单斐波那契(递推)
The difference between memcpy and strcpy