Level 5(C++)单选题
一、注释
1.在C++语言中,以下哪个是在代码后添加单行注释( )
(A)/ (B)#
(C)// (D)&
2.在C++语言中,哪个是多行注释( )
(A)/ / (B)/* */
(C)/* /* (D)*/ */
二、数组
1.申请100个”小房子”,用来存储整数,以下正确的是( )
(A)int a100;
(B)int a[100];
(C)float a[100];
(D)int a(100);
2.在C 语言中,引用数组元素时,其数组下标的数据类型允许是( )
(A)只能整型常量
(B)实型表达式
(C)整型常量或整型表达式
(D)任何类型的表达式
3.定义如下变量和数组:
int i;
int x[4][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
则下面语句的输出结果是( )
for(i = 0;i < 4;i++)
printf(“%d “,x[i][3-i]);
(A)1 5 9 13 (B)1 6 11 16
(C)4 7 10 13 (D)4 8 12 16
4.若有说明:int a [ 10 ];则对a 数组元素的正确引用是( )
(A)a[10] (B)a[3.5]
(C)a(5) (D)a[9]
5.以下能对一维数组a 的所有元素进行正确初始化的语句是( )
(A)int a[ 10 ] = ( 0 , 0 , 0 , 0, 0 ) ;
(B)int a{10} = { };
(C)int a[ ]= { 0 } ;
(D)int a[10] = (10*1);
6.以下叙述中正确的是 ( )
(A)数组下标的下限由数组中第 1 个被赋值元素的位置决定
(B)数组下标的下限是 1
(C)数组元素的下标下限由第一个非零元素的位置决定
(D)char c1,c2,*c3,c4[40];是合法的变量定义语句
7.以下叙述中正确的是 ( )
(A)语句 char a[3];a = “AB”;是合法的,因为数组有三个字符空间的容量,可以保存两个
(B)语句 char a[2] = {“A”,”B”}; 定义了一个包含两个字符的数组
(C)语句 int a[] = {0};是不合法的,遗漏了数组的大小
(D)语句 int a[8] = {0};是合法的
8.下列数组定义语句中,不合法的是( )
(A)int a[3] = { 0, 1, 2, 3 };
(B)int a[] = { 0, 1, 2 };
(C)int a[3] = { 0, 1, 2 };
(D)int a[3] = { 0 };
9.已知char a[][50]= { “fortran”, ” basic”, “pascal”, “java”, “c++” };,则 cout << a[3];的显示结果是( )
(A)pasal (B)一个地址值
(C)java (D)c++
10.下列关于数组概念的描述中,错误的是( )
(A)数组中所有元素类型是相同的
(B)数组定义后,它的元素个数是可以改变的
(C)数组在定义时可以被初始化,也可以不被初始化
(D)数组元素的个数与定义时的每维大小有关
11.定义一个能存储20个整数的整型数组,并且数组名为sum,以下代码正确的是( )
(A)int a[20];
(B)int sum[19];
(C)int sum[20];
(D)int a[21];
12.从键盘读入十个整数存入数组num中,以下代码正确的是( )
(A) int num[10];
for(int i = 0;i <= 10;i++)
{
scanf(“%d”,&num[i]);
}
(B) int num[10];
for(int i = 0;i < 9;i++)
{
scanf(“%d”,&num[i]);
}
(C) int num[10];
for(int i = 0;i <= 9;i++)
{
scanf(“%d”,&num[i]);
}
(D) int num[10];
for(int i = 0;i < 10;i++)
{
scanf(“%d”,num[i]);
}
13.定义一个数组如下:int a[11];该整型数组a最多能同时存储几个整数?( )
(A) 9
(B)10
(C)11
(D)12
三、二维数组
1.定义一个可以存储3行5列的二维字符数组,以下正确的是( )
(A)int a[3][5];
(B)char a[3][5];
(C)char a[3][6];
(D)int a[3][6];
2. 以下叙述中正确的是 ( )
(A)语句 int a[][3]={1,2,4,5};是错误的初始化形式
(B)在逻辑上可以把二维数组看成是一个具有行和列的矩阵或表格
(C)语句 int a[4][3]={{1,2},{4,5}};是错误的初始化形式
(D)语句 int a[4][3]={1,2,4,5};是错误的初始化形式
3.以下对二维数组a 的正确表示是( )
(A)int a[3] [ ];
(B)float a(3,4);
(C)double a[1] [4];
(D)float a ( 3 ) ( 4 );
4.若有说明:int a [3][4];则对a 数组元素的正确引用是( )
(A)a [2][4] (B)a[1,3]
(C)a[4-2][0] (D)a(2)(4)
5.若有说明:int a[3][4];则对a 数组元素的非法引用是( )
(A)a[0][2*1] (B)a [1][3]
(C)a[4-2][0] (D)a [0][4]
6.以下能对二维数组a 进行正确初始化的语句是( )
(A)int a[2][ ]={{1,0,1},{5,2,3}};
(B)int a[ ][3]={{1,2,3},{4,5,6}};
(C)int a[2][4]={1,2,3},{4,5},{6}} ;
(D)int a[ ][3]={{1,0,1}{ } , {1,1}} ;
7.以下不能对二维数组a 进行正确初始化的语句是( )
(A)int a[2][3]={0} ;
(B)int a[ ][3]={{1,2},{0}} ;
(C)int a[2][3]={{1,2},{3,4},{5,6}} ;
(D)int a[ ][3]={1,2,3,4,5,6} ;
8.若有说明:int a[3][4]={0};则下面正确的叙述是 ( )
(A)只有元素a[0][0]可得到初值。
(B)此说明语句不正确
(C)数组a 中各元素都可得到初值,但其值不一定为0
(D)数组a 中每个元素均可得到初值0
9. 在main函数中若有说明:int a[3][4];则数组a 中各元素 ( )
(A)可在程序的运行阶段得到初值0
(B)可在程序的编译阶段得到初值0
(C)不能得到确定的初值
(D)可在程序的编译或运行阶段得到初值0
10.若二维数组a 有m 列,a[0][0]为第1个位置,a[0][1]为第2个位置,则计算任一元素a[i][j]在数组中位置的公式为 ( )
(A)i * m + j
(B)j * m + i
(C)i * m + i – 1
(D)i * m + j + 1
11.以下对二维数组a进行正确初始化的是( )
(A)int a[2][3]={{1,2},{3,4},{5,6}};
(B)int a[ ][3]={1,2,3,4,5,6 };
(C)int a[2][ ]={1,2,3,4,5,6};
(D)int a[2][ ]={{ 1,2},{3,4}};
12. 在定义int a[5][6];后,a[0][0]为第1个位置,a[0][1]为第2个位置,数组a中的第10个元素是( )
(A)a[2][5] (B)a[2][4]
(C)a[1][3] (D)a[1][5]
13.int num[20][20];二维数组num最多存储几个整型数据( )
(A)20
(B)400
(C)19
(D)380
14.已知int a[ ][3]={{0,1},{2,3,4},{5,6},{7}}; 则 a[2][1]的值是( )
(A)0 (B)2
(C)6 (D)7
15.下面选项中等价的是( )
(A)int a[2][3]={1,0,2,2,4,5};与int a[2][]={1,0,2,2,4,5};
(B)int a[][3]={1,0,2,2,4,5};与int a[2][3]={1,0,2,2,4,5};
(C)int a[2][3]={3,4,5};与int a[][3]={3,4,5,6};
(D)int a[2][3]={0,1};与int a[2][3]={{0},{1}};
16.下列对字符数组进行初始化的语句正确的是( )
(A)char a[] = “Hello”;
(B)char a[][] = {‘H’,’e’,’l’,’l’,’o’};
(C)char a[5] =”Hello”;
(D)char a[2][5] = {“Hello”,”World”};
17.将二维字符数组a中第0行第4列赋值为’#’,以下正确的是 ( )
(A)a[4][0] = ‘#’;
(B)a[0][4] = ‘#’;
(C)a[0][4] = “#”;
(D)a[4][0] = “#”;
四、字符串
1.下列字符列中,可以作为″字符串常量″的是( )
(A) ABC (B)″xyz″
(C)′uvw′ (D)′a′
2.下面不正确的字符串常量是( )
(A)‘rst’ (B)”14‘14″
(C)”0″ (D)” ”
3.以下叙述中正确的是 ( )
(A)字符串常量”str1″的类型是:字符串数据类型
(B)有定义语句:char str1[ ] = “str1″;数组 str1 将包含 4 个字符
(C)字符数组的每个元素可存放一个字符,并且数组最后一个元素必须是‘\0’字符
(D)下面的语句用赋初值方式来定义字符串是没有语法错误的
char str1[ ]={‘s’,’t’,’r’,’1′,’\0′};
4.以下叙述中正确的是 ( )
(A)函数调用 strlen(s);会返回字符数组 s 实际占用内存的大小(以字节为单位)
(B)当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和
(C)两个字符串可以用关系运算符进行大小比较
(D)C++本身没有提供对字符串进行整体操作的运算符
5.以下叙述中正确的是 ( )
(A)对于字符串常量”string!”;系统已自动在最后加入了‘\0’字符,表示串结尾
(B)对于一维字符数组,不能使用字符串常量来赋初值
(C)语句 char str[10] = “string!”;和 char str[10] = {“string!”};并不等价
(D)在语句 char str[10] = “string!”;中,数组 str 的大小等于字符串的长度
6.设有定义 char str[] = “Hello”;
则语句printf(“%d %d”,sizeof(str),strlen(str));的输出结果是 ( )
(A)6 6 (B)6 5
(C)5 6 (D)5 5
7.若有以下说明:
char s1[ ] = {“tree”},s2[ ] = {“flower”}; ,
则以下对数组元素或数组的输出语句中,正确的是( )
(A)printf(“%s%s”,s1[5],s2[7]);
(B)printf(“%c%c”,s1,s2);
(C)puts(s1);puts(s2);
(D)puts(s1,s2);
8.给出以下定义:
char x[ ] = “abcdefg”;
char y[ ] = {‘a’,’b’,’c’,’d’,’e’,’f’,’g’};
则正确的叙述为 ( )
(A)数组x和数组y等价
(B)数组x和数组y的长度相同
(C)数组x的长度大于数组y的长度
(D)数组x的长度小于数组y的长度
9.合法的数组定义是( )
(A)int a[6] = {“string”};
(B)int a[5] = {0,1,2,3,4,5};
(C)char a = {“string”};
(D)int a[ ] = {0,1,2,3,4,5};
10.给出下面定义:char a[ ] = “abcd”;char b[ ] = {‘a’,’b’,’c’,’d’};
则下列说法正确的是( )
(A)数组a与数组b等价
(B)数组a和数组b的长度相同
(C)数组a的长度大于数组b的长度
(D)数组a的长度小于数组b的长度
11.设char s1, s2;分别指向两个字符串,可以判断字符串s1的字典序是否大于字符串s2的表达式为( )
(A)strcmp(s1,s2) < 0
(B)strcmp(s1,s2) == 0
(C)strcmp(s1,s2) > 0
(D)strcmp(s2,s1) > 0
12.设char s1, s2;分别指向两个字符串,可以判断字符串s1和s2是否相等的表达式为( )
(A)s1 = s2
(B)strlen(s1,s2)
(C)strcpy(s1,s2) == 0
(D)strcmp(s1,s2) == 0
13.设有char s1 = “ABCDE”, s2 = “ABCDE”,s3 = s1;,下列表达式中值等于true的是( )
(A)strcmp(s1,s2)
(B)strcmp(s1,s3) == 1
(C)strcmp(s2,s3) == -1
(D)strcmp(s1,s3) == 0
14.运行下面程序段的输出结果是( )
char s1[10] = {‘S’,’e’,’t’,’\0′,’u’,’p’,’\0′};
printf(“%s”,s1);
(A)Set (B) Setup
(C) Set up (D) ‘S”e”t’
15.以下程序段的输出结果是( )
char s[ ] = “an apple”;
printf(“%d\n”,strlen(s));
(A)7 (B)8
(C)9 (D)10
16.若有说明:char c[10]={‘E’,’a’,’s’,’t’,’\0′};,则下述说法中正确的是( )
(A)c[7]不可引用
(B)c[6]可引用,其值为空格符
(C)c[4]不可引用
(D)c[4]可引用,其值为空字符
17.若有说明char c[7] = {‘s’,’t’,’r’,’i’,’n’,’g’};则对元素的非法引用是( )
(A)c[0] (B)c[9-6]
(C)c[4*2] (D)c[2*3]
18.如有说明:char s1[5],s2[7]; ,要给数组s1和s2整体赋值,下列语句中正确的是( )
(A)s1 = getchar(); s2 = getchar();
(B)scanf(“%s%s”,s1,s2);
(C)scanf(“%c%c”,s1,s2);
(D)gets(s1,s2);
19.以下程序输出的结果是( D )
char str[ ] = “1a2b3c”;
int i;
for(i = 0;str[i] != ‘\0’;i++)
if(str[i] >= ‘0’ && str[i] <= ‘9’)
printf(“%c”,str[i]);
(A)123456789
(B)1a2b3c
(C)abc
(D)123
20.当接收用户输入的含有空格的字符串时,应使用( )函数
(A)gets( )
(B)getchar( )
(C)scanf( )
(D)printf( )
21.定义一个数组s,并将字符串”hello”存入数组s,下列语句正确的是( )
(A)int s[5] = “hello”;
(B)char s[5] = “hello”;
(C)int s[6] = “hello”;
(D)char s[6] = “hello”;
22.求字符串长度的函数是( )
(A)len() (B)strlen()
(C)Strlen() (D)strcat()
23.char s1[50] = “Hello,Aha World!”;字符串s1的长度是( )
(A)14
(B)15
(C)16
(D)50
24.已知s1,s2是字符串,可以将s1复制给s2的语句是( )
(A)strcpy(s1,s2);
(B)strcpy(s2,s1);
(C)strlen(s1,s2);
(D)strcmp(s1);
25.函数调用:strcat(strcpy(str1,str2),str3)的功能是( )
(A)将串str1复制到串str2中后再连接到串str3之后
(B)将串str1连接到串str2之后再复制到串str3之后
(C)将串str2复制到串str1中后再将串str3连接到串str1之后
(D)将串str2连接到串str1之后再将串str1复制到串str3中
五、逻辑运算符
1.在下列运算符中,( )优先级最高
(A)<= (B)=
(C)+ (D)
2.已知x = 43,ch =’A’,y = 0;则表达式(x >= y && ch < ‘B’&& !y)的值是( )
(A)0 (B)语法错
(C)1 (D)”假”
3.设变量m,n,a,b,c,d均为0,执行(m = a == b) || (n = c == d)后,m,n的值是( )
(A)0,0 (B)0,1
(C)1,0 (D)1,1
4.设有代码”int a = 5;”,则执行了语句”a += a -= a * a;”后,变量a的值是( C )
(A)3 (B)0
(C)-40 (D)–12
5.有如下程序段:
int a = 14,b = 15,x;
char c = ‘A’;
x = (a && b ) && (c < ‘B’);
执行该程序后,x的值为( )
(A)ture (B)flase
(C)0 (D)1
6.设a是整型变量,执行(a = 4 * 5,a * 2)后,则表达式a + 6的值是( )
(A)20 (B)26
(C)40 (D)46
7.设有:int a = 1,b = 2,c = 3,d = 4,m = 2,n = 2;执行(m = a > b)&&(n = c< d)后n的值为( )
(A)1 (B)2
(C)3 (D)4
8.设int k = 7,x = 12;则能使值为3的表达式是( )
(A)x %= (k %= 5) (B)x %= (k – k % 5)
(C)x %= k – k % 5 (D)(x %= k) – (k %= 5)
9.设有语句int x = 3,y = 4,z = 5;则下面表达式中值为0的是( )
(A)’x’ && ‘y’ (B)x <= y
(C)x | | y + z && y – z (D)!((x < y) && !z | | 1)
10.判断char型变量n是否为小写字母的正确表达式为( )
(A)’a'<= n <= ‘z’ (B)(n >= a)&&(n <= z)
(C)(’a’>= n)| |(’z'<= n) (D)(n >= ‘a’)&&(n <= ‘z’)
11.在下列运算符中,( )优先级最低
(A)! (B)&&
(C)!= (D)=
12.已知int i = 1, j = 2;,则表达式 ++i + j 的值为( )
(A)1 (B)2
(C)3 (D)4
13.已知 int i = 0, j = 1, k = 2;,则逻辑表达式 ++i || –j && ++k 的值为( )
(A)0 (B)1
(C)2 (D)3
14.执行下列语句后,x的值是( ),y的值是( )
int x, y;
x = y = 1; ++x || ++y;
(A)不确定 (B)0
(C)1 (D)2
15.设x为整型变量,不能正确表达数学关系 1< x < 5 的C++逻辑表达式是( )
(A)1 < x < 5 (B)x == 2 || x == 3 || x == 4
(C)1 < x && x < 5 (D)!(x <= 1)&& !(x >= 5)
16.以下符号中为逻辑与的是( )
(A)&& (B)||
(C)& (D)%
17.请问经过表达式a = 5 ? 0 : 1的运算,变量a的最终值是( )
(A)6 (B)1
(C)0 (D)5
18.设已有说明语句”int a = 5;”,则执行语句”a += a *= a %= 3;”后,a的值为 ( )
(A)8 (B)18
(C)0 (D)2
19.设x和y均为bool型变量,则x && y为真的条件是( )
(A)它们均为真 (B)其中一个为真
(C)它们均为假 (D)其中一个为假
六、函数
1.以下叙述中正确的是 ( )
(A)任何情况下都不能用函数名作为实参
(B)简单递归不需要明确的结束递归的条件
(C)函数的递归调用不需要额外开销,所以效率很高
(D)函数既可以直接调用自己,也可以间接调用自己
2.以下关于建立函数的目的的说法正确的是( )
(A)提高程序的执行效率
(B)提高程序的可读性
(C)提高运行速度
(D)减少程序文件所占内存
3.若调用一个void类型函数,且此函数中没有return 语句,则正确的说法是该函数( )
(A)没有返回值
(B)返回若干个系统默认值
(C)能返回一个用户所希望的函数值
(D)返回一个不确定的值
4.以下正确的说法是 ( )
(A)定义函数时,形参的类型说明可以放在函数体内
(B)return 后边的值不能为表达式
(C)如果函数值的类型与返回值类型不一致,以函数值类型为准
(D)如果形参与实参的类型不一致,以实参类型为准
5.C++规定,函数返回值的类型是由( )
(A)return 语句中的表达式类型所决定
(B)调用该函数时的主调函数类型所决定
(C)调用该函数时系统临时决定
(D)在定义该函数时所指定的函数类型所决定
6.以下叙述中正确的是 ( )
(A)函数名允许用数字开头
(B)函数调用时不必区分函数名称的大小写
(C)函数调用时,函数名必须与被调用的函数名完全一致
(D)在函数体中只能出现一次 return 语句
7.在c++中,若定义一个函数的返回类型为void,则以下叙述正确的是( )
(A)函数返回值需要强类型转换
(B)函数不执行任何操作
(C)函数本身没有返回值
(D)函数不能修改实际参数的值
8.函数的参数可以有几个( )
(A)1个 (B)2个
(C)没有参数 (D)可以有,可以没有
9.所有在函数中定义的变量,都是( )
(A)全局变量
(B)局部变量
(C)静态变量
(D)寄存器变量
10.在C++中不返回任何类型的函数应该说明为( )
(A)int
(B)char
(C)void
(D)double
11.决定C++语言中函数的返回值类型的是( )
(A)return语句中的表达式类型
(B)调用该函数时系统随机产生的类型
(C)调用该函数时的主调用函数类型
(D)在定义该函数时所指定的数据类型
13.设存在函数int max(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是( )
(A)int m = max(22,max(59,70));
(B)int m = max(max(22,59),70);
(C)int m = max(22,59,70);
(D)int m = max(59,max(22,70));
14.函数的返回值类型可以是( )
(A)int
(B)float
(C)char
(D)以上三项都可以
七、复杂循环(嵌套循环)
1.输入一个数a,输出a有几个约数,以下代码正确的是( )
(A)int a,count = 0;
cin >> a;
for(int i = 1;i <=a ;i++)
{
if(i % a == 0)
count = count + 1;
}
cout << count;
(B)int a,count = 0;
cin >> a;
for(int i = 1;i <= a;i++)
{
if( a % i == 0)
count = count + 1;
}
cout << count;
(C)int a,count = 0;
cin >> a;
for(int i = 1;i <= i;i++)
{
if( a % i == 0)
count = count + 1;
}
cout << count;
(D)int a,count = 0;
cin >> a;
for(int i = 1;i <= a;i++)
{
if( a % i = 0)
count = count + 1;
}
cout << count;
2.要求以下程序的功能是计算:s = 1 + 1 / 2 + 1 / 3 + .. + 1 / 10
int n;
float s;
s = 1.0;
for(n = 10; n > 1; n–)
s = s + 1 / n;
cout << s << endl;
return 0;
程序运行后输出结果错误,导致错误结果的程序行是( )
(A)s = 1.0;
(B)for(n = 10; n > 1; n–)
(C)s = s + 1 / n;
(D)cout << s << endl;
3.输入5个数,相邻的三个数相乘,输出对10取余的最大数,以下程序正确的是( )
(A)int a[10],maxn,t;
for(int i = 1;i <= 5;i++)
cin >> a[i];
for(int i = 1;i <= 5;i++)
{
t = (a[i] * a[i+1] * a[i+2]) % 10;
if(t > maxn)
maxn = t;
}
cout << maxn;
(B)int a[10] = {0},maxn,t;
for(int i = 1;i <= 5;i++)
cin >> a[i];
for(int i = 1;i <= 2;i++)
{
t=(a[i] * a[i + 1] * a[i + 2]) % 10;
if(t > maxn)
maxn = t;
}
cout << maxn;
(C)int a[10],maxn = 0;
for(int i = 1;i <= 5;i++)
cin >> a[i];
for(int i = 1;i <= 3;i++)
{
t=(a[i] * a[i + 1] * a[i + 2]) / 10;
if(t > maxn)
maxn = t;
}
cout << maxn;
(D)int a[10],maxn = 0,t;
for(int i = 1;i <= 5;i++)
cin >> a[i];
for(int i = 1;i <= 3;i++)
{
t=(a[i] * a[i + 1] * a[i + 2]) % 10;
if(t > maxn)
maxn = t;
}
cout << maxn;
4.在下列选项中,没有构成死循环的程序段是( )
(A)int i = 100;
while (1)
{
i = i % 100 + 1;
if (i > 100) break;
}
(B)for( ; ; );
(C)int k = 1000;
do {
++k;} while (k >= 1000);
(D)int s = 36;
while (s)
{
–s;
}
5.下面程序的输出结果是( )
int i;
for(i = 1;i <= 5;i++)
{
if (i % 2)
cout << “*”;
else
continue;
cout << “#”;
}
cout<<“$”;
(A)*#*#*#$
(B)#*#*#*$
(C)#*#*$
(D)*#*#$
6.若i为整型变量,则以下循环语句的循环次数是 ( )
for(i = 2;i == 0;)
cout << i–;
(A)无限次 (B)0次
(C)1次 (D)2次
7.对于for(表达式1;;表达式3)可理解为( )
(A)for(表达式1;0;表达式3)
(B)for(表达式1;1;表达式3)
(C)for(表达式1;表达式1;表达式3)
(D)for(表达式1;表达式3;表达式3)
8.以下程序段的执行结果是( )
int i,j,m = 0;
for(i = 1;i <= 15;i += 4)
for(j = 3;j <= 19;j += 4)
m++;
cout << m << endl;
(A)12 (B)15
(C)20 (D)25
9.下面程序的输出结果是( )
int i;
for(i = 1;i < 6;i++)
{
if (i % 2 != 0)
{
cout << “#”;
continue;
}
cout << “*”;
}
(A)#*#*#
(B)#####
(C)*****
(D)*#*#*
10.下面程序的输出结果是( )
int x = 10,y = 10,i;
for(i = 0;x > 8;y = ++i)
cout << x– << ” “<< y <<” “;
(A)10 1 9 2 (B)9 8 7 6
(C)10 9 9 0 (D)10 10 9 1
11.执行以下程序后,输出的结果是( )
int y = 10;
do {
y–;
}while (–y);
cout << y–;
(A)-1 (B)1
(C)8 (D)0
12.有如下程序
int n = 9;
while(n > 6)
{
n–;
cout << n;
}
该程序段的输出结果是( )
(A)987 (B)876
(C)8765 (D)9876
13.有如下程序
int i,sum = 0;
for(i = 1;i <= 3;sum++)
{
sum += i;
}
cout << sum;
该程序的执行结果是( )
(A)6 (B)3
(C)死循环 (D)0
14.以下循环体的执行次数是( )
int i,j;
for(i = 0,j = 1; i <= j + 1; i += 2, j–)
cout << i << endl;
(A)3 (B)2
(C)1 (D)0
15.下面程序的输出结果是( )
int i,k = 0, a = 0, b = 0;
for(i = 1;i <= 4;i++)
{
k++;
if (k % 2 == 0)
{
a = a + k;
continue;
}
b = b + k;
a = a + k;
}
cout << “k=” << k << ” a=” << a << ” b=” << b;
(A)k=5 a=10 b=4
(B)k=3 a=6 b=4
(C)k=4 a=10 b=3
(D)k=4 a=10 b=4
16.执行下面程序段后,k的值是( )
int i,j,k;
for(i = 0,j = 10;i < j;i++,j–)
k = i + j;
(A)9 (B)11
(C)8 (D)10
17.阅读以下程序,程序运行后的输出结果是( )
int x;
for(x = 5;x > 0;x–)
if (x– < 5)
cout << x << “,”;
else
cout << x++ << “,”;
(A)4,3,2
(B)4,3,1,
(C)5,4,2
(D)5,3,1,
18.以下程序段的输出结果是( )
int k,n,m;
n = 10;m = 1;k = 1;
while (k <= n)
{
m *= 2;k += 4;
}
cout << m;
(A)4 (B)16
(C)8 (D)32
19.观察下面这段代码,运行结果正确的是( )
for(int i = 1;i <= 4;i++)
{
for(int j = 0;j <= 4;j++)
{
cout << “#”;
}
cout << endl;
}
()
####
####
####
####
(B)
#####
#####
#####
#####
(C)
#####
#####
#####
#####
#####
(D)
####
####
####
####
####
20.输出如下图形,下列代码错误的是( )
*
**
***
****
(A)for(int i = 1;i <= 4;i++)
{
for(int j = 1;j <= i;j++)
{
cout << “*”;
}
cout << endl;
}
(B)for(int i = 0;i <= 3;i++)
{
for(int j = 0;j <= i;j++)
{
cout << “*”;
}
cout << endl;
}
(C)for(int i = 1;i <= 4;i++)
{
for(int j = i;j >= 1;j–)
{
cout << “*”;
}
cout << endl;
}
(D)for(int i = 1;i <= 4;i++)
{
for(int j = 0;j <= i;j++)
{
cout << “*”;
}
cout << endl;
}
21.以下不是无限循环的是( )
(A)for(int i = 1;i <= 3;)
{
cout << “*”;
}
(B)while(1)
{
cout << “*”;
}
(C)for(int i = 1;;i++)
{
if(i < 0)
{
break;
}
cout << “*”;
}
(D)int i = 1;
while(i <= 3)
{
cout << “*”;
i++;
}
22.输出下图的数字三角形,下列哪种写法是正确的( )
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
(A)for(int i = 0;i <= 4;i++)
{
for(int j = 1;j <= i;j++)
{
cout << i << ” “;
}
cout << endl;
}
(B)for(int i = 0;i < 5;i++)
{
for(int j = 1;j <= i;j++)
{
cout << i << ” “;
}
cout << endl;
}
(C)for(int i = 1;i <= 5;i++)
{
for(int j = 1;j <= i;j++)
{
cout << i << ” “;
}
cout << endl;
}
(D)for(int i = 1;i <= 5;i++)
{
for(int j = 1;j < i;j++)
{
cout << i << ” “;
}
cout << endl;
}
八、指针和链表
1.下列哪个是不正确的( )
(A)静态指针可以是整型
(B)int * p 是定义一个指针p
(C)p = &a,这里p就等于a的值
(D)指针是一个指示器,它告诉程序在内存的哪块区域可以找到数据
2.以下程序输出结果是( )
int n;
int *Pointer;
int main()
{
Pointer = &n;
n = 15;
printf(“n:%d\n”,n);
printf(“*Pointer:%d\n”,*Pointer);
*Pointer = 25;
printf(“n:%d\n”,n);
return 0;
}
(A)n:15
*Pointer:15
n:25
(B)n:15
*Pointer:15
*n:15
(C)n:15
*Pointer:0
n:15
(D)n:0
Pointer:15
n:25
3.下列关于指针类型的描述哪个是正确的( )
(A)(const int) * Pointer = & SomeNumber, Pointer是指向一个整型常量,Pointer为常量,可修改。
(B)(const int) * Pointer = & SomeNumber, Pointer是指向一个整型常量,*Pointer为常量,不可修改。
(C)const(int *) Pointer = & SomeNumber, Pointer为常量,可修改。
(D)const(int *) Pointer = & SomeNumber, (int *)Pointer为常量,不可修改。
4.下列关于指针的初始化哪个是不正确的( )
(A)int * p = NULL ,NULL是特殊的地址
(B)int a; int * p = &a; p初始化为a的地址
(C)int * p = new(int) ,申请一个空间给p,*p内容不确定
(D)对于定义的局部指针变量,其内容(地址)是固定的
5.下列关于链表不正确的是( )
(A)链表的第一个结点称为表头
(B)链表的最后一个结点称为表尾
(C)在表尾结点中,由于指针域不指向任何结点,所以不放东西
(D)指向表头的指针head称为头指针,存放了表头的地址
6.数组和链表都可以用于存储一组彼此有关联的数据,以下说法中是不正确的是( )
(A)数组占用一块连续的存储区域,链表可能占用若干不连续的存储区域
(B)数组和链表所占用的存储区域均不能在程序运行期间动态的分配
(C)数组中的数据可以随机存取或顺序存取,链表中的数据只能顺序存取
(D)数组的长度是固定的,链表的长度是不固定的
7.下列关于malloc函数说法错误的是( )
(A)malloc函数原型为void*malloc(unsigned int size);
(B)malloc的作用是在内存的动态存储区中分配一个长度为size的连续空间
(C)malloc函数是一个指针型函数,返回的指针指向该分配域的结尾位置
(D)malloc的全称是memory allocation(动态内存分配)
8.下列malloc与new的区别错误的描述是( )
(A)malloc是libc里面实现的一个函数,new本身不是函数
(B)new依赖于头文件
(C)new返回指定类型的指针,malloc是强行转换为实际类型的指针
(D)malloc只管分配内存,并不能对所得的内存进行初始化
九、堆、栈
1.以下关于堆、栈说法错误的是( )
(A)栈内存是一片内存区域
(B)栈是先进后出的数据结构
(C)堆是线性数据结构
(D)堆的STL包含于algorithm头文件中。
十、STL基础(string、vector)
1.在c++中STL是( )的缩写
(A)Sort The Library
(B) Standard Template Library
(C) Seven T-shirt Lady
(D) SevenTh Library
2.下面关于STL 哪个是错误的( )
(A)STL是 C++ 标准库的一部分,不用单独安装。
(B)STL是 C++ 从C语言中继承来的。
(C)STL 组件主要包括容器,迭代器、算法和仿函数。
(D)STL 从根本上讲是”容器”的集合,也是组件的集合。
3.下面STL 的容器中,哪一个作用跟数组最为相似( )
(A)vector
(B)list
(C)map
(D)set
4.下面STL 的容器中,哪一个经常用来实现队列( )
(A)vector
(B)queue
(C)map
(D)set
5.下面STL 的容器中,如果要储存一个班级学生的学号姓名住址等信息,哪一个最为合适( )
(A)vector
(B)deque
(C)map
(D)list
6.下列关于容器vector错误的是( )
(A)vector
(B)vector定义后,其长度还可以变化。
(C)vector在尾部增加或删除元素的效率最高。
(D)vector不能在非尾部增加或删除元素。
7.下列函数可以用来统计string的容量是( )
(A)size()
(B)leng()
(C)length()
(D)capacity()
8.关于vector和数组,下面说法错误的是( )
(A)都是对同一种类型的数据进行储存。
(B)都可以用下标操作进行处理。
(C)都可以用size函数获取长度。
(D)都可以用迭代器进行操作。
9.关于vector和数组,下面说法正确的是( )
(A)vector跟数组一样没有方法获取其长度。
(B)两者的长度在初始化以后都是固定不变的。
(C)数组可以添加新元素,vector不行。
(D)都可以用下标操作进行处理。
10.定义v是vector后,v.empty()可( )
(A)将v全部清空。
(B)用于判断是否v为空。
(C)返回v[0]的值。
(D)将v内所有的值用NULL替换。