A、s1=getchar();s2=getchar();
B、scanf(“%s%s”,s1,s2);
C、scanf(“%c%c”,s1,s2);
D、gets(s1);s2=s1;
A、A1.p=5;
B、A1-p=5;
C、A1.*p=5;
D、*A1.p=5;
下列定义中,Sample是一个类,( )是定义指向对象数组的指针p.
A.Sample*P [5]
B.Sample (*p) [5]
C.(Sample*) P[5]
D.Sample *P[]
某系统中有一个缓冲区,进程P1不断地加工数据送入缓冲区,进程P2不断地从缓冲区中取数据打印,用PV操作实现进程间的同步模型如图2所示。假设信号量S1的初值为1,信号量S2的初值为0,那么图2中a、b、c、d处应分别填(51)。
A.P(S2)、V(S2)、P(S1)、V(S1)
B.P(S2)、V(S1)、P(S1)、V(S2)
C.P(S1)、V(S2)、P(S2)、V(S1)
D.P(S1)、V(S1)、P(S2)、V(S2)
已知p是一个指向类A公有数据成员的指针,a是类A的一个对象,如果要给p所指向的成员赋值为5,语句应写为【 】。
WORD格式判断 char 型变量 cl 是否为小写字母的正确表达式是 。( 2.0 分)A、 (cl>='a')&&(cl<='z')B、('a'>=cl)|('z'<=cl)C、a'<=cl<='z'D、(cl>=a)&&(cl<=z)假定 MyClass 为一个类 , 则执行 "MyClass a(2),b5,*c4" 后 , 执行构造函数的次数为( 2.0 分)A、6B、11C、10D、5char *s1="hello",*s2;s2=s1;则 。( 2.0 分)A、 s1 不能再指向其它单元B、cout<<s1; 与 cout<<s2; 结果相同C、 不能访问 "hello"D、s2 指向不确定的内存单元专业资料整理已是一个指向类 A 数据成m 的指,A1 是A 的一个对象。如果要知 :p员确的是针类给m 赋值 5, 正 为2.0 分)A、 *A1.p=5;B、A1.*p=5;C、A1->p=5;D、A1.p=5;C+异常处理机制中没有 。( 2.0 分)A、 finallyB、tryC、throwD、catch所谓多态性是指 。( 2.0 分)A、 一个对象调用不同名称的对象B、 一个对象调用不同名称的函数C、 不同的对象调用相同名称的函数D、 不同的对象调用不同名称的函数关于 new 运算符的下列描述中 , 是错的。( 2.0 分)A、 使用它创建对象数组时必须指定初始值B、 它可以用来动态创建对象和对象数组C、 使用它创建对象时要调用构造函数D、 使用它创建的对象和对象数组可以使用运算 delet 删除 符e分)以下正确的说法 : C+语言中进行值传递 。是 在 时 ( 2.0A、形参是虚拟的 , 不占用存储单元B、 实参和与其对应的形参各占用独立的存储单元C、 只有当实参和与其对应的形参同名时才共占用存储单元D、 实参和与其对应的形参共占用一个存储单元C+类体系中 , 能被派生类继承的是 。( 2.0 分)A、友元函数B、析构函数C、构造函数D、虚函数对于重载的运算符 >>, 它是一个 。( 2.0 分)A、 用于输出的成员函数B、用于输入的友元函数C、用于输入的成员函数D、 用于输出的友元函数是一个在基类中说明的虚函数, 它在该基类中没有定义 , 但要求任何派生类都必须定 义自己的版本。( 2.0 分)A、静态成员函数B、纯虚函数C、虚析构函数D、虚构造函数定义重载函数的下列要求中 , 是错误的。( 2.0 分)A、要求函数的返回值不同B、 要求参数个数相同 , 参数类型不同 时C、 要求参数中至少有一个类型不同D、 要求参数的个数不同 可以通过友元函数重载的运算符 。 分)为 ( 2.0A、>>B、()C、D、 在下列运算符中 , 不能重载的是 。( 2.0 分)A、deleteB、sizeofC、!D、new2.0 分)下列运算符中 , 运算符在C+语言中不能重载。(A、 newB、C、+=D、可以通过友元函数重载的运算符为 。( 2.0 分)A、()B、C、D、>>: ( 域运算符 ) 4 、不能被重载的运算符1、. ( 成员访问运算符) 2 、 .* ( 成员指针访问运算符 ) 3 、sizeof( 长度运算符 ) 5 、 ?: ( 条件运算符)下列运算符中 , 只能作为类成员函数重载的是 。( 2.0 分)A、B、<<C、+D、+类 MyA 的拷贝初始化构造函数是 。( 2.0 分)A、MyA(MyA)B、MyA(MyA&)C、MyA(MyA*)D、MyA();, 如果从键盘输入的不是数字, 输入后用 cin 为整型变量输入数据时 整型变量中的结果会 是 : ( 2.0 分)A、 不确定B、0C、 正数D、 负数在 C+语言中 , 引用数组元素时, 其数组下标的数据类型允许是。( 2.0 分)A、 任何类型的表达式B、整型表达式C、整型常量或整型表达式D、整型常量关于类模板描述不正确的是 。( 2.0 分)A、 根据它可以定义多个对象B、 它的存在不代表一个具体的、实际的类, 而是代表一类的类C、 它可以使类中的某些数据取任意类型D、 根据它可以产生一系列类 下列说法不正确的是 。( 2.0 分)A、不同函数中 , 可以使用相同名字的变量B、在一个函数内部 , 可以在复合语句中定义变量 , 这些变量只在复合语句中有效C、 形式参数是局部变量D、主函数 main 中定义的变量在整个文件或程序中有效建立包含有类对象成员的派生类对象时 , 自动调用构造函数的执行顺序依次为 的构 造函数。( 2.0 分)A、 基类、自己所属类、对象成员所属类B、 对象成员所属类、基类、自己所属类C、 自己所属类、对象成员所属类、基类D、 基类、对象成员所属类、自己所属类关于运算符重载 , 下列表述中正确的是 。( 2.0 分)A、可以通过运算符重载来创建C+中原来没有的运算符B、 在类型转换函数的定义中不需要声明返回类型C、 运算符函数的返回类型不能声明为基本数据类型D、C+已有的任何运算符都可以重载下列关于运算符重载不正确的是 。( 2.0 分)A、 运算符重载不能改变运算符的优先级B、 运算符重载能改变对预定义类型数据的操作方式C、 运算符重载不能改变运算符的结合性D、 运算符重载不能改变运算符的操作数个数在表达式 x+y*z 中 ,+ 是作为成员函数重载的运算符 ,* 是作为非成员函数重载的运算符 下列叙述中正确的是 。( 2.0 分)A、 operator+ 有两个参数 ,operator* 有一个参数B、operator+有两个参数,operator*有两个参数C、operator+有一个参数,operator*有两个参数D、operator+有一个参数,operator*有一个参数+和 * 都是二元运算符,当作为成员函数重载时,参数表中只有一个参数,对应于第二个参 数,而第一个操作数就是对象本身, 仅以 this 指针的形式隐藏在参数表中 当作为非成员函 数重载时有两个参数。以下叙述中正确的是 。( 2.0 分)A、 静态 (static) 类别变量的生存期贯穿于整个程序的、运行期间B、 函数的形参都属于全局变量C、未在定义语句中赋初值的 auto 变量和 static 变量的初值都是随机值D、全局变量的作用域一定比局部变量的作用域范围大在公有派生情况下 , 有关派生类对象和基类对象的关系 , 不正确的叙述是 。( 2.0 分)A、 派生类的对象的地址可以赋给指向基类的指针B、 派生类的对象可以初始化基类的引用C、 派生类的对象可以直接访问基类中的成员D、 派生类的对象可以赋给基类的对象。( 2.0 分)不能作为重载函数的调用的依据是A、函数名称B、 参数类型C、 参数个数D、函数类型若已定义的函数有返回值 , 则以下关于该函数调用的叙述中错误的是 。( 2.0 、分)A、 函数调用可以作为一个函数的形参B、 函数调用可以出现在表达式中C、 函数调用可以作为独立的语句存在D、 函数调用可以作为一个函数的实参在有参函数调用中, 是将主调函数的实参值传给被调函数的形参。 按函数在程序中出现的位 函数调用作为一条语句。例 fun() ;这时不要 置来分,有以下三种函数调用形式: 如: 求 函数带回值,只要求函数完成一定的操作。故选项 A) 正确。 函数出现在表达式中,这种 表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。例如: c=5*max(a,b) ;函数 max 是表达式的一部分,将其值乘以 5 后赋给 c 。故选项 C) 正确。
阅读下列算法说明和算法,将应填入(n)处的语句写在对应栏内。
【说明】
本程序可以将字符串s1中出现的所有s2子串替换成s3,形成一个新串,但不破坏字符串s1。
【代码】
include<stdio.h>
include<stdlib.h>
include<string.h>
char*replace(char *s1, char *s2,char *s3)
{ char *p, *q, *r, *s; int |2,|3, i=0;
|2=strlen(s2);
|3=strlen(s3);
p=s1;
while((p=strstr(p,s2))!=NULL)
{ i++; /* 统计s2串出现的次数*/
(1);
}
i=(2);
s=r=(char*)malloc(i); /*分配动态内存存放新字符串*/
p=s1;
while(1)
{ q=strstr(p, s2); /* s2串是否在s1中出现,q是首次出现的位置*/
if(q!=NULL)
{ i=q-p;
(3);
r+=i;
(4);
r+=|3;
p=q+|2; /*将指向s1串的指针移到s2子串出现的位置后,
为下一次循环做好准备*/
}
else /*q为空,表示剩余的s1串中已经没有s2*/
{ (5);
break; /*终止循环*/
}
}
return(s); /*返回指向所形成的新串的指针*/
}
void main()
{ char *a="sabcababde", *b="ab", *c="efg", *d;
d=replace(a, b, c); printf("result=%s\n", d); free(d);
}
若有如下图所示5个连续的int类型的存储单元并赋值,a[0]的地址小于a[4]的地址。 p和s为int型的指针变量。请对以下问题填空。
①若p已指向存储单元a[1]。通过指针p给s赋值,使s指向最后一个存储单元a[4]的语句是【 】。
②若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是【 】。
已知p是一个指向类Sample数据成员m的指针,s是类Sample 的一个对象。如果要给 m赋值为5,( )是正确的。
A.s.p=5
B.s->p=5
C.s.*p=5
D.*s.p=5
以下程序的输出结果是 ______。 #include<iostream.h> void main(){ char s1[]=”Hello”,s2[]="World"; char *p1,*p2; int i; p1=s1; p2=s2; for(i=0;i<5;i++) if(*(pl+i)==*(p2+i)) cout<<*(p1+i); }
A.H1
B.Ho
C.10
D.1
● 进程P1、P2、P3、P4和P5 的前趋图如下:
若用PV操作控制进程P1~P5并发执行的过程,则需要设置 6 个信号量 S1、S2、S3、S4、S5和S6,且信号量S1~S6的初值都等于零。下图中 a和 b 处应分别填写 (23) ;c和d处应分别填写 (24) ,e和f处应分别填写 (25) 。
(23)
A. P(S1) P(S2) 和P(S3) P(S4)
B. P(S1) V(S2) 和P(S2) V(S1)
C. V(S1) V(S2) 和V(S3) V(S4)
D. P(S1) P(S2) 和V(S1) V(S2)
(24)
A. P(S1) P(S2) 和V(S3) V(S4)
B. P(S1) P(S3) 和V(S5) V(S6)
C. V(S1) V(S2) 和P(S3) P(S4)
D. P(S1) V(S3) 和P(S2) V(S4)
(25)
A. P(S3) P(S4) 和V(S5) V(S6)
B. V(S5) V(S6) 和P(S5) P(S6)
C. P(S2) P(S5) 和P(S4) P(S6)
D. P(S4) V(S5) 和P(S5) V(S6)