一、选择填空
1.在下列关键字中,用以说明类中公有成员的是( )。
A.public; B.private; C.protected; D.friend
2.下列的各类函数中,( )不是类的成员函数。
A. 构造函数; B.析构函数;
C.友元函数;D.拷贝初始化构造函数
3.作用域运算符的功能是( )。
A.标识作用域的级别的;
B.指出作用域的范围的;
C.给定作用域的大小的;
D.标识某个成员是属于哪个类的。
4.( )是不可以作为该类的成员的。
A.自身类对象的指针;
B.自身类的对象;
C.自身类对象的引用;
D.另一个类的对象。
5.( )不是构造函数的特征。
A.构造函数的函数名与类名相同;
B.构造函数可以重载;
C.构造函数可以设置缺省参数;
D.构造函数必须指定类型说明。
6.( )是析构函数的特征。
A.一个类中只能定义一个析构函数;
B.析构函数名与类名不同;
c.析构函数的定义只能在类体内;
D.析构函数可以有一个或多个参数。
7.通常的拷贝初始化构造函数的参数是( )。
A.某个对象名;
B.某个对象的成员名; ‘
C.某个对象的引用名;
D.某个对象的指针名。 .
8.关于成员函数特征的下述描述中,( )是错误的。
A.成员函数一定是内联函数;
B.成员函数可以重载;
C.成员函数可以设置参数的缺省值;
D.成员函数可以是静态的。
9.下述静态数据成员的特性中,( )是错误的。
A.说明静态数据成员时前边要加修饰符static
B. 静态数据成员要在类体外进行初始化
C.引用静态数据成员时,要在静态数据成员前加<类名>和作用域运算符
D.静态数据成员不是所有对象所共用的。
10.友元的作用( )。
A.提高程序的运用效率;
B.加强类的封装性;
C.实现数据的隐藏性;
D.增加成员函数的种类。
二、判断下列描述的正确性,对者划√,错者划×。
1.使用关键字class定义的类中缺省的访问权限是私有(private)的。
2.作用域运算符(::)只能用来限定成员函数所属的类。
3.析构函数是一种函数体为空的成员函数。
4.构造函数和析构函数都不能重载。
5.说明或定义对象时,类名前面不需要加class关键字。
6. 对象成员的表示与结构变量成员表示相同,使用运算符.或者->
7.所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。
8.某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
9. 可以在类的构造函数中对静态数据成员进行初始化
10.如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。
三、分析下列程序的输出结果。
1.构造函数
#include <iostream.h>
class A
{
public:
A();
A(int i,int j);
void print();
private:
int a,b;
};
A::A()
{
a=b=0;
cout<<”Default constructor called.\n”;
}
A::A(int i,int j)
{
a=i;
b=j;
cout<<”Constructor called.\n”;
}
void A::print()
{
cout<<”a=”<<a<<”,b=”<<b<<endl;
}
void main()
{
A m,n(4,8);
m.print();
n.print();
}
2. 类中有其它类的对象
#include<iostream.h>
class B
{
public:
B(){}
B(int i,int j);
void printb();
private:
int a,b;
};
class A
{
public:
A(){}
A(int i,int j);
void printa();
private:
B c;
};
A::A(int i,int j):c(i,j)
{}
void A::printa()
{ c.printb(); }
B::B(int i,int j)
{ a=i; b=j; }
void B::printb()
{ cout<<”a=”<<a<<”,b=”<<b<<endl; }
void main()
{
A m(7,9);
m.printa();
}
3. 静态成员变量和静态成员函数
#include<iostream.h>
class Count
{
public:
Count(){ count++; }
static int HM(){return count;}
~Count()
{
count–;
cout<<”count=”<<HM()<<endl;
}
private:
static int count;
};
int Count::count=100;
void main()
{
Count c1,c2,c3,c4;
cout<<”Count::HM : “<<Count::HM()<<endl;
cout<<”c1.hm : “<<c1.HM()<<endl;
}
4. 引用
#include<iostream.h>
class A
{
public:
A(double t,double r){ Total=t; Rate=r;}
friend double Count(A &a)
{
a.Total += a.Rate*a.Total;
return a.Total;
}
private:
double Total,Rate;
};
void main()
{
A a1(100.0,0.35),a2(200.0,0.02);
cout<<Count(a1)<<”,”<<Count(a2)<<endl;
}
5. 引用和拷贝构造函数
#include<iostream.h>
class Set
{
public:
Set(){ PC=0; }
Set(Set &s);
void Empty(){ PC=0; }
int IsEmpty(){ return PC==0; }
int IsMemberOf(int n);
int Add(int n);
void Print();
friend void reverse(Set *m);
private:
int elems[100];
int PC;
};
int Set::IsMemberOf(int n)
{
for(int i=0;i<PC;i++)
if(elems[i]==n)
return 1;
return 0;
}
int Set::Add(int n)
{
if(IsMemberOf(n))
return 1;
else if(PC>=100)
return 0;
else
{
elems[PC++]=n;
return 1;
}
}
Set::Set(Set &p)
{
PC=p.PC;
for(int i=0;i<PC;i++)
elems[i]=p.elems[i];
}
void Set::Print()
{
cout<<”{“;
for(int i=0;i<PC-1;i++)
cout<<elems[i]<<”,”;
if(PC>0)
cout<<elems[PC-1];
cout<<”}”<<endl;
}
void reverse(Set *m)
{
int n=m->PC/2;
for(int i=0;i<n;i++)
{
int temp;
temp = m->elems[i];
m->elems[i] = m->elems[m->PC-i-1];
m->elems[m->PC-i-1]=temp;
}
}
void main()
{
Set A;
if(A.IsEmpty())
cout<<”空序列“<<endl;
else
cout<<”非空序列“<<endl;
A.Print();
Set B;
for(int i=1;i<=8;i++)
B.Add(i);
B.Print();
if(B.IsMemberOf(5))
cout<<” 数 5 在此序列中“<<endl;
else
cout<<” 数 5 不在此序列中“<<endl;
B.Empty();
for(int j=11;j<20;j++)
B.Add(j);
Set C(B);
C.Print();
reverse( &C);
C.Print();
}
四、按下列要求编写程序。
在一个程序中,实现如下要求:
(1)构造函数重载;
(2)成员函数设置缺省参数;
(3)有一个友元函数;
(4)有一个静态函数;
(5)使用不同的构造函数创建不同对象。
>> 本文固定链接: http://www.vcgood.com/archives/1209
有答案吗?
急需要答案。谢谢
不错 基础很重要 呵呵
希望有人能帮我做下我的C语言考试题目~我真的不会做,我QQ372105005 希望做好的发给我QQ邮箱 372105005@qq.com
1.下述标识符中,( )是合法的用户标识符。
A.A#C B.getch C.void D.ab*
2.在C语言中,字符型数据在内存中是以( )形式存放的。
A.原码 B.BCD码 C.反码 D.ASCII码
3.c源程序经过编译后生成的文件后缀名是:( )。
A.obj B.exe C.c D.prj
4.有符号整数的有效范围是( )。
A.65536123 B.-32768~32767 C.4175462436 D.不确定的
5.等号与赋值号的优先级是( )。
A.等号高 B.赋值号高 C.一样高 D.不能比
6.以下哪一个可以代表一维数组a[10]的头地址。( )
(1)A.a[0] B.a C.a[10] D.&a[]
7.( )是构成C语言的基本单位。
A.函数 B.过程 C.子程序 D.子例程
8.若有说明:char s1=’\067′;char s2=”1″;char s3=’1′;则s1中(1),s2中(2),s3中(3)。
(1).A.包含3个字符 B.包含2个字符 ( )
C.包含1个字符 D.无定值,说明不合法
(2).A.包含1个字符 B.包含2个字符 ( )
C.包含3个字符 D.无定值,说明不合法
(3).A.包含1个字符 B.包含2个字符 ( )
C.包含3个字符 D.无定值,说明不合法
9.若x为int型变量,则执行以下语句后,x的值为( )。
x=6; x+=x-=x*x;
A.36 B.-60 C.60 D.-24
10.若有说明:int a[3][4];则对a数组元素的正确引用是( )
A. a[2][4] B. a[1,3] C. a[1+1][0] D. a(2)(1)
11.若有以下类型说明语句: char w; int x; float y; double z;
则表达式 w*x+z-y 的结果是( )类型。
A.float B.char C.int D.double
12.已知共用体类型:union data {int I;char ch;float f };请问以这种类型命名的变量内存长度是()
A.1 B.< ?:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />4 C.5 D.7
13.把字符数组a赋给字符数组b的方法是:( )
A. b=a B.strcat(b,a) C.*b=*a D.strcpy(b,a)
14.有字符数组a[80]和b[80],则正确的输出语句是( )
A. puts(a,b) B .printf(“%s,%s”,a[ ],b[ ]); C. putchar(a,b) D. puts(a), puts(b)
15.一个C语言的程序是由( )
A.一个主程序和若干个子程序组成 B.函数组成
C.若干过程组成 D.若干子程序组成
16.以下述叙不正确的是( )
A.一个C源程序可以由一个或多个函数组成 B.一个C源程序必须包含一个main函数
C. C程序的基本组成单位是函数 D. 在C程序中注释说明只能位于一条语句的后面
17.C语言中规定:在一个源程序中main函数的位置( )
A.必须在最开始 B.必须在系统调用的库函数的后面
C.可以任意 D.必须在最后
18.一个C程序的执行是从( )
A.本程序的main函数开始,到main函数结束
B.本程序文件的第一个函数开始,到本程序的最后一个函数结束
C.本程序的main函数开始,到本程序的最后一个函数结束
D.本程序文件的第一个函数开始,到本程序main函数结束
19.以下述叙正确的是( )
A . 在C程序中,main函数必须位于程序的最前面
B. C程序的每行中只能写一条语句
C. C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误
20.设有语句:int a=l,b=2,*p1=&a,*p2=&b;,以下可使指针p1指向变量b的赋
值语句是( )
A)P1=*P2 B)*P1=P2 C )P1=p2 D)*P1=*P2
21. 以下与int *p[3];等价的定义语句是( )
A)int *p; B)int *(p[3]) C)int p[3]; D)int (*p)[3];
22在以下选项中,操作不合法的一组是:( )
A)int x[6],*p; p=&x[0]; B)int x[6], *P; *p=x;
C)int x[6],*P; p=x; D)int x[5],P; p=x[o];
23.设有如下定义,若字荷型变量占1字节、整型变量占2字节、双精度变量占8字节
则结构变量s占用内存的字节数是: ( )
A)11 B)13 C )15 D)17
24文件是一种什么样的数据类型( )
A)结构体 B)共用体 C)数组 D)一种特殊的类型
25用来保存图书馆所有藏书,最好的数据类型应该是( )
A)结构体 B)指针 C)数组 D)指针数组
2其他三种类型的题目可参考的内容有:
< ?:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
(1) 条件语句的分类描述
(2) 循环语句的分类描述
(3) 有序整形数组a[]中插入一个数num,使得插入后的数组仍然有序
(4) 程序判定2008 — 2080年中的每一年是否闰年
(5) 输入华氏温度,求摄氏温度,公式为:c=5/9(F-32)。输出结果取2位小数
(6) 比较两个字符的大小,按由小到大输出
(7) 输入两个数,求两个数之和。
(8) 求1!+2!+3!+4!+5!+6!+…+10!
(9) 打印一个菱形的图案
(10) 有三种车型,夏利,桑塔那,奔驰,请输入公里数和所乘做的车型后计算费用。(不足2.5公里费用是6元,超过部分按照每公里1元,1.5元,2元的标准收取)
(11) 有三个候选人,有100个投票人,请根据唱票数计算每个人的得票数(用结构体数组)
怎么这个也没有答案啊
没有答案啊?
急需答案!
后面这套C题目 还是比较简单的