一、分支语句的易错点
1、在C语言中,0为假,非0表示真
2、if(i=2)和if(i==2)的系列解释
int i=5;
if(i=5) ==》 if(5);//相当于直接是肯定了,而且i的值会变成5!
if(i=0) ==》 if(0);//相当于直接是否定了,而且i的值会变成0!
if(i==5) ==》 if(1);
if(i==2) ==》 if(0);
3、if、elseif、else,这些是只能走一条路的,只能选其一!但是并列的if是逐个判断的!
4、条件操作符(三目操作符)
(1)b = a > 5 ? 3 : -3;
是这样的意思:
if (a > 5)
b = 3;
else
b = -3;
(2)c = a > b ? a : b;
是这样的意思:实现找两个数中较大值。
5、闰年
(1)闰年判断的规则:
- 能被4整除并且不能被100整除是闰年
- 能被400整除是闰年
(2)代码
if((year%4==0 && year%100!=0) || (year%400==0))
6、短路
(1)“||”左侧为真,右侧短路
(2)“&&”左侧为假,右侧短路
(3)没被短路的语句会真的执行造成变量数值的印象,但是被短路的语句是真的不会执行也不会造成变量数值的变化的
经典例题:
(1)分析:
a++,a先使用后++,a是0,会短路&&右侧,所以该语句结束,a再++,因此结果为:i=0,a=1,b=2,c=3,d=4
(2)分析:
a++,a先使用后++,a是0,不会短路,a变为1,继续,++b,b先++在使用,b变成3,会短路“||”右侧,因此语句不运行了,结果为:i=1,a=1,b=3,c=3,d=4
7、switch
(1)switch 后的expression 必须是整型表达式,也要有“{}”
(2)case 后的值,必须是整形常量表达式,别忘记“:”
二、循环语句易错点
1、在for中,break直接跳出,但是continue会执行for的C语句(for(A,B,C))
2、n位数要拆开每个数字:“/10”要(n-1)次,“%10”要n次
3、goto语句
用法:
goto next;
next:
尽量少用!
三、随机数
#include
srand((unsigned int)time(NULL));
//随机值是从a到b
int a = a + rand() % (b - a + 1);