1.bool类型
(1)bool只有true和false;在C语言中,true是1,false是0;除了0是false,其他非零情况都是true。
(2)在.c文件需要引入#include<stdbool.h>,在.cpp文件中可以直接使用。
2.关系表达式的运算结果是bool类型,其优先级如下:
T6的四个运算符优先级相同,T7的两个运算符优先级相同。
3.逻辑表达式的运算结果是bool值,逻辑运算符和其他运算符的优先级如下:
4.分支语句
(1)if_else使用时的注意事项
1)一个花括号就是一个代码块,良好的代码风格不管是一条语句还是多条语句都应该使用{}括起来。
2)使用if_else嵌套时,要注意if和else的嵌套问题。C语言规定,else总是和最近的if匹配。
3)if语句后面不能加;加了就成了空语句,不会执行本应该执行的代码。
(2)switch多分支结构
1)
2)注意事项
a)case后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何的变量。
b)default不是必须的。当没有default时,如果所有case匹配失败,那么在switch中就什么就不执行。接着执行后续代码。
5.函数初步
(1)形参和实参
(2)函数调用机制
1)建立栈空间;
2)保护现场:主调函数运行状态和返回地址入栈;
3)为被调函数中的局部变量分配空间,完成参数传递;
4)执行被调函数函数体;
5)释放被调函数中局部变量占用的栈空间;
6)恢复现场:取主调函数运行状态及返回地址,释放栈空间;
7)继续主调函数的后续语句。
6.循环语句
1}空语句:语句可以为空,也就是除了末尾处的分号以外什么符号都没有。在if语句后加空语句会导致条件语句不执行。在循环语句中使用空语句会导致死循环。
2)跳转语句:
a)break语句:语句只能用在switch语句和循环语句中,用来跳出switch语句或提前终止循环,转去执行switch语句或循环语句之后的语句。
b)continue语句:
语句只能用在循环语句中,用来终止此次循环。当程序执行到continue语句时,将跳过其后尚未执行的循环体语句,开始下一次循环。下一次循环是否执行取决于循环条件的判断。continue语句与break语句的区别在于,continue语句结束的是本次循环,而break结束的是本次循环。
c)goto语句:
该语句和标号语句一起使用,所谓标号语句是和标识符一起使用的语句,它控制程序从goto语句所在的地方转移到标号语句处。
d)return语句:
用于结束函数的执行,返回调用者,如果是主函数,则返回至操作系统。
7.示例。编写一个程序,输入一个年份和月份,判断该年该月有多少天。
#include<stdio.h>
bool IsLeapYear(int year) //该函数判断某年是否是闰年,是就返回true,不是就返回false;
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
return true;
}
else
{
return false;
}
}
int JudgeDay(int year, int month)//判断某年某月有多少天,返回天数
{
int days;
switch (month)//当case值匹配上时,不会继续匹配,而是接着执行下面的语句,直至遇到break为止
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2://是闰年就返回29天,不是就返回28天
{if (IsLeapYear(year))
{
days = 29;
}
else
{
days = 28;
}
break;
default:
printf("Input error!");
break;
}
}
return days;
}
int main()
{
int y, m, d;
printf("请依次输入年月:\n");
scanf_s("%d,%d", &y, &m);
d = JudgeDay(y, m);
printf("%d年%d月有%d天", y, m, d);
return 0;
}
}