C#试题.docx
《C#试题.docx》由会员分享,可在线阅读,更多相关《C#试题.docx(21页珍藏版)》请在冰豆网上搜索。
![C#试题.docx](https://file1.bdocx.com/fileroot1/2023-1/29/5acfd027-8b80-4d4d-a5ae-f0d7f1c0e914/5acfd027-8b80-4d4d-a5ae-f0d7f1c0e9141.gif)
C#试题
选择题:
1、在C#中,下面代码运行后,变量c的值是(c)
inta=15,b=10;
floatc=(float)a/b;
a)0
b)1
c)1.5
d)5
2、C#语言与Java语言一样,也是一种面向对象的语言,C#语言中声明类的关键字是(b)。
(选择一项)
a)using
b)class
c)namespace
d)Main
3.在C#中,下列代码的运行结果是(d)
namespaceConsoleApplication2
{
classProgram
{
staticvoidMain(string[]args)
{
intx=6;
switch(x){
case6:
case7:
Console.WriteLine("今?
天¬¨¬是º?
周¨¹末?
");
break;
case1:
Console.WriteLine("今?
天¬¨¬是º?
星?
期¨²1");
break;
case2:
Console.WriteLine("今?
天¬¨¬是º?
星?
期¨²2");
break;
default:
Console.WriteLine("你?
完ª¨º成¨¦任¨?
务?
了¢?
吗e?
ê?
");
break;
}
Console.Read();
}
}
}
编译出错
输出:
今天是星期一
输出:
今天是星期二
输出:
今天是周末
4.在C#中,下列代码的运行结果是(b)
(选择一项)
usingSystem;
classTest
{
PublicstaticvoidMain(string[]args)
{
inta=21,b=22,c=23;
if(a
Console.WriteLine(b);
else
Console.WriteLine(a+b+c);
}
}
a)21
b)22
c)23
d)66
5.在下列C#代码中,程序的命名空间是(a)
usingSystem;
namespaceTest{
classProgram{
staticvoidMain(string[]args){
Console.Write(“HelloWorld!
”);
}
}
}
Test
Main
namespace
Program
6.C#语言中的类Console包含两个输入方法:
Write()和WriteLine()。
它们之间的唯一区别是(a)。
(选择一项)
a)WriteLine()方法输出后换行,Write()方法输出后不换行
b)WriteLine()方法可以格式化输出,Write()方法不可以
c)Write()方法输出后换行,WriteLine()方法输出后不换行
d)Write()方法可以格式化输出,WriteLine()方法不可以
7.以下的C#程序代码,程序运行时在控制台打印输出值为(c)
intcount=3;
while(count>1)
{
Console.Write(--count);
}
a)32
b)321
c)21
d)2
8.关于C#中的switchcase语句,以下说法正确的是(c)
switch判断的表达式可以是整型或者字符型,但不能是字符串型
在该语句中最多不能超过5个case子句
在该语句中只能有一个default子句
在该句中只能有一个break语句
9.在以下C#类中,(b)是控制台类,利用它我们可以方便的进行控制台的输入输出。
a)Control
b)Console
c)Cancel
d)Write
10.C#程序的(a)方法被成为程序的大门,应用程序从这里开始运行
a)Main()
b)Begin()
c)Start()
d)main()
11.Console是C#语言中的控制台类,它负责向控制台输出不同格式的字符串,在格式字符串中,可以使用(b)来实现水平制表输出。
\r
\t
\n
\d
12.在c#的条件判断语句switchcase结构中,(d)子句用于指定在找不到匹配项时执行的动作
a)continue
b)goto
c)else
d)default
13.使用VisualStudio2005开发C#控制台应用程序包括3个步骤,其中不包括(c)
a)新建项目
b)生成解决方案
c)保存项目
d)调试
14.在c#中,下列代码的运行结果是(c)
usingSystem;
classTest{
staticVoidMain(string[]args){
inta=10,b=20;
intc=a>b?
a++:
--b;
Console.WriteLine(c);
}
}
10
11
19
20
15.在C#语言中,main()方法是程序的大门,应用程序从此处开始运行。
以下mainO方法中,存在错误的是(a)
a)staticstringMain(string[]args){}
b)staticintMain(string[]args){}
c)staticvoidMain(){}
d)staticvoidMain(string[]args){}
16.以下关于C#代码的说法正确的是(a)
for(inti=l;i<=3;i++)
{
switch(i)
{
case1:
Console.Write{i.ToString());
case2:
Console.Write((i*2).ToString());
case3:
Console.Write((i*3).ToString());
}
}
a)有编译错误,提示case标签不能贯穿到另一个标签,不能运行
b)输出149
c)输山123246369
d)正确运行,但没有输出
17.多数编程语言都提供数据组这种数据存储结构来存储同种类型的多个数据元素。
在C#中定义了如下数据。
选项中有关该数组的说法中错误的是(b)
int[]array;
array=newint[10];
该数组最多包含10个元素
该数组的第一个数组元素索引值为1
该数组被使用前必须先赋值
该数组定义与int[]array=newint[10];等价
18.使用C#语言开发程序时,对一组三个元素的数据(20,89,54),采用冒泡排序法按升序排序,需要比较(d)次
1
2
3
4
在C#中,下列代码运行的结果是(c)
UsingSystem;
ClassTest
{
StaticvoidMain()
{
Stringname=”ADO.NET”;
Foreach(charcinname)
{
Console.Write(c);
}
}
}
输出:
name
输出:
ADO.NET
编译错误,存在语法错误
输出:
ccc
20.在C#中,下列代码的运行结果是(c)
int[]age=newint[]{16,18,20,14,22};
foreach(intiinage){
if(i>18)
continue;
Console.Write(i.ToString()+””);
}
a)16,18,20,14,22
b)16,18,14,22
c)16,18,14
d)16,18
21.现有如下一段C#,该代码的运算结果是(b)。
publicstaticvoidMain(){
for(inti=1;i<=3;i++){
switch(i){
case1:
Console.write(i.ToString());
break;
default;
Console.write((i*2).toString());
break;}
}
}
}
a)146
b)有编译错误
c)246
d)123
在C#中,下列代码的运行结果是(a)
usingSystem;
classTest{
staticvoidMain(string[]args){
string[]strings={“a”,”b”,”c”};
foreach(stringinfoinstrings)
{
Console.Write(info);
}
}
}
abc
a
b
C
23.在C#程序中,已知某一维数组的名称为myArray,则该数组的长度为(a)
a)myArray.Length
b)myArray[].length
c)myArray[Length]
d)myArray(Length)
在C#程序中,以下初始化一维数组的语句中错误的是(d)
a)int[]array=newint[5]{1,2,3,4,5};
b)int[]array=newint[]{1,2,3};
c)int[]array={1,2,3,4};
d)int[]array=newint[5]{1,2,3,4};
25.在C#语言的循环结构中,首先执行一次,然后再判断条件的循环结构是(b)
a)while循环
b)do…while循环
c)for循环
d)foreach循环
26.在C#程序中,使用(a)关键字来创建数组
a)new
b)array
c)staic
d)this
27.在C#语言中,下列异常处理结构中有错误的是(a)
a)catch{}finally{}
b)try{}finally{}
c)try{}catch{}finally{}
d)try{}catch{}
28.C#编译器将C#程序编译成(c)样的代码
A.汇编语言代码
B.机器语言代码
C.微软中间语言代码
D.二进制代码
29.下列(b)语言不是面向对象的
A.C#
B.VB
C.VB.NET
D.C++
30.C#程序从上机到得到结果的几个操作步骤依次是(A)
A.输入、编辑、运行B.编译、连接、运行
C.输入、运行、编辑D.编辑、编辑、连接
31.可用作C#程序用户标识符的一组标识符是(B)
A.voiddefine+WORDB.a3_b3_123YN
C.for-abcCaseD.2aDOsizeof
32.能作为C#程序的基本单位是(B)。
A.字符B.语句C.函数D.源程序文件
33.x>0&&x<=10的相反表达式为(A)。
A.x<=0||x>10B.x<=0&&x>10
C.x<=0||x<=10D.x>0&&x>10
34.在下面循环语句中循环体执行的次数为(B)。
for(inti=0;iif(i>n/2)break;
A.n/2B.n/2+1C.n/2-1D.n-1
35.在类作用域中能够通过直接使用该类的(D)成员名进行访问。
A.私有B.公用C.保护D.任何
36.假定一个10行20列的二维整型数组,下列哪个定义语句是正确的(C)。
A.int[]arr=newint[10,20]
B.int[]arr=intnew[10,20]
C.int[,]arr=newint[10,20]
D.int[,]arr=newint[20;10]
37.以下正确的描述是(B)。
A.函数的定义可以嵌套,函数的调用不可以嵌套
B.函数的定义不可以嵌套,函数的调用可以嵌套
C.函数的定义和函数的调用均可以嵌套
D.函数的定义和函数的调用均不可以嵌套
在c#中,表示一个字符串变量应使用以下(B)语句定义
A.CStringstr;
B.stringstr;
C.Dimstrasstring
D.char*str
在类的定义中,类的(B)描述了该类的对象的行为特征
A.类名
B.方法
C.所属的命名空间
D.私有域
.若必须为类MyClass添加访问修饰符,并使MyClass的可访问域保持不变,则应选择(C)
A.private
B.protected
C.internal
D.public
在定义类时,如果希望类的某个方法能够在派生类中进一步改进,已处理不同的派生类的需要,则该将方法声明成(C)
A.sealed方法
B.public方法
C.virtual方法
D.override方法
c#程序中,可使用try···catch机制来处理程序出现的(B)错误
A.语法
B.运行
C.逻辑
D.拼写
43.下列语句创建了(D)个string对象
String[,]strArray=newstring[3,4]
A.0
B.3
C.4
D.12
在c#中,预处理指令#region(区域,范围)和#endregion的作用是(B)
A.注释#region和#endregion之间的代码
B.为#CodeEditor定义一段可折叠代码区
C.#region和#endregion之间的代码在debug版本中不参加编译
D.#region和#endregion之间的代码在release版本中不参加编译
Web表单中,按钮的默认事件是(A)
A.Click事件
B.Load事件
C.Lnit事件
D.Command事件
46.循环语句“for(inti=0;iA.1B.n-1C.nD.n+1
47.假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能正确表示代数式
的表达式是(D)
A.1.0/a*b*cB.1/(a*b*c)C.1/a/b/(float)cD.1.0/a/b/c
48.在以下C#程序的异常处理代码中,不论是否出现异常,肯定会运行的代码行是(c)。
Try{
Console.WriteLine(“Thisisfirststep!
”);//1
}
catch(Exceptionex){
Console.WriteLine(“Thisissecondstep!
”);//2
}
finally{
Console.WriteLine(“Thisisthirdstep!
”);//3
}
(选择一项)
1和2
2和3
1和3
都会运行
49.在WinForms高级控件中,(b)控件常常放在窗体的底部,用来显示一些基本信息。
(选择一项)
a)工具条
b)状态条
c)选项卡
d)图片框
50.以下(B)属性可以得到ArrayList的容量
A.Count
B.Capacity
C.IsSynchronized
D.Length
填空题:
1.c#支持的循环有___、___、___、__和____循环。
2.c#支持的隐式转换和显示转换中我们因该尽量用______转换。
3.c#中类的类别分为公有类、_____和_______。
4.c#中类中构建的方法有动态方法和_______。
5.c#中要调用某个类的动态方法首先要_______才能调用。
6.c#中类名和方法名用___命名法。
Camel命名法用于____和______的命名。
7.c#中接口的命名方法是________。
8.c#中实体化一个类时我们要在等式的右边加一个_______。
9.c#中类中的attribute的定义中我们要使用___________来防止出现连锁反应。
10.c#中同一个类里面对同一个方法的覆载的要求是方法签名中要有不同的返回值
或______等。
11.关联是_______之间的关系。
连接是______之间的关系。
12.抽象类和接口是不可以_________。
13.Student[_]_studentBody_=_new_Student[100];
studentBody[0]=1;
studentBody[2]=2;
…
中的错误是
14.string[_]_names_=_new_string[3];
names[0]_=_“Lisa”;
names[1]=”Jackson”;
names[2]=”Zachary”;
的更简便的写法是
15.在显示Array或ArrayList中的每一个元素时比循环更好的方法是_______
16.一个类不可以多重继承几个父类但是可以多重继承__________
17.当一个类继承一个抽象类时没有完全实现抽象类中的方法时这个类将会变成__________类。
18.在一个接口中定义的方法不能有_______。
19.在一个类里面定义一个静态attribute那么在实体化这个类的所有对象中这个attribute将__
_____。
20.统一建模语言的英文缩写是_______
21.在建模中考虑各种将与系统打交道的用户,和他们使用系统的各种情形,确保你发掘
了所有可能被遗漏的不那么明显的需求的技术叫:
22.在建模中通过鉴别你的应用程序需要关心的真实世界事物的不同分类,掌握应用程序的数据方面情况,并判断它们之间怎样互相关联的技术叫:
_________
23.C#中一切皆为___________
24.我们在写c#语言是我们要面向_____而非_____。
25.我们在写c#语言时我们要对____封闭,对___开放。
26.Console.WriteLine(“RP”);和Console.Write(“RP”);的区别是_____________
27.Console.Read();的作用是__________
28.c#中attribute的类型分为____类型和_____类型。
29.c#中bool类型只有两个值分别是______和____。
30.object类是所有类的____。
31.所谓对象,是一种将状态(数据、数据)和行为(操作、方法)合成到一起的软件构造。
32.关于命名惯例有Pascal和Camel命名法,命名一个类或方法时通常用Pascal法,命名一个属性时一般用Camel法。
33.真正的面向对象语言,支持用户自定义、继承、多态三种关键机制。
34.如果对象A为了满足某个请求,而寻求另一个对象B的帮助,这被称作是A对B的委托。
35.对象A能访问对象B的唯一途径,是A能访问B的句柄。
36.C#定义了五种访问修饰关键字:
public、private、protected、internal、protectedinternal。
37.如果声明属性时没有明确指定其可访问性,则会拥有默认值private。
38.C#类中声明方法的顺序有/没有关系。
39.OO编程语言趋同的手法,是提供取值(get)和赋值(set)方法,分别用来读取和修
attribute。
40.根据限制通过公共访问器刚问对象的是有attribute,我们得到以下好处:
1、避免对封装数据的XX的访问;2、帮助确保数据完整性;3、当类的是有思想必须修改时,限制在整个应用程序内导致的连锁反应。
41.如果没有明确地为一个类声明其实体构造器,C#会自动为它提供一个缺省的无参数实体构造器。
42.构造器名称,必须与所属类的名称保持一致。
43.继承是一种强大的机制,它通过指出新旧类之间的不同之处,在旧类基础上定义一个新类。
44.在使用继承时,原始的类被称作基类,新类被称作派生类。
45.在继承的情形中,对象同时是派生类和该派生类的所有基类的实体。
46.要覆载一个方法,必须先在所属类的基类中,使使用virtual关键字把该方法声明为虚方法。
派生类可以在方法声明中使用override关键字来重新实现基类虚方法。
派生类中的覆载方法必须声明为何基类方法拥有同样的作用域、返回值、名称和参数列表。
47.有如下代码:
如果Students=newStudent();
s.Name=“Hello”;
s=newStudent();
则s.Name=null;
48.多态是指两个或多个属性不同类的对象,对同一个消息做出不同响应的能力。
49.一个类可同时扩展单个基类,和实现一个或多个接口。
50.静态attribute/property与类相关联,而不是关联到具体的单个对象。
51.静态property和方法不能通过单个对象访问,但可以食用点符号,通过整个类调用。
52.静态方法访问所属类的attribute时,有一个重要限制:
它们不能访问类的非静态attribute。
53.静态方法不能被派生类覆载,并且不能被声明为抽象方法。
判断题:
1、c#面向对象的程序语言有继承性和多态性还有封装性答案对
2、接口不能通过方法来实现答案对
3、C#中的数据类型分为简单类型和引用类型答案对
4、C#是一种安全的、稳定的、简单的、优雅的,面向对象的编程语言。
答案对
5、C#不是由C和C++衍生出来的面向对象的编程语言。
答案错
6、C#源程序文件一般用.cs作为扩展名答案对
7、C#中所有的类型实质上都是从(object)类派生而来的。
答案对
8、结构是值类型,而类是引用类型。
答案对
9、c#面向对象的程序语言特点:
代码好维护,安全,隐藏信息答案对
10、类和对象的区别在于万物都是对象,是个实体,而概念是个类上的描述答案错
11、camel命名法是首字符大写,后续的每个词首字符大写,而其他字符则小写答案错
12、在c#中,变量被声明时并同时被自动赋予初始值,在访问变量前,必须明确的为其赋值答案错
13、c#是大小写不敏感的语言答案错
14、为了明确告诉c#编译器我们愿意接受精度损失,必须进行显示转换,把表达式值转换为括号里的目标类型答案对
15、方法头包括方法名称、可选的传入形式参数和方法的返回类型答案对
16、较好的编程习惯是在一个方法体中包含多个return语句答案错
17、Pascal命名方法是名称的第一个字母大写,后面的每个单词首字母大写,其他字母小写
答案对
18、所有类和方法名都是用pascal命名方法答案对
19、接口实现类必须提供接口所申明的所有方法答案对
20、抽象类要比具体类更接近于抽象类型答案对
21、通过提供对抽象类申明的所有抽象方法的非抽象实现,就能从抽象类派生出新类答案对
22、结对关系的概念只适用于关联,不适用于链接。
答案对
23、实现接口是一种“要么全要,要么不要”的事情
答案对
24、Camel命名法是用于公共attribute的名称
答案错
25、参数是一个本地变量,在方法头中申明