【if语句】
1.真假与01的关系?
在C语言中,非零值被视为真,而零被视为假。因此,1代表真,0代表假
2.这个写法正确吗:else (a < 10)
不正确。正确的写法应该是 else if (a < 10)
3.if的分支有多条语句怎么办?
如果if分支中有多个语句,应该使用花括号 {} 将它们括起来形成一个复合语句
4.悬空else问题?
(1)悬空else问题发生在嵌套if语句中,编译器会根据就近原则将else与最近的未匹配的if配对
(2)为了避免歧义,应使用花括号明确配对关系
5.要注意代码规范,善用tab键,增强代码可读性噢
(1)是的,良好的代码缩进可以显著提高代码的可读性
(2)通常,每个缩进级别对应一个制表符(tab)或几个空格
【关系操作符】 >、<、>=、<=、==、!=
6.关系操作符的优先级和结合性?
关系操作符的优先级低于算术操作符,高于赋值操作符。它们从左到右结合
7.a = 5 和 a == 5 的区别?
(1)a = 5 是赋值语句,将5赋给变量a
(2)a == 5 是比较操作符,检查a的值是否等于5
8.x < y < z和 x < y && y < z是等价的吗?为什么推荐 5 == a 这种写法?
(1)x < y < z 不是有效的C语言表达式,因为它会首先计算 x < y,得到一个真假值,然后尝试比较这个真假值与z,这是不合法的
(2)x < y && y < z 是正确的,它检查x是否小于y,并且y是否小于z。
推荐 5 == a 而不是 a == 5 是因为前者可以在忘记写等号时产生编译错误,后者则可能默默地执行赋值操作,导致难以发现的错误
【条件操作符】
9.三目运算符是什么?(可以用,但不要嵌套太多噢)
(1)三目运算符是一种条件表达式,它根据一个条件的真假来返回两个可能的值中的一个
(2)语法形式为 condition ? value1 : value2,如果条件为真,则返回value1,否则返回value2
【逻辑运算符】
10.有哪些逻辑操作符?你能画出他们的真值表吗?
逻辑操作符有 &&(逻辑与)、||(逻辑或)和 !(逻辑非)
真值表如下:
A | B | A && B
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1
A | B | A || B
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1
A | !A
0 | 1
1 | 0
11.短路是什么?有哪些情况会短路?
(1)逻辑运算中的短路是指当某个条件确定了整个表达式的值时,就不再计算后续的条件
例如,在逻辑与(&&)运算中,如果第一个条件为false,则整个表达式肯定为false,就不会计算第二个条件
(2)逻辑或(||)运算也有类似的短路效应
12.C语言如何实现判断闰年呢?
闰年的判断规则是:能被4整除但不能被100整除,或者能被400整除。可以使用以下代码:
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
{
// 是闰年
}
else
{
// 不是闰年
}
【switch语句】
13.如何把if-else语句改写为switch语句?
(1)if-else语句可以根据不同的条件执行不同的代码块,而switch语句则是根据表达式的值来选择执行哪个case
(2)如果if-else语句的条件是某个变量的不同取值,可以改写为switch语句
例如:
if (condition)
{
// do something
} else if (other_condition)
{
// do something else
}
else
{
// do something different
}
可以改写为:
switch (variable)
{
case value1:
// do something
break;
case value2:
// do something else
break;
default:
// do something different
}
14switch后的表达式类型可以是什么?
switch后的表达式可以是整型、字符型,以及枚举类型
15.case后面值的类型可以是什么?
case后面的值也应该是整数常量表达式
16.default是什么? switch的运行顺序?
(1)default是当所有case都不匹配时的默认分支(即default是switch语句中的一个可选部分,用于处理没有与任何case匹配的情况)
(2)switch的运行顺序是从匹配的case开始执行,直到遇到break语句或switch结束