C#复习资料
更新时间:2023-03-17 10:03:01 阅读量: 综合文库 文档下载
C#考试复习总结
选择题
1. 下列数据类型中,不属于基本数据类型的是( D )。
A.数值类型 B.字符类型和字符串类型 C.布尔类型与对象类型 D.结构类型
2. 要使用变量score来存储学生某一门课程的成绩(百分制,可能出现小数部分),则最好
将其定义为( C )类型的变量。 A. int B. decimal C. float D. double 3. 下列标示符中,非法的是( B )。 A. MyName B. c_sharp C. abc2cd 4. 已定义下列变量: int n; float f; double df; df = 10; n = 2;
下列语句正确的是( C )。 A. f = 12.3; B. n = df;
C. df = n = 100; D. f=df;
5. 下列表达式中,有语法错误的是( A )。
A. n = 12%3.0(n为int类型) B. 12/3.0; C. 12/3;
D. ‘a’ > ‘b’;
6. 已知a,b,c均为整形变量,下列表达式的值等于( A )。
b = a = ( b = 20 ) + 100 A. 120 B. 100 C. 20 D. true
7. 下列语句中,不能够正确定义长度为4的数组a的语句是( C )。
A. int [] a = new int []{1,2,3,4;} B. int [] a = {1,2,3,4};
C. int [] a = new int[4] {1,2,3}; D. int [] a = new int[4] {1,2,3,4};
8. 若二维数组a有4行6列,那么该数组中第15个元素的访问方法是( D )。
A. a[15] B. a[3,3] C. a[3][3] D. a[2,2]
9. 以下装箱、拆箱语句中,错误的有( B )。 A.object obj = 100; int m = (int)obj; B. object obj = 100; int m = obj;
C. object obj = (int)100; int m = (int)obj; D. object obj = (object)100; int m = (int)obj;
D. _123
10. 下面有关变量和常量的说法,正确的是( C )。
A. 在程序运行过程中,变量的值是不能改变的,而常量是可以改变的。 B. 常量定义必须使用关键词const
C. 在给常量赋值的表达式中不能出现变量
D. 常量在内存中的存储单元式固定的,变量则是变动的
11. 对于语句“if(表达式)语句块”,下列说法正确的是( D )。
A. 语句中的“表达式”可以是任意类型的表达式
B. 语句中的“表达式”可以是整型表达式或者布尔表达式
C. 如果“表达式”的值为非零值则执行后面的语句块,为零则不执行
D. 不管“表达式”的形式如何,但其返回值必须是布尔类型,如果返回true则执行后面的语句块,否则不执行
12. 下列代码段中,语法正确的是( A )。
A. int n=0; B. int n=0; C. for(int I = 0; sum=0; i<10;i++) D. int sum=0; if(n==1) if(n=1) { int i=0; { { sum = sum+i; while(1) int x = n ; int x = n; } {
} } sum=sum+i; if(i==9)break; }
13. 下面关于if语句和switch语句的说法,正确的是( C )。
A. 如果在if语句和switch语句中嵌入break语句,则在程序执行过程中一旦执行到break
语句,则会结束相应语句的执行,而转向执行其后面的语句 B. 凡是能够使用if语句的地方就可以使用switch语句,反之亦然 C. if语句有3种基本形式,if…、if…else…、if…else if… else…
D. if语句本质上是实现“单判断二分支”的选择结构,switch语句则是用于实现“单判断多分支”的选择结构。
14. 下面关于for语句的说法,错误的是( B )。
A. for语句中的3个表达式都可以省略
B. for语句的3个表达式,如果第二个表达式的返回值为true,则执行循环体中的语句,知道第3个表达式的返回值为false
C. for语句的3个表达式中,第二个表达式必须是布尔类型的表达式,其他两个可以是任意类型的表达式
D. for语句的3个表达式中,第一个表达式执行且仅执行一次;每当循环体语句被执行以后,第3个表达式都跟着被执行一次
15. 下面关于while语句和do…while语句的说法,正确的是( A )。
A. 对于do…while语句,当循环条件表达式的值是为true时执行循环体语句,为false时终止语句的执行
B. While语句比do…while语句具有更高的执行效率
C. 对于do..while语句,当循环条件表达式的值为false时执行循环体语句,为false时终止语句的执行
D. 两者的功能是一样的,具体使用哪一种主要有程序员的喜好来决定 16. 对于foreach语句和for语句,下列说法错误的是( B )。
A. for语句与foreach语句在结构上不一样,前者有3个表达式,表达式间用分号隔开;后者仅有一个“表达式”,形式为“数据类型 变量 in 集合表达式”
B. 语句“for(;true;);”是合法的,但是个死循环;“foreach(true);”也是合法的,也是一个死循环
C. 语句“for(;true;);”是合法的,但是个死循环;而“foreach(true);”是非法的 D. 语句块“int*+ a = ,1,2-;foreach(int I in a);”是合法的 17. 对于跳转语句,下列说法错误的是( A )。
A. goto语句可以实现从程序的一个地方跳转到任意一个地方 B. goto语句的跳转功能限于一个同一个语句块内
C. break语句可以终止整个循环语句,而continue只是提前结束本次循环,但循环语句仍在执行
D. 不管在哪里,一旦执行到return语句,会结束当前整个函数的执行 18. 下列关于类的定义,错误的是( D )。
A. class A B. class A C. class A class A
{ { { { void f() {} void f() {} private void f() {return ;} f() {} } } } }
19. 假设类B继承了类A,下列说法错误的是( C )。
A. 类B中的成员可以访问类A中的公有成员 B. 类B中的成员可以访问类A中的保护成员 C. 类B中的成员可以访问类A中的私有成员 D. 类B中的成员可以访问类A中的静态成员
20. 在类A中试图重载构造函数,并使用构造函数创建对象;
class A { A() {}
public void A(int x) {} //语句1 public A(int x, int y) {} //语句2 }
class Program { static void Main(string[] args)
{ A a = new A(); //语句3
A b = new A(100,200); //语句4 } }
其中,正确的语句包括( B )。 A. 语句2和语句4
B. 语句1、语句3和语句5 C. 语句1、语句2和语句3 D. 语句4和语句5 21. 在类A中定义了属性y: Class A(); {
Public int y
{
get{return 1;} Set{} } }
并试图通过下列代码实现对属性y的访问; A b=new A(); b.y = 2; int x=b.y;
对此下列说法正确的是( D )
A属性y可读可写,因此变量x的值为2.
B属性y可读但不可写,因此语句“b.y=2;”是错的。
C属性y可写,但不可读,因此语句“int x=b.y”是错误的。 D 属性y可读可写,变量x的值是1. 22. 静态成员,下列说法正确的是( B )
A 同一个类的静态成员,类实例化后,在不同的对象中形成不同的静态成员。 B 在实例化后,同类型的对象都共享类的静态成员,静态成员只是一个版本。 C 在类定以时静态成员属于类,在类实例化后静态成员属于对象。
D 在类实例化后静态成员也别实例化,因此不同的对象有不同的静态成员。 23. 对于多态,下列说法错误的是( B ) A 多态实上就是重载,他们本质上是一样的 B 多态可以分为编译时多态和运行时多态。前者的特点是在编译时就能确定要调用成员方法的哪个版本,后者则是在程序运行时才能确定要调用成员方法的哪个版本。 C 编译时多态是在程序运行时才能确定要调用成员方法的哪个版本,而运行时多态在编译时就能确定要调用成员方法的哪个版本
D 多态和重载是两个弯曲不同的概念,前者是通过定义虚方法和重写虚方法来实现,后者是通过对同一个函数名编写多个不同的实现代码来完成。 24 下面代码在类A中重载了减号“—”: Class A {
Private int X;
Public static A operator –(A b,A c) {
A a=newA(); a.setx(3); A b=newA();b.setx(6); A c=a-b;
Int n= c.getx(); 结果n的值为( C ) A -3 B -6 C- 18 D 9
25 下面关于接口的说法,错误的是( D )。 A. 接口中定义的方法都必须是虚方法 B. 接口中定义的方法可以编写其实现代码
C. 继承接口的类可以提供被继承接口中部分成员的实现代码 D. 接口中的所有方法都必须在其派生类中得到实现
26 下面关于命名空间的说法,错误的是( C ) A. C#中,命名空间可有可无,看需要来定义和使用
B. 同一个命名空间的成员不能重名,不同命名空间中的成员可以重名
C. 使用命名空间的好处是,不但在不同命名空间中的成员可以重命名,而在同一个命名空间中的成员也可以重名
D. 命名空间为程序的逻辑结构提供了一种良好的组织方法 27 执行下列两条语句,结果S2的值为( D ) string s =”abcdefgh”;
string s2 = s.Substring(2,3);
A. “bc” B “cd” C “bcd” C”cde” 28对于下列生命的委托和定义的类: Class A {
Public int f(int i) {
Return 0; }
public void g(int j) { }
Public static int h(int k) {
Return 0; } }
下面语句中,那些事正确的( B )
MyDelegate d1 = new MyDelegate(A.h); //语句1 A a = new A();
MyDelegate d2 =new MyDelegate(a,f); //语句2 MyDelegate d3 = new MyDelegate(a.g);//语句3 MyDelegate d4 = new Mydelegate(a.h);//语句4
A 语句1、语句2、语句、语句4 B 语句1、语句2 C语句3、语句4 D 语句2、语句3
填空题
1. 标准窗体应用程序有3种类型:对话框界面(Dialog)应用程序、单文档界面(SDI)应用程序和多文档界面(MDI)应用程序。
2. C#中所有的类都继承 Object 类,所有的窗体控件都继承 Control 类。
3. 字体对话框类和打开文件对话框类分别是 FontDialog类 和 OpenFileDialog类 。 4. 控件中用于设置弹出式对话框的属性是 ContextMenuStrip 。
5. Form类(窗体类)的FormClosing(object sender,FormClosingEventArgs e)事件处理函
数中,利用参数e可以阻止窗口的关闭,实现的代码是 e.Cancel = true;。 6. 菜单可以分为两种形式: 主菜单 和 弹出式菜单 。 7. File类中判断给定文件是否存在的方法是 File.Exists() ,Directory类中判断给定文件是否
8. 9. 10. 11. 12.
13.
存在的方法是 Directiory.Exists() 。
Directory类中用语创建和删除目录的方法分别是 Directory.CreateDirectory() 和 void Directory.Delete() 。
Directory类用于获取应用程序当前工作目录的方法是 Directory.GetCurrentDirectory()。 File类中用于实现文件复制、移动和删除的方法分别是 Copy() 、 Move() 和 Delete() 。 C#中,专门用于读写文件的类是 StreamReader类 和 StreamWriter类 ;专门用于读写二进制文件的类是 BinaryReader类 和 BinaryWriter类 。
欲增加设置文件MyName.txt的只读属性和隐藏属性,请补全下列代码: String path = @”D:\\VS2008\\第七章\\Files\\MyName.txt”; FileInfo fi = new FileInfo(path);
Fi.Attributes = fi.Attributes|FileAttributes.ReadOnly|FileAttributes.Hidden ; 已有代码:
String path = @”D:\\VS2008\\第七章\\Files\\MyName.txt”; FileInfo fi = new FileInfo(path);
则 fi.Length 表示的意义是 文件MyName.txt的实际大小 。
14. 假设文件text.txt的实际大小为20398B,那么它占用的磁盘空间的大小为 20480 B(假设1个簇的磁盘空间为4096B)。
15. 下列代码用于连接到服务器mySrever上的数据库DB1,已知该数据库有一个登录用户名MyLog,密码为 sql123,请补全下列代码: String ConnectionString = “ DataSource=myServer , Initial Catalog=DB1 , User ID=MyLog , Password=sql123 , Persist Security Info = True ”; SqlConnection conn = new SqlConnection(ConnectionString); 16. SQL语言的数据操纵包括 Insert 、 Update 、 Delete 。
17. 已知数据表student依序包含学号、姓名、性别和成绩4个字段,为使下面两条语句等效,填上缺少的代码: INSERT INTO student VALUES(‘20102001’,’安妮’,’女’,98); INSERT INTO student( 成绩 , 姓名 , 性别 , 学号 ,) VALUES(98,’安妮’,’女’,’20102001’);
18. 将数据表student中学号为20102003的学生的成绩减去10分,相应的Update语句是 UPDATE student SET 成绩 = 成绩 – 10 WHERE 学号 = ‘20102003’; 。 19. 假设已对DataSte对象做了如下填充: DataAdapter.Fill(dataset,”t1”); DataAdapter.Fill(dataset,”t2”); DataAdapter.Fill(dataset,”t3”); 则提取表t3中第3行、第4列中的数据项的代码是 dataset.Table[“t3”].Rows[2][3] 。
简答题
1. 说明Visual Studio 2008 包含哪几种开发语言。
C#,VB.NET和VC.NET。
2. 请简述在VS.NET2008开发和使用ActiveX控件的基本步骤.
①在“新建项目”对话框中,通过“Windows窗体控件库”来创建ActiveX控件程序 ②在空间的界面设计和编码任务完成后,通过选择菜单“生成”|“声称解决方案”命令来生成ActiveX控件,实际上是生成dll文件。
③在解决方案资源管理其中添加或创建要使用ActiveX控件的窗体应用程序,这时在工具箱中自动出现刚创建的ActiveX控件。
④将创建的ActiveX控件拖到窗体上,并进行设计和编码。
3. 使用线程池有什么意义?
线程池是用于存放线程的“容器”。线程池中存放若干线程,当有任务要执行时侯,从线程池中唤醒一个线程,令他执行任务;任务执行完成后,重新将线程放回线程池(而不是销毁),并令其处于休眠状态。这样,就不需要对线程进行频繁的创建和销毁操作,从而节省时间并使系统更加稳定。
4. Connection对象和Command对象的作用是什么?
Connection对象用于连接数据库,不同的数据库有不同的Connection对象。Command对象用于执行针对数据库的SQL命令(包括存储过程)。
5. 什么是Web服务?
Web服务是基于HTTP、SOAP、WSDL等协议、提供在异构网络环境下提供远程服务的一种应用程序。
6. 简述多线程技术的意义。
多线程技术的出现可以有效提高机器资源(包括内存)的利用率,提高代码的执行效率。
7. C#语言的特点是什么?
语法简洁,支持跨平台,完全的面向对象程序设计功能,强大的Web应用支持,灵活性与兼容性,对XML的高度支持,与JAVA有本质区别。
8. 简述ADO.NET的体系结构。
ADO. NET是.NET Framework类库中用于实现数据库操作的一些类的集合。它分为两个部分:数据集( DataSet)和数据提供者。DataSet对象是若干张数据表( DataTable)的集合;数据提供者包含许多针对数据源的组件,包括Connection、Command、DataRader和DataAdapter。数据集依赖于数据提供者,它们共同为应用程序提供服务。
9. Request对象和Response对象的主要区别是什么?
Request对象包含了客户端发起请求时设置的所有参数,Response对象则包含了针对客户端请求的所有响应信息。这两个对象经常搭配使用。
10. 何谓结构化程序设计方法和面向对象程序设计方法?他们有什么区别与联系?
结构化程序设计方法是基于三种基本结构的一种编程设计方法,包括顺序结构,选择结构和循环结构。面向对象程序设计方法是一种能够有效的对复杂问题进行建模和表示的程序方法。是程序员能够更多关注“做什么”而不是把精力用在“怎么做”上。
程序改错题 1. class A {
A() {} }
A a = new A(); A() {}应该改为 public A() {} 因为在默认修饰符的情况下,类中的成员被默认为私有成员,因此在用A创建对象a时试图调用此构造函数,结果因为此构造函数为私有成员而拒绝访问。 2.
class A { Public A(int x) {} }
class B : A { Public B(int x) {} }
应该改为 public B(int x) : base(x) 因为基类A中没有无参数的构造函数。 3.
class A { Public static int x = 100; Public int y = 200; }
class Program { Static void Main(string[] args) { A a = new A(); a.x = 10; a.y = 20; } }
a.x 应该改为 A.x ,因为x是类A中的静态成员。 4.
class A { A() {} void A() {} private A(int x) {} private A(int y) {} }
void A()中的void应该去掉,因为构造函数不能带有任何返回类型修饰符;A(int x)和A(int y)是同一个构造函数,应该删除其中一个。 5.
interface I { int x; public void f(int x); void g(int x); int h(int x) {return 1;} }
class A : I { Public void f(int x) {} Public int h(int x) {} }
int x应该删除,因为接口中不允许存在成员变量;修饰符public应予以删除,因为接口的方法前不允许存在任何修饰符;去掉函数h(int x)中的语句”return 1;”,因为不能在接口声明的函数中编写实现代码;应该在类A中添加函数g(int x)的实现代码。 6.
Class A { }
Class B { }
Class C : A,B { }
必须将 class C : A,B 中的A和B其中之一去掉,因为C#中不允许类进行多重继承。 7.
Class A { int f() {return 1;} void f() {} void g(int x) {} void g(int y) {} }
应该删除两个f()函数中的一个,删除两个g()函数中的一个。 8.
Class A { protected static void f() {}
protected void g() {} }
Class B : A { New public static void f() {} New public void g() {} Public void h()
{ base.f(); base.g(); f();
g(); } }
base.f(); 应该改为 A.f(); ,原因是类A中的方法f()是静态方法,它不能被实例化,只能通过类名来访问。
9. 下列代码段中试图用try-catch-catch结构捕获和处理异常,其中有的地方是错误的,请
将错误的地方纠正过来。 int m;
int[] a = new int[5]; try { m = int.Parse(“2000 $ ”); for(int i = 0; i <= a.Length; i++) a[i] = i; }
catch (Exception e1) { Console.WriteLine(“产生异常:{0}”,e1.Message); }
catch (IndexOutOfRangeException e2) { Console.WriteLine(“产生异常:{0}”,e2.Message); }
需要将两个catch块的位置顺序对调过来。
程序设计题
书P270~P275,增加、删除、查找、修改,出一个。
正在阅读:
C#复习资料03-17
某高中教学楼设计计算书本科毕业设计02-03
设备(包括应急救援器材)安装、拆除、验收、检测、使用、定期保养、维修、改造、和报废制度08-10
幼师毕业生就业讲座09-01
2011公务员考试模拟卷12-18
金色心灵作文600字06-29
广州移动传输网骨干光缆工程05-19
对当前中小学“减负提质”的几点思考_07-31
通报表扬稿03-13
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- C#
- 复习资料