赞
踩
1、⼈们所使用的手机上安装的App通常指的是( )。
A.⼀款操作系统
B.⼀款应用软件
C.⼀种通话设备
D.以上都不对
2、下列流程图的输出结果是?( )
A. 9
B. 7
C. 5
D. 11
3、对包含n个元素的数组进⾏冒泡排序 ,平均时间复杂度一般为( )。
A.
O
(
n
)
O(n)
O(n)
B.
O
(
n
l
o
g
n
)
O(n log n)
O(nlogn)
C.
O
(
n
2
)
O(n^2)
O(n2)
D.以上都不正确
4、下列关于C++语⾔中指针的叙述 ,不正确的是( )。
A.可以定义指向int类型的指针。
B.可以定义指向⾃定义结构体类型的指针。
C.⾃定义结构体类型可以包含指针类型的元素。
D.不能定义指向void类型的指针 ,那没有意义。
5、下列关于C++语⾔中数组的叙述 ,不正确的是( )。
A.一维数组可以用来表示数列。
B.二维数组可以用来表示矩阵。
C.三维数组可以用来表示空间中物体的形状。
D.世界是三维的 ,所以定义四维数组没有意义。
6、下列关于C++语⾔中函数的叙述 ,正确的是( )。
A.函数调用前必须定义。
B.函数调用时必须提供足够的实际参数。
C.函数定义前必须声明。
D.函数声明只能写在函数调用前。
7、下列关于C++语⾔中函数的叙述 ,不正确的是( )。
A.两个函数的声明可以相同。
B.两个函数的局部变量可以重名。
C.两个函数的参数可以重名。
D.两个函数可以重名。
8、⼀个二维数组定义为 char array[3][10]; ,则这个二维数组占用内存的大小为( )。
A. 10
B. 30
C. 32
D. 48
9、如果n为int类型的变量,⼀个指针变量定义为int *p=&n; ,则下列说法正确的是( )。
A.指针变量p的值与变量n是相同
B.指针变量p的值与变量n的地址是相同的。
C.指针变量p指向的值为 'n'。
D.指针变量p指向的值与变量n的地址是相同的。
10、⼀个三维数组定义为 long long array[6][6][6]; ,则array[1][2][3]和array[3][2][1]在内存中的 位置相差多少字节?( )
A. 70字节
B. 198字节
C. 560字节
D.无法确定
11、如果 a 为 int 类型的变量,且 a 的值为6,则执⾏a = ~a; 之后,a的值会是( )。
A. -6
B. 6
C. -7
D. 7
12、⼀个数组定义为int a[5] = {1, 2, 3, 4, 5}; ,⼀个指针定义为int * p = &a[2]; ,则执⾏*p = a[1]; 后 ,数组a中的值会变为( )。
A. {1, 2, 2, 4, 5}
B. {1, 3, 3, 4, 5}
C. {1, 2, 3, 3, 5}
D. {1, 2, 4, 4, 5}
13、下列关于C++语言中异常处理的叙述,正确的是( )。
A.⼀个try⼦句可以有多个catch⼦句与之对应。
B.如果try⼦句在执⾏时发⽣异常 ,就⼀定会进⼊某⼀个catch⼦句执⾏。
C.如果try⼦句中没有可能发⽣异常的语句 ,会产⽣编译错误。
D. catch ⼦句处理异常后 ,会重新执⾏与之对应的try⼦句。
14、执⾏以下C++语⾔程序后,输出结果是( )。
#include <iostream>
using namespace std;
int main(){
int fib[10];
fib[0] = 0;
fib[1] = 1;
for (int i = 2; i < 10; i++)
fib[i] = fib[i - 1] + fib[i - 2];
cout << fib[10] << endl;
return 0;
}
A. 0
B. 5
C. 55
D. ⽆法确定。
15、在下列代码的横线处填写( ),完成对有 n个int类型元素的数组array 由⼩到⼤排序。
void BubbleSort(int array[], int n){
for (int i = n; i >= 2; i--)
for (_________) // 在此处填写代码
if (array[j] > array[j + 1]){
int t = array[j];
array[j] = array[j + 1];
array[j + 1] = t;
}
}
A. int j = 1; j < n; j++
B. int j = 0; j < n; j++
C. int j = 0; j < i - 1; j++
D. int j = 0; j < i; j++
1、在C++语言中 ,指针变量在逻辑上指向另⼀个变量在内存中的位置,指针变量本身不占用内存。
2、对N个元素的数组执⾏插⼊排序算法 ,通常的时间复杂度是 O ( N 2 ) O(N^2) O(N2)。
3、在C++语⾔中 ,每个变量都有其作用域。
4、在C++语⾔中 ,在函数调用时 ,通过引用传递的参数不会复制实际参数,因此不会额外占用内存。
5、在C++语⾔中,可以通过定义结构体,定义⼀个新的数据类型。
6、在C++语⾔中 ,可以定义结构体类型的数组变量 ,定义结构体时也可以包含数组成员。
7、如果希望记录10个最长为99字节的字符串,可以将字符串数组定义为 char s[10][100]; 。
8、一个可能抛出异常的函数,调用它的位置没有在try⼦句中,会引起编译错误。
9、==和:=都是C++语⾔的运算符。
10、通过使用文件重定向操作,可以将程序中输出到cout的内容输出到文件中,这是常用的记录程序运⾏日志的方法之⼀。
【问题描述】
N进制数指的是逢N进⼀的计数制。例如,⼈们日常⽣活中⼤多使用⼗进制计数,而计算机底层则⼀般使用二进制。除此之外,⼋进制和⼗六进制在⼀些场合也是常⽤的计数制(⼗六进制中,⼀般使用字母A 至F表⽰⼗⾄⼗五;本题中,⼗⼀进制到⼗五进制也是类似的)。
在本题中,我们将给出 N个不同进制的数。你需要分别把它们转换成⼗进制数。
【提示】
对于任意⼀个L位K进制数,假设其最右边的数位为第 0位,最左边的数位为第 L - 1 位,我们只需要将其第i位的数码乘以权值 K
i,再将每位的结果相加,即可得到原K进制数对应的⼗进制数。下⾯是两个例⼦:
1.⼋进制数1362 对应的⼗进制数为
1
×
8
3
+
3
×
8
2
+
6
×
8
1
+
2
×
8
0
=
754
1 × 8^3+3 × 8^2+6 × 8^1+2 × 8^0= 754
1×83+3×82+6×81+2×80=754;
2.⼗六进制数3F0 对应的⼗进制数为
3
×
1
6
2
+
15
×
1
6
1
+
0
×
1
6
0
=
1008
3 × 16^2+15 × 16^1+ 0 × 16^0= 1008
3×162+15×161+0×160=1008 。
【输入描述】
输⼊的第⼀⾏为⼀个⼗进制表示的整数N。接下来N⾏,每⾏⼀个整数K,随后是⼀个空格,紧接着是⼀个K进制数,表示需要转换的数。保证所有K进制数均由数字和⼤写字母组成,且不以0开头 。保证K进制数合法。保证N ≤ 1000 ;保证2 ≤ K ≤ 16。
保证所有K进制数的位数不超过9。
【输出描述】
输出N行,每⼀个十进制数,表⽰对应K进制数的十进制数值。
【样例输入 1】
2
8 1362
16 3F0
【样例输出 1】
754
1008
【样例输入 2】
2
2 11011
10 123456789
【样例输出 2】
27
123456789
【问题描述】
小明刚刚学习了三种整数编码方式:原码、反码、补码,并了解到计算机存储整数通常使用补码。但他总是觉得生活中很少用到231-1这么大的数,生活中常用的0 ~ 100这种数也同样需要用4个字节的补码表示,太浪费了些。热爱学习的小明通过搜索,发现了一种正整数的变长编码方式。这种编码方式的规则如下:
1.对于给定的正整数,首先将其表达为二进制形式。例如,(0){10} =(0){2},(926){10}=(1110011110){2}。
2.将二进制数从低位到高位切分成每组7 bit,不足7bit的在高位用0填补。例如,(0){2}变为0000000的一组,(1110011110){2}变为0011110和0000111的两组。
3.由代表低位的组开始,为其加入最高位。如果这组是最后一组,则在最高位填上0,否则在最高位填上1。于是,0的变长编码为00000000一个字节,926的变长编码为10011110和00000111两个字节。
这种编码方式可以用更少的字节表达比较小的数,也可以用很多的字节表达非常大的数。例如,987654321012345678的二讲制为(0001101 1011010 01101101001011 1110100 0100110 1001000 0010110 1001110){2}于是它的变长编码为(十六进制表示) CE 96 C8 A6 F4 CB B6 DA OD,共9个字节。
你能通过编写程序,找到一个正整数的变长编码吗?
【输入描述】
输⼊第⼀⾏ ,包含⼀个正整数N。约定0≤N≤1018。
【输出描述】
输出⼀⾏ ,输出N对应的变长编码的每个字节 ,每个字节均以2位⼗六进制表示(其中, A-F使⽤⼤写字母表⽰) , 两个字节间以空格分隔。
【样例输入 1】
0
【样例输出 1】
00
【样例输入 2】
926
【样例输出 2】
9E 07
【样例输入 3】
987654321012345678
【样例输出 3】
CE 96 C8 A6 F4 CB B6 DA 0D
1、
【答案】B
【考纲知识点】 计算机基础
【解析】本题属于考察计算机基础知识。APP是英语单词application的简写,代表应用软件的意思。
2、
【答案】A
【考纲知识点】 流程图和多层循环语句
【解析】本题属于考察计算机循环结构嵌套选择结构知识。根据流程图,n<=5时会一直循环,每次循环先判断是否满足mn>20的条件,然后对m进行不同的赋值。例如:n=1,m=1,mn不大于20,m会计算,赋值为3,依次类推,最终m的结果是9,选A。
3、
【答案】C
【考纲知识点】 冒泡排序
【解析】本题属于考察简单排序算法的时间复杂度,选C。
4、
【答案】D
【考纲知识点】 指针的概念及使用
【解析】本题属于考察计算机指针知识。可以指向void类型。
5、
【答案】D
【考纲知识点】 数组
【解析】本题属于考察计算机数组知识。世界可以用多维描述,定义四维也有意义。
6、
【答案】B
【考纲知识点】 函数的概念及使用
【解析】本题属于考察计算机函数知识。函数调用时如果缺少实参将不能正确运行。
7、
【答案】A
【考纲知识点】 函数的概念及使用
【解析】本题属于考察计算机函数知识。函数声明时不能相同。
8、
【答案】B
【考纲知识点】 二维数组知识
【解析】本题属于考察C++二维字符数组知识。内存大小和数组需要用的空间有关。3行10列,需要3*10=30个空间,选B。
9、
【答案】B
【考纲知识点】 指针
【解析】本题属于考察C++指针知识。指针的值保存的是变量的地址,所以选B。
10、
【答案】C
【考纲知识点】 三维数组
【解析】本题属于考察C++三维数组知识。数组是long long类型,每间隔一下数字就间隔8个字节,假设三维数组用长宽高来描述,array[0][0][0]到array[0][5][5]有36个元素,array[1][2][3]包含36+12+4=52个元素;到长度3宽度2高度1,包括36*3+12+2=122个元素,隔离70个元素,因此长度是560,选C。
11、
【答案】C
【考纲知识点】 位运算
【解析】本题属于考察C++位运算知识。6按位取反运算,注意符号位也取反,呈现的是补码,转换过来就是-7。具体过程:
00000110(取反操作)
11111001(补码)
11111000(补码-1=反码)
10000111(负数的原码,注意此时取反符号位不变)
12、
【答案】A
【考纲知识点】 指针和数组
【解析】本题属于考察C++指针和数组知识。P指针指向的是a[2],将a[1]的值赋值给p指向的变量a[2],数组中a[1]将等于a[2]。
13、
【答案】A
【考纲知识点】 异常处理
【解析】本题属于考察C++处理异常知识。A是正确的。B选项中,得到对应类型中的异常才能catch操作。
14、
【答案】D
【考纲知识点】 循环和一维数组的基本运用
【解析】本题属于考察C++循环结构和一维数组的知识。这是求斐波那契数列的代码,数组的范围是[0,9],所以对fib[10]操作后,越界访问结果无法确定。
15、
【答案】C
【考纲知识点】 函数和数组的知识
【解析】本题属于考察C++函数和数组的知识。题目已知,要求从小到大的冒泡排序,如果前一个比后一个大,就交换位置,外层循环从n开始,判断的区间逐渐减小,判断循环范围C正确。
1、
【答案】错误
【考纲知识点】 指针类型的概念
【解析】本题是C++指针类型的知识,指针是个变量,占用内存。
2、
【答案】正确
【考纲知识点】 排序算法
【解析】本题是C++排序算法的知识,插入排序常用时间复杂度是O(N2)
3、
【答案】正确
【考纲知识点】 变量
【解析】本题是C++变量的知识,变量都有作用域。
4、
【答案】错误
【考纲知识点】 函数
【解析】本题是C++函数的知识,传参时函数的参数也会是一个新的变量,占用内存。
5、
【答案】正确
【考纲知识点】 结构体
【解析】本题是C++语言的知识,定义结构体可以认为定义一个新的数据类型。
6、
【答案】正确
【考纲知识点】 结构体
【解析】本题是C++结构体的知识,可以包含数组。
7、
【答案】正确
【考纲知识点】 数组
【解析】本题是C++字符数组的知识,定义长度大于等于要求。
8、
【答案】错误
【考纲知识点】 函数
【解析】本题是C++函数的知识,编译不会报错。
9、
【答案】错误
【考纲知识点】 运算符
【解析】本题是C++语法的知识,==是运算符。
10、
【答案】正确
【考纲知识点】 文件操作
【解析】本题是C++文件操作的知识,正确。
1、
【题目大意】
1.有n个k进制的整数,将它们分别转换成对应的十进制。
【考纲知识点】
1.基本运算、输入输出语句、循环、进制转换的知识。
【解题思路】
1.按题目要求定义好需要的变量,并实现输入;
2.输入n行,每行2个整数,分别表示进制和要转换的数字;3.按求进制方法求即可。例如:
(
a
b
c
)
2
=
a
∗
2
2
+
b
∗
2
1
+
c
∗
2
0
(abc)_2=a*2^2+b*2^1+c*2^0
(abc)2=a∗22+b∗21+c∗20
#include <iostream>
#include <cstring>
using namespace std;
int trans_digit(int k, char c){
if (c <= '9')
return (c - '0');
return (c - 'A' + 10);
}
long long trans (int k, char str[]) {
int l = strlen(str);
long long res = 0, pw = 1;
for (int i = l - 1; i >= 0; i--){
res += pw * trans_digit(k, str[i]);
pw *= k;
}
return res;
}
int main(){
int n = 0;
cin >> n;
for (int t = 0; t < n; t++){
int k = 0;
char str[10];
cin >> k >> str;
cout << trans(k, str) << endl;
}
return 0;
}
2、
【题目大意】
1.给一个正整数,根据题目要求找它的变长编码,变长编码用16进制表示。
【考纲知识点】
1.基本运算、输入输出语句、一维数组、位运算的知识。【解题思路】
1.按题目要求定义好需要的变量,并实现输入;
2.根据题意,1、将n对应的二进制,每7位1组,保存起来;3.除了包含最高位那组,其他组最前面都增加1,例如中间一组是0001111,最前面加1变成10001111;
4.注意输出是先输出低位的数组,输出内容用16进制表示即可。
#include <iostream>
using namespace std;
void output_digit(int d){
if (d >= 10)
cout << char('A' + d - 10);
else
cout << char('0' + d);
}
void output_code (int s){
output_digit(s >> 4);
output_digit(s & 0x0f);
}
int main(){
long long n = 0;
cin >> n;
int split[10];
int l = 0;
while (n > 0){
split[l] = int(n & 0x7f);
n >>= 7;
l++;
}
for (int i = 0; i < l - 1; i++)
split[i] |= 0x80;
output_code(split[0]);
for (int i = 1; i < l; i++){
cout << " ";
output_code(split[i]);
}
cout << endl;
return 0;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。