资源描述
《C语言程序设计》试卷A-带答案
一、单项选择题(每题2分,共20分)
1、下列有关C语言的叙述中错误的是(D)
A) C语句必须以分号结束
B) 任何一个C程序中有且只有一个主函数
C) 复合语句在语法上可被看作一条语句
D) C程序中对数据的任何操作都可由运算符实现
2、以下不能定义为用户标识符的是(C)。
A) MAINB) _HJC) 2ongD)
LINE1
3、以下能正确定义一维数组的是(C)。
A) int a[5] = {0,1,2,3,4,5}; B) int a[5] =” 012345”;
C) char a[ ]=” 012345”;D) char a[5] = {0, 1, 2, 3, 4, 5};
4、执行下列程序段后输出的结果是(C)。
x = 9;
while (x > 7)
{ printf(“*” ); x; }
A) **** B) ***C) **D) *
5、设 char str1[10] = "ABCDE”, str2[10] = "xyz”;
则执行语句 printf“%d”,strlen(strcpy(str1,str2)));后的输出结果是(D)。
解析:
strcpy(str1,str后;str1[]里是"XYZ", Z后面有字符串结束符
strcpy(str1,str2执行后,函数返回的是str1,
因为str1[]里是新值"XYZ",而
strlen(strcpy(str1,st 就是 strlen(str的新值),所以得 3。
strlen统计到字符串结束符以前,即,不计入字符串结束符。
A) 9 B) 8C) 5 D) 3 6、若用数组名作为函数调用的实参,则传递给形参的是(A)。
A) 数组的首地址B)数组第一个元素的值
C)数组中全部元素的值D)数组元素的个数
7、在C程序中,若未在函数定义时说明函数类型,则函数默认的类型为(C)。
A) voidB)double C)int D)char
8、下面不能正确进行字符串赋值操作的语句是(C)。
A) char s[5] = {"ABCD"};B) char s[5]; s="ABCD";
C) char *s; s="ABCDEF";D) char *s="ABCD";
解析:这样理论上的没错的把s指针指向字符串可以改变s指针但不能改变其指向的值正确的应该是这样 char s[] = "ABCDEF";
或 char s[8];strcpy(s, "ABCDEF");
9、设有说明int s[5] = {1,3,5,7,9}; int *p=s;则下列表达式中值为3的是(C)。
A) ++pB)++(*p) C) *(++p) D) *(p+=2)
解析:
A是把p得地址后移一个int单位长度,即使p指向数组的第二个元素。
B是取得p当前指向的元素值然后加1,即1+1=2;
C是先移动p,使其指向第二个元素,然后取得当前指针指向的元素值,即3.
D是先使p指向数组的第三个元素,然后去的当前指针指向的元素的值,即5。
10、下面程序的输出结果是(B)。
int m=13;
int fun( int x, int y)
{ int m=3;
return( x*y-m); }
main( )
{ int a=7,b=5;
printf(“%d\n”,fun(a,b)/m); }
A) 1B) 2C) 3D) 10
二、填空题。(每空2分,共30分)
1. 设有变量说明语句:
int x=1,y=2;
则执行下述printf语句的输出结果是__1._
printf("%f\n",1.0+x/y);
2. 执行下述程序:
#include <stdio.h>
main()
{
int x,y;
scanf("%2d%*2s%1d”,&x,&y);
printf("%d\n",x+y);
}
若从键盘输入:
12345671
则程序的输出结果是一 17 一。
解析:x,y为int类型,x的长度为2,y的长度为1,即x为12,y为5,故x+y=17
3. 以下程序的功能是:从键盘上输入若干名学生的成绩(百分制,可带小数,以输入 负数或0为结束标志),统计并输出最高成绩和最低成绩。请填空。
#include <stdio.h>
main()
{
float x,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while (x>0)
{
if (x>amax)
amax=x;
else if (x<amin)
amin=x;
scanf("%f',&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
4. 设n是整型变量,且已具有某正整数值。根据下述数学式
11111 1 1 — — — — ——
2 2 3 3 4n n 1
求s的值并输出。可编写如下之程序段来实现。请填空。
int k;
double s,d;
s=0.0;
d=1.0;
k=0;
do
{
s=s+d;
__k++_;
d=1.0/(k*(k+1));
} while (k<=n);
printf("%f\n",s);
5. 执行下述程序的输出结果是——4 0 4 4 3-。
#include <stdio.h>
main()
{
int a[6],i;
for (i=0;i<6;i++) {
a[i]=9*(i-2+4*(i>3))%5;
printf("%3d",a[i]);
}
printf("\n");
}
解析:(i>3)为真时值为1,反之为0,
6. 执行下述程序的输出结果是___6___。
#include <stdio.h>
main()
{
int a[] = {2,4,6,},*ptr=&a[0],x=8,y,z;
for (y=0;y<3;y++)
z=(*(ptr+y)<x)?*(ptr+y):x;
printf("%d\n",z);
}
7. 执行下述程序的输出结果是60…
#include <stdio.h>
main()
{
int a[][2] = {10,20,30,40,50,60},(*p)[2];
p=a;
printf("%d\n",*(*(p+2)+1));
}
8. 执行以下程序的输出结果是__其一。
#include <stdio.h>
main()
int s,i,sum();
for (i=1;i<=10;i++)
s=sum(i);
printf("s=%d\n”,s);
}
sum(int k)
{
int x=0;
return (x+=k);
}
9. 下述函数定义用来求出两个整数之各,并通过函数的模拟传地址调用,传回两整 数相加之和值,请填空。
void add(int x,int y,—int *z—)
{
*z=x+y;
}
10. 函数func的功能是将整型变量x的值转换成二进制数,并将该二进制数的每一 位存入由整型指针b所指向的一维数组a,最低位存放于a[0]中,次低位存放于a[1] 中,依此类推。请填空。
void func(int x,int *b)
{
int r;
do
{
r=x%2;
==r;
x/=2;
} while (x);
11. 以下程序中函数invert实现将数组内所有数组元素的值逆置。比如,执行本程 序将输出:
10987654321
请填空。
#include <stdio.h>
main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10},i,n=10;
invert(a,n-1);
for (i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
}
invert(int *s,int num)
{
int *t,k;
t=s+num;
while (—t>s)
{
k=*s;
*s=*t;
*t=k;
s++;
t--;
}
12. 若有以下定义和说明,则结构体变量w在内存中所占的字节数是
union aa
{
float x;
float y;
char c[6];
};
struct st
{
union aa v;
float w[5];
double ave;
} w;
13. 执行下述程序的输出结果是——-。
#include <stdio.h>
struct str
{
float x;
char *y;
} *m;
struct str group[3] = {
95.0,"Li”,
82.5, "Wang”,
73.5, "Sun”
};
main()
{
m=group;
printf("%.lf,%s\n",m->x,m->y);
}
14. 下面的程序用来统计某文件中字符的个数。请填空。
#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *fp;
long num=0;
if ((fp=fopen("fnam.dat","r"))==NULL)
{
printf("Can't open this file!\n");
exit(0);
while (― )
{
fgetc(fp);
num++;
}
printf("num=%d\n",num);
fclose(fp);
}
15. 执行下述程序后,输出结果为。
#include <stdio.h>
#define FUN1(a,b) a+b
#define FUN2(a,b) a-b
#define CAL(a,b) a*b+a+3
main()
{
printf("%d\n”,CAL(FUN1(3,5),FUN2(4,5)));
}
三、修改程序(在程序出错的语句下划横线并标号,把修改后的语句写在程序 之后的横线上。每小题5分,共10分)
I. 下列给定程序的功能是:读入一个整数(2<=k< = 1),打印它的所有质因 子(即所有为素数的因子)。例如,若输入整数2310,则应输出2、3、5、7、
II。
#include <conio.h>
#include <stdio.h>
IsPrime(int n);
{ int i,m;
m=1;
for ( i=2; i<n; i++)
if !(n%i)
{ m=0; continue; }
return (m);
}
main()
{ int j,k;
printf(“\nPlease enter an integer number between 2 and 1:”);scanf("%d”,k);
printf(“\nThe prime factor(s) of %d is (are):”,k);
for (j=2;j<=k;j++)
if ((!(k%j))&(IsPrime(j)) printf("\n%4d”,j);
printf("\n”);
}
2. 下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中 的字符,把ASCII值大或等于的字符一次存放到c数组中,形成一个新的字符串。 例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串为: aBcdeFgh。
#include <stdio.h>
#include <string.h>
void fun(char *p,char *q,char *c);
{ int k=1;
while(*p!=*q)
{ if (*p<*q) c[k]=*q;
else c[k]=*p;
if (*p) p++;
if (*q) q++;
k++;
}
main()
{ char a[10]=“aBCDeFgh”,b[10]=“ABcd”,c[80] = {"”};
fun(a,b,c);
printf(“The string a:”); puts(a);
printf(“The string b:”); puts (b);
printf(“The result:”); puts(c);
}
四、阅读下列程序,在程序后面的横线上,写出该程序的功能或给出运行结果。
(每小题5分,共20分)
1. #include <stdio.h>
void main()
{ char ch; int k=0;
for(ch=’ A’ ;ch<’ H’ ; ch++, k++)
if (k%2==0) printf(“%c”,ch);
printf("\n” );
}
输出结果:
2. #include <stdio.h>
void main( )
{ int k=0;
char c=’A’;
do {
switch (c++)
(case ‘A’: k++; break;
case‘B’:k--;
case‘C’:k+=2;break;
case‘D’:k=k%2;break;
case‘E’:k=k*10;break;
default: k=k/3;
}
k++;
} while(c<’G’);
printf( "k=%d\n”, k);
}
输出结果:
3. #include <stdio.h>
void main()
( int
a[6] = (12,4,17,25,27,16},b[6] = (27,13,4,25,23,16},i,j;
for(i=0;i<6;i++) (
for(j=0;j<6;j++) if(a[i]==b[j])break;
if(j<6) printf("%d”,a[i]);
}
printf("\n”);
}
输出结果:
4. #include <stdio.h>
void main()
( int a[8] = (1,0,1,0,1,0,1,0},i;
for(i=2;i<8;i++) a[i]+=a[i-1]+a[i-2];
for(i=0;i<8;i++) printf(“%d”,a[i]);
输出结果:
五、编程题(本大题20分,第一题8分,第二题12分)
1、计算分段函数的值:
「1-x(x<0)
Y=
2*X2-2(x>=0)
编程实现。
2、输入10个学生3门课的成绩,用函数实现:找出最高的分数所对应的学号和 成绩。
模拟试卷十一参考答案:
一、 单选题
1) D 2) C
6) A 7) C
二、 填空题
1、 1.
2、 17
3、 x>0.0
4、 k=k+1
5、 4 0 4 4 3
6、 6
7、 60
8、 10
9、 int *z
10、 * (b++ )
11、 t>s
12、 42
13、 95, Li
14、 fgetc(fp)!=EOF
15、 29
三、 改错题
3) C
8) C
4) C
9) C
5) D
10) B
1、IsPrime(int;n)改为 IsPrime(int n)
scanf(“%d”,改为 scanf("%d&k);
{ m=0; continue;改为
{if (!(n%i))
m=0; continue; }
if ((!(k%j))&(IsPrime改为 if((!(k%j)& (IsPrime(j)))
2、studio, 改为 stdio.h
void; fun(char *p,char *q,chai改为)void fun(char *p,char *q,char *c)
k=l改为k=0while (*p!=*(改为 while((*p)|(*q)) k++后添加一个}
四、阅读程序
1、ACEG
2、8
3、4252716
4、1022571320
五、编程题
1、
#include<stdio.h> main()
{ float x,y; scanf("%f ",&x);
if(x<0){ y=1-x;
} else
{y=2*x*x-2;} printf("%f\n",y);
}
2、
#include<string.h> struct student { int num;
float score[3];
}stu[10];
void chosescore(struct student *stu,int n) { int i=0,j=0,k=0;
float temp;
for(i=0;i<3;i++) { temp=stu[0].score[i];
k=stu[0].num;
for(j=1;j<n;j++)
{
if(temp<stu[j].score[i])
{ temp=stu[j].score[i];
k=stu[j].num; }
}
printf("%d %f\n",k,temp);
}
}
void main()
{ int i;
for(i=0;i<10;i++)
{printf("put in %d student informtion\n",i+1);
scanf("%d%f%f%f",
&stu[i].num,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
}
chosescore(stu,10);
}
C++面向对象程序设计模拟试题(带答案)
1.1选择题
在C++中用(D )能够实现将参数值带回。
a)数组 b)指针 c)引用 d)上述ABC都可
考虑函数原型void test(int a,int b=7,char下!面的"函,数调用中,属于不合法调用的
是:(C )
A)test(5) B)test(5,8) C)test(6,"#") D)test(0,0,"*")
已知:int m=t0下列表示引用的方法中,正确的是:(C )
A)int &Z B)int &t=10 C)int &X=m; D)float &f=&m
下列不是函数重载所要求的条件是:(D )
A)函数名相同B)参数个数不同
C)参数类型不同D)函数返回值类型不同
在C++中执行以下4条语句后输出rad值为:(C )
static int hot=;2
int &rad=ho;t
hot=hot+1;
cout<<rad<<end;l
A) 0 B) 1 C) 3 D) 2
系统在调用重载函数时,不能作为确定哪个重载函数被调用的依据是:(D )
A)参数个数B)参数类型 C)函数名称 D)函数的返回值类型
对C++语言和C语言的兼容性,描述正确的是:(A )
A)C++兼容C B)C++部分兼容CC)C++不兼容C D)C兼容C++
在C++中使用流进行输入输出,其中用于屏幕输出的对象是:(C )
A)cerr B)cin C)cout D)cfile
对使用关键字new所开辟的动态存储空间,释放时必须使用(C )
A)free B)create C)delete D)realse
在函数调用时,如某一默认参数要指明一个特定值,则有(A )
A)其之前所有参数都必须赋值B)其之后所有参数都必须赋值
C)其前、后所有参数都必须赋值D)其前、后所有参数都不必赋值
下列哪个类型函数不适合声明为内联函数(A )
A)函数体语句较多B)函数体语句较少
C)函数执行时间较短 D)函数执行时间过长
int Func(i,ntint;)不可与下列哪个函数构成重载(B )
A)int Func(i,ntint int)B)double Func(intint)
C)double Func(doubl,edouble);D)double Func(i,ntdouble);
下面的哪个保留字不能作为函数的返回类型(C )
A)void B)int C)new D)long
一个函数功能不太复杂,但要求被频繁调用,选用(A )。
A. 内联函数 B.重载函数 C.递归函数 D.嵌套函数
已知函数f的原型为:void f (int&a,char*变量s,的定义是:int ;schar t[ ]="ABCD" 把s和t分别作为第一参数和第二参数来调用函数f,正确的调用语句是(C ) A f(&s,&t;) B f(&s,t;) C f(s,;t) D f(s,&t;)
若定义cin>>str;
当输入
Microsoft Visual StudiO 6.0
所得结果是str=(B)。
A、Microsoft Visual Studio 6.0
B、Microsoft
C、Microsoft Visual
D、Microsoft Visual Studio 6.0
.函数模板(C)。
A、代表某一具体函数
B、与模板函数是同一个函数
C、与某一个具体的数据类型连用
D、是模板函数实例化的结果
在C++中,关于下列设置参数默认值的描述中,正确的是(C)
A、不允许设置参数的默认值
B、设置参数默认值只能在定义函数时设置
C、设置参数默认值时,应该是先设置右边的再设置左边的
D、设置参数默认值时,应该全部参数都设置
下列表示引用的方法中,(A)是正确的。
已知:k=10;
A、int &x=k;B、char &y;
C、int &z=10;D、float &t=&k;
有如下模板定义: template <class T>T fun(T x,T y){return x*X+y*y
在下列对fun的调用中,错误的是:(C )
A) fun(2,8)B)fun(2.0,8.2) C)fun(2.3,8) D)fun (‘2’,’8’)
通常情况下,函数模板中的类型参数个数不能是(A )
A)0个 B)1个 C)2个 D)3个
1.2填空题
1、假定有如下定义:int x若要将整型变量y定义为变量x的引用,则应使用的定义语句是
int &y=x;_
具有相同函数名但具有不同参数表的函数称为重载函数。'
2、在进行函数调用时,将把参数的值传递给值参数,把参数的一地址一传递给引用参数。
3、执行完下列三条语句后,指针变量c指向-i--o Int a,b,*c=&a;
int *&p=c;
p=&b;
4、假设有如下函数定义:void Fun(int x,int y=1©D旬 Fun(5)语句__ Fun (5 1)_等价。
5、在一个C++程序中,每个变量都必须遵循―先定义后使用―的原则。
6、下面是一个求数组元素之和的程序。主程序中定义并初始化了一个数组,然后计算该数 组各元素之和,并输出结果。
函数TotalSum计算数组元素之和。请完成下列程序。 #include <iostream.h>
—二int Totalsum(int array[],int len)__ ; void main() {
int a[5] = {2,3,6,8,10};
__int Total —;
Total =Totalsum(a,5); cout<<"Sum of array:"<<Total<<endl;
} int Totalsum(int array[],int len) {
—int sum =0;
for(int I=0;I<len;I++)
sum += array[I]; return sum;
}
7、下面的函数Fun未使用中间变量实现了对两个数的交换,请完成下列函数的定义。
Void Fun (int &x,int &y) { x+ = y;
y =—x-y;
x = x - y;
}
8、定义一个函数时,若只允许函数体访问形参的值而不允许修改它的值,则应把该形参声 明为--常量--,即在该形参声明的前面加上_const_关键字进行修饰。
9、在一个函数的定义或声明前加上关键字— inline一时,该函数就声明为内联函数。
1.3简答题
A、.内联函数的含义
在函数前加上关键字inline明了一个内联函数,这使一个函数在程序行里进行代码扩 展而不被调用。这样的好处是减少了函数调用的开销,产生较快的执行速度。但是由于重复 编码会产生较长代码,所以内联函数通常都非常小。如果一个函数在类说明中定义,则将自 动转换成内联函数而无需用inlin说明。
B、.函数重载的含义
在同一作用域范围内,相同的函数名通过不同的参数类型或参数个数可以定义几个函 数,编译时编译器能够识别实参的个数和类型来决定该调用哪个具体函数。需要注意的是, 如果两个函数仅仅返回类型不同,则编译时将会出错,因为返回类型不足以提供足够的信息 以使编译程序判断该使用哪个函数。所以函数重载时必须是参数类型或者数量不同。
C、引用与指针的区别
D、内联函数使用上的限制
E、定义带默认参数值函数的规则
F、指针与常量的关系
1.4程序阅读题
1) 写出下列程序的运行结果。
#include <iostream.h>
void main()
{
int x;
int &p=x;
x=10;
p=x+10;
cout<<x<<","<<p<<endl;
}
结果:20,20
2) 写出下列程序的运行结果。
#include <iostream.h>
int f(int a)
{
return ++a;
int g(int &a)
{
return ++a;
}
void main()
{
int m=0,n=0;
m+=f(g(m));
n+=f(f(n));
cout<<"m="<<m<<endl;
cout<<"n="<<n<<endl;
}
结果:
m=3
n=2
3) 写出下列程序的运行结果。
#include <iostream.h>
void Fun()
{
int num=20;
cout<<"The Fun's num is"<<num<<endl;
}
void main()
{
int num=10;
cout<<"The main's num is "<<num<<endl;
Fun();
{
int num=30;
cout<<"The Field's num is "<<num<<endl;
}
cout<<"The main's num is "<<num<<endl;
}
结果:
The main's num is 10
The Fun's num is20
The Field's num is 30
The main's num is 10
类和对象
2. 1选择题
下列的各类函数中,不是类的成员函数。(c )
A)构造函数B)析构函数C)友元函数 D)拷贝初始化构造函数
作用域运算符“::”的功能是:(B )
A)标识作用域的级别的B)指出作用域的范围的
C)给定作用域的大小的D)标识成员是属于哪个类的
已知:print®数是一个类的常成员函数,它无返回值,下列表示中,是正确的。(A )
A)void print()cqnst B)const void pript()
C)void const print() D)void print(const)
在类定义的外部,可以被访问的成员有(C )
A)所有类成员B)privat的类成员
C)public的类成员D)publi^ privat的类成员
关于类和对象不正确的说法是:(C )
A)类是一种类型,它封装了数据和操作B)对象是类的实例
C) 一个类的对象只有一个D) 一个对象必属于某个类
在C++中实现封装是借助于(B )
A)枚举 B)类 C)数组 D)函数
定义析构函数时,应该注意:(C )
A)其名与类名完全相同B)返回类型是void类型
C)无形参,也不可重载D)函数体中必须有delete吾句
类clase CC1的说明如下,错误的语句是:(A )
clase CC1(
int a-2
//(A)
CC1 ();
//(B)
public:
CC1 (int vai)
//(C)
"CCl ();
//(D)
);
类的指针成员的初始化是通过函数完成的,这个函数通常是:(B )
A)析构函数B)构造函数 C)其它成员函数 D)友元函数
关于构造函数的说法,不正确的是:(A )
A)没有定义构造函数时,系统将不会调用它B)其名与类名完全相同
C)它在对象被创建时由系统自动调用D)没有返回值
通常拷贝构造函数的参数是:(C )
A)对象名 B)对象的成员名 C)对象的引用名 D)对象的指针名 关于成员函数特征的描述中,错误的是:(A )
A)成员函数一定是内联函数B)成员函数可以重载
C)成员函数可以设置参数的默认值D)成员函数可以是静态的
下列关于构造函数的描述中,错误的是:(D )
A)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行
C)构造函数可以是内联函数;D)构造函数不可以重载
有如下类声明“class A{int x };”,则A类的成员x是:(B )
A)公有数据成员B)私有数据成员C)公有成员函数 D)私有成员函数
类TM和类TN是两个独立的类,那么类TM中哪种形式的数据成员一定是不允许的:(C ) A)TM * a B)TN & a C)TM a D)TN a;
以下关于thi指针的叙述中正确的是:(D )
A)任何与类相关的函数都有thi指针;B)类的成员函数都有thi指针;
C)类的友员函数都有thi指针;D)类的非静态成员函数才有thi指针;
.关于类模板的说法正确的是:(B )
A)类模板的主要作用是生成抽象类
B)类模板实例化时,编译器将根据给出的模板实参生成一个类
C)在类模板中的数据成员具有同样类型
D)类模板中的成员函数没有返回值
.以下关键字不能用来声明类的访问权限的是:(C )
A)public B)private C)static D)protected
.类的私有成员可在何处访问(D )
A)通过子类的对象访问B)本类及子类的成员函数中
C)通过该类对象访问D)本类的成员函数中
.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是:(A )
A)编译器总是自动创建一个不带参数的构造函数B)这个类没有构造函数
C)这个类不需要构造函数D)该类不能通过编译
. 一个类可包含析构函数的个数是:(B )
A)0个 B)1个 C)0个或1个 D)0个或多个
. 一个类可包含构造函数的个数是:(D )
A)0个 B)0个或1个 C)0个或多个D)1个或多个
.this指针存在的目的是:(B )
A)保证基类公有成员在子类中可以被访问
B)保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码
C)保证基类保护成员在子类中可以被访问
D)保证基类私有成员在子类中可以被访问
.下列关于类的权限的描述错误的是:(A )
A)类本身的成员函数只能访问自身的私有成员
B)类的对象只能访问该类的公有成员
C)普通函数不能直接访问类的公有成员,必须通过对象访问
D)一个类可以将另一个类的对象作为成员
.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是:(B )
A)A类构造函数先执行B)成员构造函数先执行
C)两者并行执行D)不能确定
.假定有类AB,有相应的构造函数定义,能正确执行“AB a(4),b(5), c[3], *p[2] = {&a,&b};”语句,请问执行完此语句后共调用该类构造函数的次数为
(C )
A)3 B) 4 C) 5D)6
拷贝构造函数的作用是(C )。
A. 进行数据类型的转换B.用对象调用成员函数
C.用对象初始化对象D.用一般类型的数据初始化对象
下列静态数据成员的特性中,错误的是(D )。
A. 静态数据成员的声明以关键字static头
B. 静态数据成员必须在文件作用域内初始化
C. 引导数据成员时,要在静态数据成员前加(类名)和作用域运算符
D. 静态数据成员不是类所有对象共享的 通过指针访问类对象成员的方法是(D )。
A. :: B.;
静态成员函数没有(B )。
A.返回值 B. this指针
型
C. .
C.指针参数
D.->
D,返回类
在下列关键字中,用于说明类中公有成员的是(A )。 A . public B. privat;e C. protected D . 不是构造函数的特征(D )。
A.构造函数的函数名与类名相同; C.构造函数可以设置缺省参数; 明。
是析构函数的特征(A )。
A.一个类中只能定义一个析构函数; C. 析构函数的定义只能在类体内; 参数。
关于成员函数特征的下述描述中,(A )是错误的。 A.成员函数一定是内联函数; C.成员函数可以设置参数的缺省值; 下述静态数据成员的特性中,(D )是错误的。
说明静态数据成员时前边要加修饰符static; 静态数据成员要在类体外进行初始化;
引用静态数据成员时,要在静态数据成员名前加<类名〉和作用域运算符; 静态数据成员不是所有对象所共用的。
friend
B.
B.
构造函数可以重载;
D. 构造函数必须指定类型说
析构函数名与类名不同;
D.
析构函数可以有一个或多个
B.
D.
成员函数可以重载;
成员函数可以是静态的。
A.
B.
C.
D.
2.2填空题
1、在撤销类的对象时,c++程序将自动调用该对象的―析构一―函数。
2、类中的构造函数是一个特殊的成员函数,它由类的对象―自动一调用,它的作用是一―为 对象分配内存,数据成员初始化一_。
3、对类中的成员函数和属性的访问是通过__public__ —protected和___private3这3个 关键字来控制的。
4、—delete一运算符删除new运算符所动态分配的内存空间。
5、假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数 形式为 _MyClass () _
6、类中构造函数有―一个或多―个,析构函数有一一…个。
7、类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的…数据 成员一_,共同行为被描述为类中的―成员函数―。
8、若要把类FriendClas定义为类MyClass的友元类,则应在类MyClass的定义中加入语句 _friend class FriendClass__。
9、在结构定义中,数据和成员函数默认权限是— Dublic__在类定义中,数据和成员函数默认 权限是 __pr ivate_f_
10、在下面程序的横线处填上适当的语句,使类型该程序执行结果为10。 #include <iostream.h>
class MyClass {
public:
—MyClass ( inta){x = a;为_x一置值
__int GetNum(){return
展开阅读全文