【笔试刷题训练】day_04

选择题
C/C++中各种进制的表示方法
二进制:在数字的末尾加b , 如
八进制:在数字前面加数字0 , 如0123
十进制:数字本身 , 如123
十六进制:数字前面加0x 或者 数字后面加h , 如0x123、123h
对应输出格式:
%d:十进制方式输出
%o:八进制方式输出
%x:十六进制方式输出
所以显而易见 , 题目所给两个数分别是8进制和10进制 , 十进制123转化为8进制为173 , 所以选择C
题目要求把flag的第二个bit位置为0
置位一般使用0和& , 复位一般使用1和&
那么与flag运算的数的第二个bit位应该是0 , 而2的二进制位0000 0010 , 显然把2按位取反 , 就满足 , 除了第二个bit位为0 , 其他位都是1 , 与flag做与运算 , 只会把flag的第2个bit位置为0 , 其他位保持不变
所以选择A
const在 * 之后:const修饰的是指针 , 是一个指针常量 , 指针不能被改变 , 指针指向的内容可以改变 , 如int* const p
const在*之后:const修饰的指针指向的内容 , 是一个常量指针 , 指针可以改变 , 指针指向的内容不可以改变 , 如const int* p或者int const* p
题目描述为一个指针常量 , 所以答案选择B
a的类型是int*
&a的类型是int(*)[5]
所以 , *(a+1)得到的为3 , *(p-1)得到的为9 , 答案选C
所以在func中 , m指向"" , m++之后 , m指向""
而m是char**类型 , 解引用得到char类型 , char类型输出的时候是输出字符串 , 所以得到 “” , 答案选择A
x&(x-1)的作用是:消去二进制中最右边的一个1
所以该语句配合count++的作用就是 统计二进制1的个数
9999转化为二进制为:10 0111 0000 11 11 一共8个1 所以选A
结构体A:
int: 0 1 2 3short: 4 5空6 7int: 8 9 10 11char:12一共13字节 , 对齐后:16字节
结构体B:
int: 0 1 2 3short: 4 5char: 6空7int: 8 9 10 11共12字节 , 已对齐
所以答案为 C
编程题 1. 计算糖果
题目链接
1. 枚举 + 反向带入验证
#includeusing namespace std;int main(){int AsubB,BsubC,AaddB,BaddC;cin>>AsubB>>BsubC>>AaddB>>BaddC;//计算出A B Cint A = (AsubB + AaddB)/2;int B = (BsubC + BaddC)/2;int C = (BaddC - BsubC)/2;//此时算出的A B C 可能是截断之后的数! //所以重新带入计算if(AsubB == A - B&& BsubC == B - C&& AaddB == A + B&& BaddC == B + C){cout << A <<" "<
2. 两个方法算出的B相同
因为 , 只有一组A B C 满足条件 , 如果满足条件 , 那么两种方法计算出来的B一定相同 , 否则不相同
#includeusing namespace std;int main(){int AsubB,BsubC,AaddB,BaddC;cin>>AsubB>>BsubC>>AaddB>>BaddC;//计算出A B Cint A = (AsubB + AaddB)/2;int B1 = (BsubC + BaddC)/2;int B2 = (AaddB - AsubB)/2;int C = (BaddC - BsubC)/2;if(B1 == B2){cout << A <<" "<
2. 进制转换
题目链接
思路很简单
M%N得到余数 , 放入栈中M/=N , 进入下一次循环 , 直到M为0依次把栈中的字符拼接到结果字符串的后面
注意:
【【笔试刷题训练】day_04】