C语言有多种语句,大致分为以下五类:
1.表达式语句
2.函数调用语句
3.控制语句
4.复合语句
5.空语句
这里主要介绍控制语句,控制语句大致分为三类:分支语句(条件判断语句if,switch)、循环语句(do...while,while,for)、转向语句(break,goto,continue,return)
如果A,则A。如果不A,则B。
在C语言中,0表示假,非0表示真
else的匹配:else是与离它最近且在上的if相匹配的
- #include
- int main()
- {
- int day = 0;
- 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;
- default:
- printf("错误\n");
- break;
- }
- return 0;
- }
如果没有break,会继续执行语句。
那么continue可以放在switch语句中吗?不可以,continue只能在循环中使用

default可以出现在switch中的任何位置。
- while()
- {
-
-
- }
while循环中只要遇到break,就直接停止后面的循环,直接跳出
while循环中遇到continue,会跳过本次循环中continue后的代码,直接跳转回判断部分
- for(初始化部分; 判断部分; 调整部分)
- {
-
-
- }
当初始化部分不写时,就默认是其初始化值
不写判断部分,默认为真
for循环中的break、continue与while循环中一样
注意,若赋值为0,即出现k=0,则改条件为0
- do
- {
-
-
- }while();
do后的内容至少执行一次
注意,do...while循环中的continue不会跳过while();部分。
break仍然是直接跳出
- #include
- int main()
- {
- char input[10] = {0};
- system("shutdown -s -t 60");
- again:
- printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
- scanf("%s", input);
- if(0 == strcmp(input, "我是猪"))
- {
- system("shutdown -a");
- }
- else
- {
- goto again;
- }
- return 0;
- }
函数是一段用于实现某种功能的代码,一般会有参数和返回值,并且可以对实现细节进行封装和隐藏
C语言中的函数大致分为两类:库函数和自定义函数
函数由返回类型、函数名、参数、函数体构成
为了方便我们实现某些功能和提高可移植性以及程序效率
C语言中的库函数:
1.IO函数
2.字符串操作函数
3.字符操作函数
4.内存操作函数
5.时间/日期函数
6.数学函数
7.其他库函数
查询库函数的几种途径:
即自己定义的函数
函数一般都需要传参
真实传给函数的参数叫实参,实参可以是常量、变量、表达式、函数等,无论实参是哪种类型的量,在进行函数调用时,都必须有确定的值,以便把这些值传给形参
形参是指函数名后括号中的变量,因为形参只有在函数被调用的过程中才实例化(分配内存单元),形参在函数调用完成之后就自动销毁了,因此形参只在函数中有效
函数的调用有传值调用和传址调用
函数的形参和实参分别占有不同的内存块,对形参的修改不会影响实参
传址调用是把函数外部创建的变量的内存地址传给函数参数的一种调用函数的方式,这种传参可以让函数和函数外部的变量建立起真正的联系,也就是在函数内部可以直接操作函数外部的变量
嵌套调用:即一个函数里嵌套使用另一个函数。注意:函数可以嵌套调用,但是不能嵌套定义
链式访问:把一个函数的返回值作为另外一个函数的参数。
声明:顾名思义,声明
定义:顾名思义,定义
注意:声明不开辟空间,定义才开辟
把大事化小,通过对某段程序的重复多次运算来解决问题
递归有两个必要条件:
1.存在限制条件,并且当满足这个限制条件时,递归便不再继续
2.每次递归调用之后越来越接近这个限制条件
一般不推荐用递归,因为递归可能会使用很长的时间
迭代:迭代与递归不同,递归是重复一件事,迭代是在重复中得到反馈并进行改进
迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。
函数递归的几个经典题目:
1.汉诺塔问题
2.青蛙跳台阶问题