1、顺序结构
计算机执行程序的步骤是从上到下依次执行。
2、选择结构
选择结构也叫条件控制语句,主要有if语句、if…else语句、条件表达式exp1? exp2:exp3、switch语句。
1)if语句、if…else语句
if语句主要有单分支、双分支和多分支三种,其对应的语法结构如下:
单分支:
if(表达式)
语句;
双分支:
if(表达式)
语句1;
else
语句2;
多分支:(此处仅举个例子,还有很多其他多分支情况)
if(表达式)
语句1;
else if(表达式)
语句2;
else
语句3;
举一个例子来看一下多分支选择的效果:
#include<stdio.h>
int main()
{int age=18;printf("请输入您的年纪:\n");scanf("%d", &age);if (age < 18)printf("未成年\n");else if (age >= 18 && age < 30)printf("青年\n");else if (age >= 30 && age < 50)printf("中年\n");else if (age >= 50 && age < 70)printf("年过半百\n");else if (age >= 70 && age < 200)printf("老年\n");elseprintf("输入年纪错误,请重新输入:\n");return 0;
}
运行结果:
如果条件成立,要执行多条语句,应当使用代码块,即用大括号将语句括起来。
if (表达式1)
{语句列表1;
}
else
{语句列表2;
}
在使用if语句时,一个很重要的问题就是if和else的配对问题,else是和离它最近的if配对的,找准if和else的配对对理解整个选择语句的逻辑十分重要。
在if语句的判断中,建议将常量放在左侧,变量放在右侧。如下例所示:
#include<stdio.h>
int main()
{int num = 6;if (6 == num)printf("haha\n");return 0;
}
练习:输出1-100之间的奇数:
#include<stdio.h>
int main()
{int i = 0;while (i <= 100){if (i % 2 == 1)printf("%d ", i);i++;}return 0;
}
运行结果:
当然,也有很多其他的做法,再举一例:
#include<stdio.h>
int main()
{int i = 1;while (i <= 100){i += 2;printf("%d ", i);}return 0;
}
运行结果:
2)条件表达式exp1? exp2:exp3
表达式1为真则执行表达式2,那么表达式2为整个条件表达式的值。
表达式1为假则执行表达式3,那么表达式3为整个条件表达式的值。
3)switch语句
switch语句也是一种分支语句,多用于多分支的情况。
语法结构:
switch(整形表达式)
case(整形常量表达式):
break;
switch()
{
语句项;
}
switch后面的整形表达式表示该表达式计算的结果一定得是整形;整形常量表达式要求case后面的表达式的结果一定要是整形且必须是常量。
我们以星期几这种多分支结构来表现一下switch语句在多分支循环方面的优势。
#include<stdio.h>
int main()
{int day;printf("请输入星期几:\n");scanf("%d", &day);switch (day){case(1):printf("星期一\n");case(2):printf("星期二\n");case(3):printf("星期三\n");case(4):printf("星期四\n");case(5):printf("星期五\n");case(6):printf("星期六\n");case(7):printf("星期日\n");}return 0;
}
运行结果:
当然,大家也能看出来,这个程序是不能够正确表达出我们想要的结果的,我们只想输出星期三,但是却输出了很多不想要的结果,这个时候,我们就不得不引出switch语句中的break。
在switch语句中,我们没法直接实现分支,搭配break使用才能实现真正的分支。看看接下来这个程序:
#include<stdio.h>
int main()
{int day;printf("请输入星期几:\n");scanf("%d", &day);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;
}
运行结果:
需要注意的是:不一定要每个case后面都要有break,主要是根据你需要的逻辑去设置的,举个例子,我们要实现以下功能:输入星期一至星期五时,打印工作日;输入星期六星期日时,打印休息日。
#include<stdio.h>
int main()
{int day;printf("请输入星期几:\n");scanf("%d", &day);switch (day){case(1):case(2):case(3):case(4):case(5):printf("工作日\n");break;case(6):case(7):printf("休息日\n");break;default:printf("输入错误,请重新输入:\n");break;}return 0;
}
运行结果:
上述代码块中同时引入了default,default是默认的意思,简单介绍一下default字句的作用:
default字句是用来应对与所有case标签的值都不能匹配的情况的,将“default;”写在任何case标签可以出现的位置,当switch表达式的值并不匹配所有case标签的值的时候,这个default字句就会被执行。所以每个switch语句只能有一个default字句。不过它的位置并不进行限制,可以出现在语句列表的任何位置,而且语句流会像贯穿每一个case语句一样贯穿default语句。
以上内容整理自:
c语言编程 C语言入门 c语言(C语言程序设计教程 c语言视频教程 c语言零基础入门教程 学习c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言_哔哩哔哩_bilibili学习C语言学习C语言程序设计教程 c语言视频教程 谭浩强 c语言学习 谭浩强 谭浩强c语言零基础入门教程 c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言学习C语言程序设计教程 c语言视频教程 c语言零基础入门教程 c语言 c语言视频教程 c语音 C语言教程 C语言编程项目 C语言学习 C语言 c语言 C语言程序设计https://www.bilibili.com/video/BV1q54y1q79w?share_source=copy_web
坚持学习,坚持输出,如果读者有发现问题,欢迎批评指正哦!