C 语言是一门结构化的程序化语言
1.顺序结构
2.选择结构
3.循环结构
# 什么是语句
C语言中有一个分号;隔开的就是一条语句。例如:
printf("hehe");
1+2;
# 分支语句
如果好好学习,校招时拿一个好的offer,走上人生巅峰
如果你不学习,毕业等于失业,回家卖红薯
这就是选择!
## 语句
//单分支
if(表达式)
语句;
if(表达式)
语句;
else
语句;
//多分支
if(表达式)
语句;
else if(表达式)
语句;
else
语句;
解释一下:如果表达式的结果为真,则语句执行
在C语言中:0表示假,非0表示真。
如果条件成立,要执行多条语句,怎应该使用代码块
#include<stdio.h>
int main()
{
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
return 0;
}
## 悬空else
代码:
#include<stdio.h>
int main()
{
int a=0;
int b=0;
if(a==1)
if(b==2)
printf("hehe\n");
else
prinf("haha\n");
return 0;
}
结果是打印haha。
//此类代码书写方式存在错误
## 书写方式的对比
//代码1
if(condition){
return x;
}
return y;
//代码2
if(condition)
{
return x;
}
else
{
return y;
}
//代码3
int num=1;
if(num==5){
printf("hehe\n");
}
//代码4
int num=1
if(5==num)
{
printf("hehe\n);
}
代码2和代码4更好,逻辑更加清晰,不容易出错。
## switch语句
switch语句也是一种分支语句。常用于多分支的情况
比如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日
switch(整型表达式)
{
语句项:
}
而语句项是什么呢?
//是一些case语句
case 整型常量表达式
语句;
在switch语句中的break
在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支
break语句的实际效果是把语句列表划分为不同的部分。
编程好习惯
在最后一个case语句的后面加上一条break语句。(之所以这么写是可以避免出现在以前的最后一个case语句后面忘了添加break语句)。
default子句
如果表达的值与所有case标签都匹配不上怎么办
其实也没什么,结构就是所有的语句都被跳过而已
程序并不会终止,也不会报错,因为这种情况在C中并不认为是错误。
default:
可以写在任何一个case标签可以出现的位置。
当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。
所以,每个switch语句中只能出现一个default语句。
但是它可以出现在语句列表中的任何一个位置。
编程好习惯:
在每一个switch语句中都放一条default子句是一个好习惯,甚至可以在后面再加一个break
# 循环语句
while
for
do while
## while循环
if(条件)
语句:
当条件满足的情况下,if语句后的语句执行,否则不执行。但是这个语句只会执行一次。
但是我们发现生活中很多例子是:同一件事情我们需要完成很多次。
那我们应该怎么做?可以用while循环
//while 语法结构
while(条件)
{
代码块
}
continue在while循环中的作用是:
continue适用于终止本次循环的,也就是说本次循环中continue后面的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
break在while循环中的作用是:
其实在循环中只要遇到break,就停止后期的所用循环,直至终止循环。所以,while中的break是用来永久终止循环的
### 示范代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int ret = 0;
int ch = 0;
char passward[20] = { 0 };
printf("请输入密码:>");
scanf("%s",passward);
while ((ch = getchar()) != '\n')
{
;
}
printf("请确认(Y/N):");
ret = getchar();
if (ret == 'Y') {
printf("确认成功!");
}
else {
printf("密码错误!");
}
return 0;
}
for循环
我们已经知道了while循环,但是我们为什么还要一个for循环呢?
for循环的语法:
for(表达式1:表达式2:表达式3)
循环语句:
表达式1为初始化部分,用于初始化循环变量的。表达式2为条件判断部分,用于判断循环时候终止。
表达式3为调整部分,用于循环条件的调整。
可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很有可能偏离较远,这样
查找修改就不够集中和方便。所以,for循环的风格更胜一筹。for循环使用的频率也最高
break和continue在for循环中
我们发现在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。但是还是有些差异。
for语句的循环控制变量
一些建议:
1.不可在for循环体内修改循环变量,防止for循环失去控制
2.建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
## do....while循环
do语句的语法:
do
循环语句;
while(表达式);