一、单选题
1、有以下程序,程序运行后输出的结果是(C)
main()
{
int k=5,n=0;
while(k>0)
{
switch(k)
{
default:break;
case 1: n += k;
case 2:
case 3: n += k;
}
k--;
}
printf("%d\n",n);
}
A 0
B 4
C 7
D 5
2、若 fp 是指向某文件的指针,且已读到文件末尾,则库函数 feof(fp) 的返回值是()
A EOF
B -1
C 非零值
D NULL
3、有以下程序段,while 循环执行的次数是()
int k = 0;
while(k = 1)
k++;
A 无限次
B 有语法错误,不能执行
C 一次也不执行
D 执行一次
4、ASCLL码(含扩展)可以用一个字节表示,则可以表示的 ASCLL 码值个数为(C)
A 1024
B 156
C 128
D 64
5、有以下程序,程序的输出结果是()
main()
{
int a[] = {2,4,6,8,10},y = 0,x,*p;
p = &a[1];
for(x=1;x<3;x++)
y += p[x];
printf("%d\n",y);
}
A 10
B 12
C 14
D 16
6、设有以下函数,则下面对函数指针的定义和赋值均是正确的是()
void fun(int n,char* s){ … }
A void (* pf)(); pf = fun;
B void *pf(); pf = fun;
C void *pf(); pf = fun;
D void ( pf)(int,char); pf = &fun;
7、有以下程序段,以下叙述正确的是()
typedef struct NODE
{
int num;
struct NODE *next;
}OLD;
A 以上的说法形式非法
B NODE 是一个结构体类型
C OLD 是一个结构体类型
D OLD 是一个结构体变量
8、设有如下程序段,则执行 p=s;语句后,以下叙述正确的是()
char s[20] = "Beijing",*p;
p = s;
A s 数组中元素的个数和 p 所致字符串的长度相等
B s 和 p 都是指针变量
C 数组 s 中的内容和指针变量 p 中的内容相等
D 可以用 *p 表示 s[0]
9、当执行下面的程序时,如果输入 ABC,则 输出结果是
#include "stdio.h"
#include "string.h"
mian()
{
char ss[10] = "1,2,3,4,5";
gets(ss);
struct(ss,"6789");
printf("%s\n",ss);
}
A ABC6789
B ABC67
C 12345ABC6
D ABC456789
10、C++ 中不应该在如下哪个方法中抛出异常(B)
A 构造函数
B 析构函数
C 虚方法
D 以上答案都不对
11、读取二进制文件的函数调用形式为:fread(buffer,size,count,fp); 其中 buffer 代表的是(C)
A 一个文件指针,指向带读取的文件
B 一个整型变量,代表带读取的数据的字节数
C 一个内存块的首地址,代表读入数据存放的地址
D 一个内存块的字节数
12、下列函数的功能是()
fun(char* a,char* b)
{
while((*b = *a)!='\0')
{
a++;
b++;
}
}
A 将 a 所指字符串赋给 b 所指空间
B 使指针 b 指向 a 所指字符串
C 将 a 所指字符串和 b 所指字符串进行比较
D 检查 a 和 b 所指字符串中是否有 ‘\0’
13、若有定义语句: int a[4] [10],*p, *q[4]; 且 0 <= i <= 4,则错误的赋值是()
A p = a;
B q[i] = a[i];
C p = a[i];
D p = &a[2] [1]
14、设函数中有整形变量 n,为保证其在未赋值的情况下初始值为 0,应该选择的存储类别是 ()
A auto
B register
C static
D auto 或 register
15、下列选项中,关于虚函数的描述正确的是()
A 子类不能调用父类 private 的虚函数
B 虚函数不能定义为 private
C 虚函数不可以被子类覆盖
D 以上描述都不对
16、已知三个字符:a、Z 和 8,它们的 ASCII 码值升序排列,结果是()
A 8、a、Z
B a、8、Z
C a、Z、8
D 8、Z、a
17、若变量已正确定义并赋值,下面符合 C 语言语法的表达式是()
A a := b+1
B a = b = c + 1
C int 18.5 % 3
D a = a + 7 = c + b
18、下列关于栈的描述正确的是()
A 在栈中只能插入元素而不能删除元素
B 在栈中只能删除元素而不能插入元素
C 栈是特殊的线性表,只能在一端插入或删除元素
D 栈是特殊的线性表,只能在一端插入元素,而在一端删除元素
19、在面向对象方法中,不属于“对象”基本特点的是()
A 一致性
B 分类性
C 多态性
D 标识唯一性
20、以下能正确定义且赋初值的语句是()
A int n1 = n2 = 10;
B char c = 32;
C float f = f + 1.1;
D double x = 12.3 E2.5;
21、以下程序,程序运行后的输出结果是()
A 1,2,1,2
B 1,2,2,1
C 2,1,2,1
D 2,1,1,2
22、当把以下四个表达式用作 if 语句的选择表达式时,有一个选项与其它三个选项含义不同,这个选项是()
A k%2
B K%2 == 1
C (K%2) != 2
D !K%2 == 1
23、在面向对象方法中,实现信息隐蔽是依靠(C)
A 对象的继承
B 对象的多态
C 对象的封装
D 对象的分类
24、有以下程序,程序运行后输出的结果是()
main()
{
char p[]={'a','b','c'};
q[]="abc";
printf("%d %d\n",sizeof(p),sizeof(q));
}
A 4 4
B 3 3
C 3 4
D 4 3
25、下列叙述正确的是()
A 顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B 顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C 顺序存储结构能存储有序表,链式存储结构不能存储有序表
D 链式存储结构比顺序存储结构节省存储空间
26、对于友元描述正确的是()
A 友元是本类的成员函数
B 友元不是本类的成员函数
C 友元不是函数
D 友元不能访问本类私有成员
27、有以下程序,其输出结果为(C)
#include<stdio.h>
int fun(char s[])
{
int n=0;
while(*s <= '9' && *s >= '0')
{
n = 10 * n + *s - '0';
s++;
}
return (n);
}
int main()
{
char s[10]={'6','1','*','4','9','*','0','*'};
printf("%d\n",fun(s));
return 0;
}
A 9
B 61490
C 61
D 5
28、在 C++ 程序中,对象之间的相互通信通过()
A 继承实现
B 调用成员函数
C 封装实现
D 重载实现
29、以下叙述正确的是()
A 调用 printf 函数时,必须要有输出项
B 使用 putchar 函数时,必须在之前包含头文件 stdio.h
C 在 C 语言中,整数可以以十二进制、八进制、十六进制的形式输出
D 调用 getchar 函数读入字符时,可以从键盘上输入字符所对应的 ASCII 码
30、下列选项中,与实现运行时多态性无关的是()
A 引用
B 函数重载
C 指针
D 虚函数
31、若有语句:char* line[5]; 以下叙述中正确的是(A)
A 定义 line 是一个数组,每个数组元素是一个基类型为 char 的指针变量
B 定义 line 是一个指针变量,该变量可以指向一个长度为 5 的字符型数组
C 定义 line 是一个指针数组,语句中的 * 号称为间址运算符
D 定义 line 是一个指向字符型函数的指针
32、若进栈顺序为 1,2,3,4,进栈的过程中可以出栈,则不可能的一个出栈序列是()
A 2,3,4,1
B 1,4,3,2
C 3,1,4,2
D 3,4,2,1
33、this 指针存在的目的是()
A 保证基类公有成员在子类中可以被访问
B 保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码
C 保证基类保护成员在子类中可以被访问
D 保证基类私有成员在子类中可以被访问
34、使用值传递方式将实参传给形参,下列说法正确的是(A)
A 形参是实参的备份
B 实参是形参的备份
C 形参和实参是同一对象
D 形参和实参无联系
35、有以下程序,程序运行以后的输出结果是(C)
#include<stdio.h>
int f(int n)
{
static int a=1;
n += a++;
return n;
}
int main()
{
int a = 3,s;
s = f(a);
s = s + f(a);
printf("%d\n",s);
return 0;
}
A 7
B 8
C 9
D 10
36、对类中声明的变量,下列描述中正确的是()
A 属于全局变量
B 只属于该类‘
C 属于该类,某些情况下也可被该类不同实例所共享
D 任何情况下都可被该类所有实例共享
二、多选题
37、下列选项中,描述正确的是()
A 类 A 的友元(friend)函数可以访问类 A 的私有成员
B 类 A 的静态成员函数没有传递 this 指针作为参数
C 类 A 的静态数据成员为类 A 的所有对象所共享
D 内联(inline)函数 改善了函数调用的执行效率
38、有如下模板定义:
template <class T>
T test(T x,T y)
{
return x*x+y*y;
}
在下列对 fun 的调用中,错误的是()
A test(1,2)
B test(1.0,2)
C test(1.0 2.0)
D test(1.0,2.0)
39、C++ 中的空类默认产生哪些类成员函数(AB)
A 默认构造函数
B 析构函数
C 拷贝构造函数
D 赋值函数
40、以下描述错误的是(A)
A 函数的形参在函数未调用时预分配存储空间
B 若函数的定义出现在主函数之前,则可以不必声明
C 若一个函数没有 return 语句,则什么值都不用返回
D 一般来说,函数的形参和实参的类型应该一致
41、如下不能表示一个指向整型数组的指针的定义是()
A int (* ptr)[]
B int * ptr[]
C int* (ptr[])
D int ptr[]
三、判断题
42、该程序段的输出结果是:hello,是否正确
void GetMemory(char* p)
{
p = (char*)malloc(100);
}
int main(void)
{
char* str = NULL;
GetMemory(str);
if(!str)
{
exit(EXIT_FAILURE);
}
strcpy(str,"hello");
printf("%s\n",str);
free(str);
return 0;
}
- 正确
- 错误
43、如下程序输出值为 1 2 4 4 8 5,是否正确
int main()
{
vector<int> vInt;
for(int i=0;i<5;++i)
{
vInt_push_back();
cout<<vInt.capacity()<<" ";
}
vector<int> vTmp(vInt)
cout<<vTmp.capacity()<<"\n";
return 0;
}
- 正确
- 错误
44、下列程序段的功能是判断字符串是否对称,对称返回1,不对称返回0,横线补充代码:x++,是否正确
bool fun(string str)
{
int i = 0,j = 0;
j = _____;
for(j--;i < j && str[i] == str[j];i++,j--);
return i==j;
}
- 正确
- 错误
四、填空题
45、以下函数把 b 字符串连接到 a 字符串的后面,并返回 a 中新字符串的长度,请填空。
Strcen(char a[],char b[])
{
int num = 0,n = 0;
while(*(a+num) != ______ )
num++;
while(b[n])
{
*(a+num) = b[n];
num++;
___________;
}
return (num);
}
46、如下程序片段的输出是:(2,5)
int a[] = {1,2,3,4,5};
int *ptr = (int*)(&a+1);
printf("%d,%d\n",*(a+1),*(ptr-1));
47、以下程序运行后输出的结果是:(bcdefgha)
#include<stdio.h>
char *ss(char *s)
{
char *p,t;
p = s+1;
t = *s;
while(*p)
{
*(p-1) = *p;
p++;
}
*(p-1) = t;
return s;
}
int main()
{
char* p,str[10] = "abcdefgh";
p = ss(str);
printf("%s\n",p);
}
48、请问 sizeof(sstar) 在 32 位操作系统是多少(28),在 64 位操作系统是多少(32)
#pragma pack(2)
class SStar
{
int number;
union BUF
{
char buffer[13];
int number;
}buf;
typedef char(*f)(void*);
enum
{
Mon,
Tue,
Wed
}day;
unsigned char a:4;
unsigned char b:4;
}sstar;
分析: 首先 buf 是一个联合体 buffer 和 number 共用一段内存空间,因此它的大小至少是最大成员的大小,因此 buf 是 13 个字节。然后是 f,f 是一个函数指针,32 位下是 4 字节,64 位下是 8 字节。其次是 day,day 是一个枚举,枚举的定义是一个被命名的整型常数的集合,本质上枚举就是一组常数的集合体,只是这些常数有各自的命名。最后是 a、b 是位段,它们是以二进制位计算大小的。

这是一份C++编程的基础知识测试题,包含了单选题、多选题、判断题和填空题,涉及范围包括函数指针、内存管理、ASCLL码、结构体、异常处理、文件读取等概念。
&spm=1001.2101.3001.5002&articleId=119717348&d=1&t=3&u=8ec71d179c424890bd28edfb46339c71)
968

被折叠的 条评论
为什么被折叠?



