1.【单选题】
if ( a== 1)
if ( b == 2 )
std::cout<<“a=1 b=2”;
else
std::cout<<“a不等于1”;
以下说法错误的是?
A 如果a=1,b=2 输出为a=1 b=2
B 如果a=1,b=3 输出为 a不等于1
C 如果a=2,输出为a不等于1
解析:这道题if( b == 2) 和 底下的else是一起的,不要搞混了。所以选项C是错误的,应该没有任何输出。
2.【单选题】
if(a=b)
std::cout<<"a=b";
else
std::cout<<"a!=b";
以下说法正确的是:
A 不管什么时候,都输出a=b
B b!=0的时候输出a=b
C 不管什么时候,都输出a!=b
解析:if( a = b) 就是将a 赋值给 b,然后转化为bool值,可以等效于if(b)。所以这道题选择B。
3.【单选题】
int c{};
int a{500};
bool b{};
b = a;
a = b;
c = 5 + a++;
c = ?
A 6 B 507 C 506 D 7
解析:这道题考察数据类型转换,b = a,b就是true,为1,所以a = 1,c = 6,答案选A。
4.【设计题】
设计一个程序XXX公司年底要发鼓励奖,发放原则是:
(1)年龄小于18岁,成绩大于等于90分
(2)年龄大于等于18岁,成绩小于90分
(要求给出大神级代码)
解析:代码如下
int main()
{
int age = 27, exam = 89;
// 码农写法
if ((age < 18) && (exam >= 90) || (age >= 18) && (exam < 90))
{
std::cout << "码农写法:发奖励!\n";
}
// 大神写法 代码速度提升3倍以上
if ((age < 18) ^ (exam < 90))
{
std::cout << "大神写法:发奖励!\n";
}
}
5.【单选题】
int c,a{1000},b{2000};
if(a>b)
c=a;
else
c=b;
可以改写成什么?说法错误的是
A.c=a>b?a:b; B. c=b<a?a:b; C.c=b<a?b:a;
解析:这道题考察三元运算符,很简单错误的选项为C。
6.【单选题】
以下代码那种写法更符合大神写法的标准:
A. if(a&&(c*c+520+c++))
B. if((c*c+520+c++)&&a)
解析:答案为A。因为与运算,全为真,才为真。先判断a,如果不符合就不用再判断了,我们要把执行成本最低的排在最前面,可以节省大量的时间。
7.【多选题】
和a>b等价的表达式是
A: b<a
B !(a<=b)
C b<=a
解析:这道题考察逻辑理解,答案选择A和B。
8.【单选题】
Int a,b{100},c{200};
a=b>c?b:c+500;
a=?
A 100 B 600 C 700 D 200
解析:这道题考察运算符的优先级,三元运算符的优先级要小于加法,所以这道题选C。
9.【单选题】
if(你爱我)买房;买车;
这句伪代码说的是:
A. 不管你爱不爱我,都要买车,爱的话就买个房
B. 如果你爱我就给我买房,买车
C. 如果你爱我就给我买房,不爱就买车
解析:这道题考察语言逻辑,要注意买房的后面有个分号,所以选A。
10.【单选题】
假设if((a)&&(b))能够执行
那 么:
A. a > 0 b > 0
B. a != 0 b != 0
C. a > 0 b < 0
解析: f((a)&&(b))
能够执行意味着 a
和 b
都被视为“真”值。在布尔上下文中,非零值通常被视为“真”,而零值被视为“假”。所以选B。