C#复习题加答案.docx
- 文档编号:8765388
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:26
- 大小:28.12KB
C#复习题加答案.docx
《C#复习题加答案.docx》由会员分享,可在线阅读,更多相关《C#复习题加答案.docx(26页珍藏版)》请在冰豆网上搜索。
C#复习题加答案
第一章面向对象程序设计基础
一、简述面向过程程序设计和面向对象程序设计的特点及不同。
第二章VisualStudio.NET简介
一、什么是SDK和IDE?
第三章C#程序设计初步
一、分别在SDK和IDE上编写“HelloWorld”程序。
二、什么是MSDN?
三、简述使用“命令提示符”编译并运行一C#程序文件的过程。
四、为何要设置csc.exe文件的环境变量?
第四章C#类型和语句成分
一、填空题
1.c#中的三元运算符是___。
2.当整数a赋值给一个object对象时,整数a将会被_。
3.publicstaticconstintA=1;这段代码有错误么?
是什么?
4.floatf=-123.567F;inti=(int)f;i的值现在是___
二、选择题
1.下列选项中,()是引用类型。
A)enum类型B)struct类型C)string类型D)int类型
2.C#的数据类型有()
A)值类型和调用类型;B)值类型和引用类型;C)引用类型和关系类型;D)关系类型和调用类型
3.C#中的类型float对应.NET类库中的
A.System.Single
B.System.Double
C.System.Int32
D.System.Int64
4.已知变量I有如下定义:
intI=1000;
则下列类型转换中,哪些出现了数据精度的丢失?
(多选)
A)byteJ=(byte)I;B)longL=(long)I;C)doubleD=(double)I;D)shortS=(short)I;
5.在C#.NET中,下列那些逻辑表达式可以用来判断变量nNum1不等于1且不等于2(多选)
A)nNum1<>1&&nNum1<>2
B)(!
nNum1==1)&&(!
nNum1==2)
C)!
(nNum1==1&&nNum1==2)
D)!
(nNum1==1||nNum1==2)
6.执行下列C#程序代码后,sum的值为:
intsum=0;
for(inti=0;i<5;i++){
if(i<3)
sum=sum+i;
else
sum=sum*i;
}
A)3B)12C)24D)36
7.变量ICompany采用的是()命名法
A)HungarianB)CamelC)PascalD)GB2312
三、简答题
1.在C#中,请比较stringstr=null与stringstr=“”的区别。
2.什么是关键字?
3.C#语言的注释有几种形式?
请举例说明。
4.简述栈和堆在存储数据方式的不同。
5.什么是Unicode编码?
有何特点?
6.举例说明几种显示转换的方法(至少四种)。
7.简述运算符&和运算符&&的区别。
四、程序分析题
1、请写出下面程序的执行结果。
(1)
intvalOne=0;
intvalTwo=valOne;
intvalThree=333;
valTwo=333;
TestValueRefRef1=newTestValueRef();
TestValueRefRef2=Ref1;
Ref2.value=444;
Console.WriteLine("values:
{0},{1}",Ref1.value,Ref2.value);
Console.WriteLine("values:
{0},{1},{2}",valOne,valTwo,valThree);
(2)
publicclassEnumTest
{enumDays{Sat=1,Sun,Mon,Tue,Wed,Thu,Fri};
staticvoidMain()
{intx=(int)Days.Sun;inty=(int)Days.Fri;
Console.WriteLine("Sun={0}",x);
Console.WriteLine("Fri={0}",y);}
}
第五章语句和程序结构
一、简答题
1.什么是空语句?
有何作用?
2.要代码输出“Seeme?
”,则需要在该代码前添加什么代码?
#ifDEBUG
Console.WriteLine("Seeme?
");
#endif
3.下面代码是否正确?
若不正确,请改正。
foreach(inttempinarrayOfInts)
{
temp++;
Console.WriteLine(temp);
}
4.什么是命名空间?
语法格式如何?
为何在编写程序时经常要导入命名空间?
5.异常处理语句有何作用?
有哪些形式的语句?
6.简述foreach语句特点。
二、程序分析题
1.下面程序执行后,输出结果是什么?
classSwitchTest
{
staticvoidMain()
{
intn=2;
switch(n)
{case1:
case2:
case3:
Console.WriteLine("It's1,2,or3.");
break;
default:
Console.WriteLine("Notsurewhatitis.");
break;
}
}
}
2.下面代码执行后输出如何?
如果注释掉break;而让continue;生效,结果又如何?
intsum=0;
for(inti=1;i<=5;i++)
{
if(i==3)
//continue;
break;
sum+=i;
}
Console.WriteLine("计算结果为:
"+sum);
3.当用户输入数字2后,下面代码执行后输出如何?
usingSystem;
classSwitchTest
{
staticvoidMain()
{
Console.WriteLine("Coffeesizes:
1=Small2=Medium3=Large");
Console.Write("Pleaseenteryourselection:
");
strings=Console.ReadLine();
intn=int.Parse(s);
intcost=0;
switch(n)
{
case1:
cost+=25;
break;
case2:
cost+=25;
gotocase1;
case3:
cost+=50;
gotocase1;
default:
Console.WriteLine("Invalidselection.Pleaseselect1,2,or3.");
break;
}
if(cost!
=0)
{
Console.WriteLine("Pleaseinsert{0}cents.",cost);
}
Console.WriteLine("Thankyouforyourbusiness.");
}
}
第六章数组和字符串
一、选择题
1.int[][]myArray3=newint[3][]{newint[3]{5,6,2},newint[5]{6,9,7,8,3},newint[2]{3,2}};myArray3[2][2]的值是()。
A)9B)2C)6D)越界
2.下面哪个代码有误?
A)int[]Array1={11,13,15};B)int[]Array1=newint[3]{11,13,15};
C)int[]Array1;Array1=newint[3]{11,13,15};D)int[]Array1;Array1={11,13,15};
3.以下方法是用来将字母转换成大写的是()
A)String.Trim();B)String.ToUpper();C)String.IndexOf();D)String.Format();
二、程序分析题
1.请写出程序执行结果。
int[,]AA,BB;AA=newint[2,2];
for(inti=0;i<=1;i++)
for(intj=0;j<=1;j++)
{AA[i,j]=i*10+j;Console.WriteLine(AA[i,j]);}
BB=AA;BB[0,0]=2*BB[1,1];
Console.WriteLine("BB[0,0]={0}BB[1,1]={1}",BB[0,0],BB[1,1]);
第七章类和对象
一、选择题
1.下列关于构造函数的描述正确的是()
A)构造函数可以声明返回类型。
B)构造函数不可以用private修饰
C)构造函数必须与类名相同D)构造函数不能带参数
2.下列关于C#中索引器理解正确的是()
A)索引器的参数必须是两个或两个以上B)索引器的参数类型必须是整数类型
C)索引器没有名字D)以上皆非
3.以下类MyClass的属性count属于_____属性.
classMyClass
{
inti;
intcount
{
get{returni;}
}
}
A)只读B)只写C)可读写D)不可读不可写
4.类MyClass中,下列哪条语句定义了一个只读的属性Count?
A)privateintCount;
B)privateintcount;
publicintCount{
get{returncount;}
}
C)publicreadonlyintCount;
D)publicreadonlyintCount
{
get{returncount;}
set{count=value;}
}
二、填空题
1.面向对象最重要的特点有、、。
2.默认的构造函数为,析构函数为。
三、简答题
1.简述类和对象的关系
2.请叙述属性与索引器的区别。
3.下列的Main方法的定义是否为合法的程序入口点?
namespaceMyProgram{
publicstaticvoidMain(){MyClass.DoSomething();}
classMyClass{
publicstaticvoidDoSomething(){……}
}
}
4.请写出类声明的语法格式。
5.什么是常量?
关键字是什么?
6.请比较关键字readonly和const的区别。
7.构造函数有何特点?
8.什么是重载?
通过举例说明,有的程序中使用重载的必要性。
9.什么是属性过程?
为何要使用属性过程?
四、程序分析题
1.下面程序是否有误?
publicintstaticInt;
staticMyClass()
{
Console.WriteLine(staticInt);
Console.WriteLine("Thestaticconstructorinvoked.");
staticInt=1;
}
2.某文件中有类MyClass,代码如下:
classMyClass
{publicvoidMyFunc(){…}
publicstaticvoidMyMethod(){…}
}
现要在同一文件中类MainClass中使用MyClass类中的两个方法,请完成下面代码
classMainClass
{staticvoidMain()
{
//本行前添加调用MyFun方法的代码。
//本行前添加调用MyMethod方法的代码。
}
}
3.请按要求完成以下代码:
privatestringstuName;
privateintstuID;
publicStudent(stringstuName,intxuehao):
this()
{//在本行下面添加参数传值的代码。
}
4.请使用属性过程编写一完整的程序,检测用户输入的年份数字是否合法,并判断是否为闰年。
第八章方法
一、选择题
1.以下关于ref和out的描述哪些项是正确的?
(多选)()
A.使用ref参数,传递到ref参数的参数必须最先初始化。
B.使用out参数,传递到out参数的参数必须最先初始化。
C.使用ref参数,必须将参数作为ref参数显式传递到方法。
D.使用out参数,必须将参数作为out参数显式传递到方法。
二、简答题
1.请简述实例方法和静态方法的区别。
2.params参数有何特点?
为何要使用该参数?
3.请比较out参数和ref参数的区别。
4.请说明Main函数的特点。
第九章继承和访问控制
一、选择题
1.“访问范围限定于此程序或那些由它所属的类派生的类型”是对以下哪个成员可访问性含义的正确描述?
()
A)publicB)protectedC)internalD)protectedinternal
二、简答题
1.类成员有哪几种可访问形式?
并简述各自的访问权限。
2.用sealed修饰的类有什么特点?
3.请指出.net中所有类型的基类。
4.简述基类和派生类的区别。
5.请说明关键字new的几种用途。
6.请比较关键字base和this的区别。
7.抽象类和抽象方法各有何特点?
8.请解释csc/t:
librarymodifier.cs和csc/r:
modifier.dlltest.cs两命令的作用。
三、程序分析题
1.已知类Square继承自抽象类ShapesClass,请完成抽象类的声明和定义。
classSquare:
ShapesClass
{
privateintx,y;
publicSquare(inta,intb)
{
x=a;
y=b;
}
publicoverrideintArea()
{
returnx*y;
}
}
2.已知类CollegeStudent继承自类Student,下面关于两个类的声明和定义都不完整,请将下面代码补充,保证程序正确。
publicclassStudent
{
publicStudent(stringstr,intid)
{studName=str;
studID=id;
}
publicvoidFindInfo(intid)
{if(id==studID)
Console.WriteLine("{0}isastudent.",studName);
}
}
publicclassCollegeStudent
{
publicCollegeStudent(stringdeptmnt,stringstr,intid)
{department=deptmnt;}
publicvoidFindInfo(intid)
{if(id==studID)
Console.WriteLine("{0}isastudentinthe{1}Department.",studName,department);
}
}
第十章多态
一、选择题
1.abstractclassBaseClass
{
publicvirtualvoidMethodA(){}
publicvirtualvoidMethodB(){}
}
classClass1:
BaseClass
{
publicvoidMethodA(stringarg){}
publicoverridevoidMethodB(){}
}
classClass2:
Class1
{
newpublicvoidMethodB(){}
}
classMainClass
{
publicstaticvoidMain(string[]args)
{
Class2o=newClass2();
o.MethodA();
}
}
请问,o.MethodA调用的是()
A)BaseClass.MethodAB)Class2.MethodAC)Class1.MethodAD)都不是
2.已知接口IHello和类Base、MyClass的定义如下
interfaceIHello{
voidHello();
}
classBase:
IHello{
publicvoidHello()
{
System.Console.WriteLine("HelloinBase!
");
}
}
classDerived:
Base{
publicvoidHello()
{
System.Console.WriteLine("HelloinDerived!
");
}
}
则下列语句在控制台中的输出结果为_____。
IHellox=newDerived();
x.Hello();
A.HelloinBase!
B.HelloinDerived!
C.HelloinBase!
HelloinDerived!
D.HelloinDerived!
HelloinBase!
二、简答题
1.override与重载的区别。
2.根据自己的理解,请解释什么是多态。
3.什么是多态对象?
4.什么是上溯?
三、程序分析题
1.下面的代码中有什么错误吗?
usingSystem;
classA
{
publicvirtualvoidF(){
Console.WriteLine("A.F");
}
}
abstractclassB:
A
{
publicabstractoverridevoidF();
}
2.在下面的例子里
usingSystem;
classA
{
publicA(){PrintFields();}
publicvirtualvoidPrintFields(){}
}
classB:
A
{
intx=1;
inty;
publicB(){y=-1;}
publicoverridevoidPrintFields(){
Console.WriteLine("x={0},y={1}",x,y);
}
当使用newB()创建B的实例时,产生什么输出?
第十一章接口和结构
一、选择题
1.以下叙述正确的是:
A)接口中可以有虚方法。
B)一个类可以实现多个接口。
C)接口不能被实例化。
D)接口中可以包含已实现的方法。
2.下列描述错误的是()
A)类不可以多重继承而接口可以;B)抽象类自身可以定义成员而接口不可以;
C)抽象类和接口都不能被实例化;D)一个类可以有多个基类和多个基接口;
3.以下的C#代码,试图用来定义一个接口:
publicinterfaceIFile
{
intA;
intdelFile()
{
A=3;
}
voiddisFile();
}
关于以上的代码,以下描述错误的是()。
A)以上的代码中存在的错误包括:
不能在接口中定义变量,所以intA代码行将出现错误。
B)以上的代码中存在的错误包括:
接口方法delFile是不允许实现的,所以不能编写具体的实现函数。
C)代码voiddisFile();声明无错误。
D)代码voiddisFile();应该编写为voiddisFile(){}。
4.接口是一种引用类型,在接口中可以声明(),但不可以声明公有的域或私有的成员变量。
A)方法、属性、索引器和事件B)方法、属性信息、属性
C)索引器和字段D)事件和字段
5.以下哪些可以作为接口成员?
(多选)()
A)方法B)属性C)字段D)事件E)索引器F)构造函数G)析构函数
6.已知结构Resource的定义如下:
structResource{
publicintData=0;
}
则下列语句的运行结果为_________。
Resource[]list=newResource[20];
for(inti=0;i<20;i++){
System.Console.WriteLine(“data={0}”,list[i].Data);
}
A)打印20行,每行输出都是data=0
B)打印20行,每行输出都是data=null
C)打印20行.第1行输出data=0,第2行输出data=2,⋯,第20行输出data=19
D)出现运行时异常
二、简答题
1.比较C#中接口和类的异同。
2.谈谈类和结构的区别?
3.简述接口的特点。
4.请解释接口的显式实现有什么意义?
三、程序分析题
1.已知类LectureNotes继承自接口ISalable,请补充完整接口ISalable的声明和定义。
publicclassLectureNotes:
ISalable
{publicvoidSale()
{Console.WriteLine("Saleoncost.");}
}
第十二章委托和事件
一、选择题
1.声明一个委托publicdelegateintmyCallBack(intx);则用该委托产生的回调方法的原型应该是()。
A)voidmyCallBack(intx);
B)intreceive(intnum);
C)stringreceive(intx);
D)不确定的;
2.分析下列语句:
namespaceTestCS{
publicdelegatevoidHello(stringtarget);
}
该语句的作用是:
A)在TestCS命名空间中定义了一个名为Hello的全局方法;
B)在TestCS命名空间中声明了函数Hello的原型;
C)在TestCS命名空间中定义了一个名为Hello的函数指针;
D)在TestCS命名空间中定义了了一个名为Hello的委托类型;
3.已知类MyClass中事件MouseClicked定义如下:
publicstaticeventMouseClickedListenerMouseClicked;
执行下列语句:
MouseClicked+=newMouseClickedListener(obj.DoSomething);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 复习题 答案