c#期末考试复习题及答案.docx
- 文档编号:23202669
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:19
- 大小:20.46KB
c#期末考试复习题及答案.docx
《c#期末考试复习题及答案.docx》由会员分享,可在线阅读,更多相关《c#期末考试复习题及答案.docx(19页珍藏版)》请在冰豆网上搜索。
c#期末考试复习题及答案
基于C#的OOP技术课程复习题
///////////////////////////////////////////////////
一、判断题(本大题共10个小题,每小题1分,共10分)
1.在同一行上可以书写多条语句,每条语句间用分号分隔。
(t )
2.在数据类型转化时,只能通过类型转换关键字或Convert类实现。
(f )
3.接口与类同样是面向对象程序设计的核心,是创建对象的模版。
(F )
4.委托是将方法作为参数传递给另一方法的一种数据类型。
事件与委托没有关系。
(F )
5.可以重写私有的虚方法。
(T )
6.使用Directory类的Move()方法可以删除文件。
(T )
7.不能指定接口中方法的修饰符。
(T )
8.在定义数组时不允许为数组中的元素赋值。
(F )
9.接口与类同样是面向对象程序设计的核心,是创建对象的模版。
( )
10.如果要实现重写,在基类的方法中必须使用virtual关键字,在派生类的方法中必须使用overrides关键字。
(T )
11.在C#中,所有类都是直接或间接地继承System.Object类而得来的。
(T )
12.在C#中,任何方法都不能实现多继承。
(F )
13.在C#中,子类不能继承父类中用private修饰的成员变量和成员方法。
(F )
14.可以阻止某一个类被其他类继承。
(T )
15.使用FileInfo类的Copy()方法可以复制文件。
(T )
二、选择题(本大题共20个小题,每小题2分,共40分)
1.在C#中,表示一个字符串的变量应使用以下哪条语句定义?
B
A.CStringstr;
B.stringstr;
C.Dimstrasstring
D.char*str;
2.C#中MyClass为一自定义类,其中有以下方法定义:
A
publicvoidHello(){…}
使用以下语句创建了该类的对象,并使变量obj引用该对象,那么,访问类MyClass的Hello方法正确的是:
MyClassobj=newMyClass();
A.obj.Hello();
B.obj:
:
Hello();
C.MyClass.Hello();
D.MyClass:
:
Hello();
3.分析下列程序中类MyClass的定义D
classBaseClass
{publicinti;}
classMyClass:
BaseClass
{publicnewinti;}
则下列语句在Console上的输出为_______.
MyClassy=newMyClass();
BaseClassx=y;
x.i=100;
Console.WriteLine("{0},{1}",x.i,y.i);//(提示:
注意类MyClass中的new关键字)
A.0,0
B.100,100
C.0,100
D.100,0
4.在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成_C___。
A.sealed方法
B.public方法
C.virtual方法
D.override方法
5.为了将字符串str=“123,456”转换成整数123456,应该使用以下哪条语句?
A
A.intNum=int.Parse(str);
B.intNum=str.Parse(int);
C.intNum=(int)str;
D.intNum=int.Parse(str,Globalization.NumberStyles.AllowThousands);
6.在C#语言中,下列能够作为变量名的是_C___。
A.if
B.3ab
C.a_3b
D.a-bc
7.以下程序的输出结果是_C___。
Usingsystem;
ClassExample1
{
PublicStaticvoidmain(){
Inta=5,b=4,c=6,d;
Console.Writeline(“{0}”,d=a>b?
(a>c?
a:
c):
b);
}
}
A.5
B.4
C.6
D.不确定
8.能正确表示逻辑关系“a>=10或a<=0”的C#语言表达式是_D___。
A.a>=10ora<=0
B.a>=10|a<=0
C.a>=10&&a<=0
D.a>=10||a<=0
9.以下关于for循环的说法不正确的是__A__。
A.for循环只能用于循环次数已经确定的情况
B.for循环是先判定表达式,后执行循环体语句
C.for循环中,可以用break语句跳出循环体
D.for循环体语句中,可以包含多条语句,但要用花括号括起来。
10.有如下程序Usingsystem;C
ClassExample1
{
PublicStaticvoidmain()
{
Intx=1,a=0,b=0;
Switch(x)
{
Case0:
b++,break;
Case1:
a++,break;
Case2:
a++,b++;break;
}Console.Writeline(“a={0},b={1}”,a,b);
}}的输出结果是
A.a=2,b=1
B.a=1,b=1
C.a=1,b=0
D.a=2,b=2
11.关于C#语言的方法,下列叙述中正确的是_A___。
A.方法的定义不能嵌套,但方法调用可以嵌套
B.方法的定义可以嵌套,但方法调用不能嵌套
C.方法的定义和调用都不能嵌套
D.方法的定义和调用都可以嵌套
12.下列程序的结果是:
B
Usingsystem;
ClassExample1
{
Staticlongfib(intn)
{
If(n>2)return(fib(n-1)+fib(n-2));
Elsererurn
(2);
}PublicStaticvoidmain()
{Console.Writeline(“{0}”,fib(3));
}}
A.2
B.4
C.6
D.8
13.调用重载方法时,系统根据___B_____来选择具体的方法。
A.方法名
B.参数的个数和类型
C.参数名及参数个数
D.方法的返回值类型
14.下列的___D____不是构造函数的特征。
A.构造函数的函数名和类名相同
B.构造函数可以重载
C.构造函数可以带有参数
D.可以指定构造函数的返回值
15.已知类B是由类A继承而来,类A中有一个为M的非虚方法,现在希望在类B中也定义一个名为M的方法,若希望编译时不出现警告信息,则在类B中声明该方法时,应使用____B____方法。
A.static
B.new
C.override
D.virtual
16.下列关于try…catch…finaly语句的说明中,不正确的是____D_____。
A.catch块可以有多个
B.finaly
C.catch块也是可选的
D.可以只有try块
17.以下标识符中,正确的是_A___。
A._nName
B.typeof
C.6b
D.x5#
18.下面有关运算符的说法正确的是_D___
A.算术运算符不能对布尔类型,String*(字符串类型)和Object*(对象类型)进行算术运算
B.关系运算中的”==”和赋值运算符中的”=”是相同的
C.sizeof运算符用来查询某种数据类型或表达式的值在内存中所占懂得内存空间大小(字节数)
D.括号在运算符中的优先级中是最高的,它可以改变表达式的运算顺序
19.下面对抽象类描述不正确的是__C____。
A.抽象类只能作为基类使用
B.抽象类不能定义对象
C.抽象类可以实例对象
D.可以实现多态
20.下面对异常说法不正确的是_D__
A.try/catch块为基本引发异常的组合
B.在捕获异常时,可以有多个catch块
C.无论异常是否发生,finally块总会执行
D.try块和finally不能连用
1.C#中,新建一字符串变量str,并将字符串"Tom'sLivingRoom"保存到串中,则应该使用下列哪条语句?
A
A.stringstr="Tom\'sLivingRoom";
B.stringstr="Tom'sLivingRoom";
C.stringstr("Tom'sLivingRoom");
D.stringstr("Tom"sLivingRoom");
2.分析下列程序:
A
publicclassclass4
{
privatestring_sData="";
publicstringsData{set{_sData=value;}}
}
在Main函数中,在成功创建该类的对象obj后,下列哪些语句是合法的?
A.obj.sData="Itisfunny!
";
B.Console.WriteLine(obj.sData);
C.obj._sData=100;
D.obj.set(obj.sData);
3.分析下列程序中类MyClass的定义
classBaseClass
{publicinti;}
classMyClass:
BaseClass
{publicnewinti;}
则下列语句在Console上的输出为___D____.
MyClassy=newMyClass();
BaseClassx=y;
x.i=100;
Console.WriteLine("{0},{1}",x.i,y.i);//(提示:
注意类MyClass中的new关键字)
A.0,0
B.100,100
C.0,100
D.100,0
4.在类的定义中,类的___B_______描述了该类的对象的行为特征。
A.类名
B.方法
C.所属的名字空间
D.私有域
5.关于C#程序的书写,下列不正确的说法是__D__。
A.区分大小写
B.一行可以写多条语句
C.一条语句可写成多行
D.一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法
6.能正确表示逻辑关系“a>=10或a<=0”的C#语言表达式是_D___。
A.a>=10ora<=0
B.a>=10|a<=0
C.a>=10&&a<=0
D.a>=10||a<=0
7.if语句后面的表达式应该是_B___。
A.逻辑表达式
B.条件表达式
C.算术表达式
D.任意表达式
8.以下叙述正确的是__D__。
A.do….while语句构成的循环不能用其他语句构成的循环来代替
B.do….while语句构成的循环只能用break语句退出
C.用do….while语句构成的循环,在while后的表达式为true时结束循环
D.用do….while语句构成的循环,在while后的表达式应为关系表达式或逻辑表达式
9.以下程序的输出结果是:
C
ClassExample1
{
PublicStaticvoidmain()
{
IntI;
Int[]a=newint[10];
For(i=9;i>=0;i--)a[i]=10-I;
Console.Writeline(“{0},{1}{2}”,a[2],a[5],a[8]);
}}
A.258
B.741
C.852
D.369
10.关于C#语言的方法,下列叙述中正确的是_A___。
A.方法的定义不能嵌套,但方法调用可以嵌套
B.方法的定义可以嵌套,但方法调用不能嵌套
C.方法的定义和调用都不能嵌套
D.方法的定义和调用都可以嵌套
11.下列程序的结果是:
B
Usingsystem;
ClassExample1
{
Staticlongfib(intn)
{
If(n>2)return(fib(n-1)+fib(n-2));
Elsererurn
(2);
}PublicStaticvoidmain()
{Console.Writeline(“{0}”,fib(3));
}}
A.2
B.4
C.6
D.8
12.调用重载方法时,系统根据___B_____来选择具体的方法。
A.方法名
B.参数的个数和类型
C.参数名及参数个数
D.方法的返回值类型
13.下列的__D_____不是构造函数的特征。
A.构造函数的函数名和类名相同
B.构造函数可以重载
C.构造函数可以带有参数
D.可以指定构造函数的返回值
14.类ClassA有一个名为M1的方法,在程序中有如下一段代码,假设该段代码是可以执行的,则修饰M1方法时一定使用了___B_____修饰符。ClassAobj=newClassA();
ClassA.M1();
A.public
B.static
C.private
D.virtual
15.为了能够在程序中捕获所有的异常,在catch语句的括号中使用的类名为_____A____。
A.Exception
B.DivideByZeroException
C.FormatException
D.以上三个均可
16.关于异常,下列的说法中不正确的是___D______。
A.用户可以根据需要抛出异常
B.在被调用方法可通过throw语句把异常传回给调用方法
C.用户可以自己定义异常
D.在C#中有的异常不能被捕获
17.以下类型中,不属于值类型的是__D__。
A.整数类型
B.布尔类型
C.字符类型
D.类类型
18.下列给出的变量名正确的是_A____.
A.intNO.1
B.charuse
C.floatMain
D.char@use
19.在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成__C__。
A.sealed方法
B.public方法
C.virtual方法
D.override方法
20.为了将字符串str=“123,456”转换成整数123456,应该使用以下哪条语句?
A
A.intNum=int.Parse(str);
B.intNum=str.Parse(int);
C.intNum=(int)str;
D.intNum=int.Parse(str,Globalization.NumberStyles.AllowThousands);
三、程序阅读题(本大题共5个小题,每小题5,共25
1.写出以下程序的运行结果。
usingSystem;
classTest
{
publicstaticvoidMain()
{
intx=5;
inty=x++;
Console.WriteLine(y);
y=++x;
Console.WriteLine(y);
}
}
2.写出下列函数的功能。
staticfloatFH(){
floaty=0,n=0;
intx=Convert.ToInt32(Console.ReadLine());//从键盘读入整型数据赋给x
while(x!
=-1){
n++;y+=x;
x=Convert.ToInt32(Console.ReadLine());
}
if(n==0)
returny;
else
returny/n;
}
3.写出以下程序的功能。
staticvoidf2(refdouble[]a,intn)
{inti;doublesum=0;
for(i=0;i sum/=n; for(i=0;i if(a[i]>=sum) Console.write(a[i]+““); Console.writeLine(); } 4.写出以下程序运行结果。 usingSystem; classTest { staticvoidLE(refinta,refintb){ intx=a; a=b; b=x; Console.writeLine(a+““+b); } publicstaticvoidMain() { intx=10,y=25; LE(refx,refy); Console.writeLine(x+““+y); } } 5.写出以下程序的运行结果。 usingSystem; classTest { publicstaticvoidMain() { int[]a={2,4,6,8,10,12,14,16,18}; for(inti=0;i<9;i++){ Console.write(“”+a[i]); if((i+1)%3==0)Console.writeLine(); }} } 6..写出下列函数的功能。 staticintSA(inta,intb) { if(a>b) return1; elseif(a==b) return0; else return-1; } 7.写出以下程序运行结果。 usingSystem; classTest { staticint[]a={1,2,3,4,5,6,7,8}; publicstaticvoidMain() { ints0,s1,s2; s0=s1=s2=0; for(inti=0;i<8;i++) { switch(a[i]%3) { case0: s0+=Test.a[i];break; case1: s1+=Test.a[i];break; case2: s2+=Test.a[i];break; } } Console.WriteLine(s0+""+s1+""+s2); } } 8.写出以下程序运行结果。 usingSystem; classTest { constintN=5; publicstaticvoidMain(){ inta=0; for(inti=1;i { intc=0,b=2; a+=3;c=a+b; Console.write(c+““); }} 9.写出以下程序的功能。 staticvoidWA(refint[]a,intn){
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c# 期末考试 复习题 答案