C语言是结构化的程序设计语言,这里的结构指的是:顺序结构、选择结构、循环结构
如图:
1.顺序结构
遵循线性顺序,程序自上而下依次执行
int main()
{
printf("hehe1\n");
printf("hehe2\n");
printf("hehe3\n");
printf("hehe4\n");
printf("hehe5\n");
printf("hehe6\n");
return 0;
}
以上代码运行结果如图
2. 选择结构(分支结构)
2.1 if语句
2.1.1 if
if语句的表达形式如下:
if(表达式)
语句
在C语言中用数字0表示假,非0表示真
表达式成立(为真),语句执行; 表达式不成立(为假),语句不执行;
2.1.2 else
如果 if 不成立,那么执行 else 语句
if(表达式)
语句1
else
语句2
2.2 switch语句
switch语句是一种特殊形式的 if…else 结构,用于判断条件有多个结果的情况。
2.2.1 switch
switch (expression) //表达式值为几,就执行对应的case分支
case value 1: statement
case value 2: statement
default: statement //表达式的值与case不对应,就执行default分支
注意:
- expression必须是整型表达式(int 和 char型 ) ,因为字符是按照ASCII码进行存储的,ASCII码值也是整型;
- case后的值,必须是整型常量表达式(整型数字 和 表整型达式)
- case和后面的数字之间必须有空格
2.2.2 break
switch语句有分支效果,只有在switch语句中使用break才能跳出switch语句
eg.随意输入一个整数值,计算除3之后的余数
不加break:
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch (n % 3)
{
case 1:
printf("余数为1\n");
case 2:
printf("余数为2\n");
case 0:
printf("整除,余数为0\n");
}
return 0;
}
运行结果:
没有实现分支效果
加上break:
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch (n % 3)
{
case 1:
printf("余数为1\n");
break;
case 2:
printf("余数为2\n");
break;
case 0:
printf("整除,余数为0\n");
break;
}
return 0;
}
运行结果:
成功实现分支效果。
2.2.3 default
switch表达式中的值无法匹配case值,这个时候要么不处理,要么就是加入default子句;
switch语句中case语句和default语句没有顺序要求,一般是将default语句放在最后处理。
eg.
输入1-5,输出“工作日”;输入6-7,输出“休息日”
不加default 运行结果:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
switch (n)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
switch (n)
{
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;
}
3. 循环结构
循环结构主要是:for循环、while循环、do while循环
3.1 for循环
3.1.1 语法形式
for(表达式1;表达式2;表达式3;)
语句;
表达式1 用于循环变量的初始化
表达式2 用于循环结束条件的判断
表达式3 用于循环变量的调整
3.1.2 执行流程
eg.在屏幕上打印1-10
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
3.2 while循环
3.2.1 语法形式
while(表达式)
语句
while后面的表达式条件满足,会死循环打印
3.2.2 执行流程
eg. 在屏幕上打印1-10
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ",i);
i++;
}
return 0;
}
3.3 do while循环
3.3.1 语法形式
do
语句;
while(表达式);
do while 循环,先直接进入循环体,执行循环语句;然后再执行while后的判断表达式,表达式为真,就会执行下一次,表达式为假,则不再继续循环。
do while 循环体至少会被执行一次
3.3.2 执行流程
eg, 在屏幕上打印1-10
#include<stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ",i);
i++;
} while (i <= 10);
return 0;
}
4.补充
4.1 关系操作符
C语言中用于比较的表达式,称为“关系表达式”(relation expression),里面使用的运算符就被称为“关系运算符”(relation operator),主要有以下6个:
- > 小于运算符
- < 大于运算符
- >= 小于等于运算符
- <= 大于等于运算符
- == 等于运算符
- != 不相等运算符
注意:
- 关系表达式通常返回0(假)或1(真)
- 关系运算符从左到右计算
- 多个运算符不宜联用
4.2 条件操作符
条件操作符也叫“三目操作符”,需要接收三个操作数,形式如下:
exp1 ? exp2 : exp3
如果,exp1 为真,exp2计算,否则exp3计算
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d",&a);
b = a > 5 ? 3 : -3;
//a>5,b=3
//a!>5,b=-3
printf("%d\n",b);
return 0;
}
4.3 逻辑操作符
逻辑操作符:与(&&)或(||)非(!)
&&:与运算符,并且的意思,两侧表达式均为真才是真;
|| :或运算符,或者的意思,两侧表达式有一个为真,则为真;
! :逻辑取反运算符,改变单个表达式的真假
4.4 break和continue语句
break:break彻底终止循环。
continue:continue跳过本次循环后边的代码,直接进行下一次循环的判断
以 while循环中的break和continue举例,如下:
#include<stdio.h>
int main()
{
int i = 0;
while (i <= 10)
{
if (i == 5)
break;//i等于5后,执行break语句,循环终止
printf("%d ",i);
i = i++;
}
return 0;
}
continue:
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;
//当i等于5后,就执行continue,直接跳过continue的代码,去循环的地方判断;
//因为在这里跳过了i=i+1,所以i一直为5,程序陷入死循环
printf("%d ", i);
i = i++;
}
return 0;
}
以上内容,参考了鹏哥C语言的课件,以及网友分享的知识
还在学习,肯定有描述的不全面、不清楚的地方,欢迎评论区沟通、指正!