安工大C#复习题

更新时间:2024-05-26 23:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.在类作用域中能够通过直接使用该类的( )成员名进行访问。

A. 私有 B. 公用 C. 保护 D. 任何 答案:D

2.小数类型(decimal)和浮点类型都可以表示小数,正确说法:( )

A. 两者没有任何区别

B. 小数类型比浮点类型取值范围大 C.小数类型比浮点类型精度高 D. 小数类型比浮点类型精度低 答案:C

5.引用类型主要有4种:类类型、数组类型、接口类型和( )。

A.对象类型 B.字符串类型 C.委托类型 D.整数类型 答 案:C

6.加载窗体时触发的事件是( )。

A. Click B.Load C.GotFoucs D.DoubleClick 答案:B

9.在类的成员中,用于存储属性值的是( )。

A. 属性 B. 方法 C. 事件 D.成员变量 答案:成员变量

11.类的以下特性中,可以用于方便地重用已有的代码和数据的是( ).

A.多态 B.封装 C.继承 D.抽象 答案:C

12.在Array类中,可以对一维数组中的元素进行排序的方法是( )。

A.Sort() B.Clear() C.Copy() D.Reverse() 答案:A

13.将变量从字符串类型转换为数值类型可以使用的类型转换方法是( )。A.Str() B.Cchar C.CStr() D.int.Parse(); 答案:D

18. 假定一个10行20列的二维整型数组,下列哪个定义语句是正确的( A. int[]arr = new int[10,20] B. int[]arr = int new[10,20]

C. int[,]arr = new int[10,20] D. int[,]arr = new int[20;10]

答案:C

22.在VC#.Net中,可以标识不同的对象的属性是( )。 A.Text B.Name C.Title D.Index 答案:B

28. 以下说法正确的是( )。

A. 接口可以实例化

B. 类只能实现一个接口

D. 接口的成员前面可以加访问修

C. 接口的成员都必须是未实现的 饰符 答案:C

32. 以下关于继承的说法错误的是( )。 A. .NET框架类库中,object类是所有类的基类 B. 派生类不能直接访问基类的私有成员

C. protected修饰符既有公有成员的特点,又有私有成员的特点 D. 基类对象不能引用派生类对象 答案:D

6.使用Dirctory类的下列方法,可以获取指定文件夹中的文件的是( ).

A.Exists() B.GetFiles() C.GetDirectories() D.CreateDirectory() 答案:B

34. 下列说法中,正确的是( )。 A. 派生类对象可以强制转换为基类对象

B. 在任何情况下,基类对象都不能转换为派生类对象 C. 接口不可以实例化,也不可以引用实现该接口的类的对象 D. 基类对象可以访问派生类的成员 答案:A

4.在C#.Net中,用来创建主菜单的对象是( )。 A. Menu B.MenuItem C.MenuStrip D.Item 答案:C

c34.执行下列循环语句,退出循环后i的值为 。

using System; class Program {

static void Main(string[] args) {

int i;

for ( i = 0; i <= 100; i++) {

i = i + 1; }

Console.WriteLine(\ Console.Read(); } }

A.100 B.101 C.102 d35.执行下列程序段后,窗体上输出的s的值为 。using System; class Program {

static void Main(string[] args) {

int i,j,s,k; i = 1; j = 4; s = 0;

for ( k=1; k <= j; k++) {

i=i*k; s=s+i; }

Console.WriteLine(\ Console.Read(); } }

A.4 B.10 C.5 b36.执行下列程序段后,窗体上输出的s的值为 。using System; class Program {

static void Main(string[] args) {

int i,j,s; i = 1; j = 1;

D.1 D.33 s = 5; do {

i=i*j; j=j+1; }

while (j<7); s = s * i;

Console.WriteLine(\ Console.Read(); } }

A.5 B.3600 C.35 D.1800 c37.执行下列程序段后,窗体上输出的i的值为 。 using System; class Program {

static void Main(string[] args) {

int i; i = 0; do {

i=i-1; }

while (i>0);

Console.WriteLine(\ Console.Read();

} }

A.0 B.1 C.-1 D.运行错误 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 单选题(每题1分,共50分)

(1).net“公共语言运行库”的简写为( ) A)CLR B)CRL C)IL D)JVM

(2)调用“命名空间”的命令是( ) A)namespace B)use C)using D)#include

(3)声明“命名空间”的命令是( ) A)namespace B)use C)using D)#include

(4)C#的每一个应用程序应该有一个入口方法,称为Main,该方法必须被声明为( )

A)private static B)public static C)protect static D)protected static

(5)下列不正确的代码注释方式是( )

A)// 注释 B)*/ 注释 /* C)/* 注释 */ D)/// 注释

(6)在程序中设置断点,是为了( )

A)定位程序入口点 B)定位程序结束点 C)发布程序 D)调试程序

(7)数据库系统与文件系统的最主要区别是( )。 A) 数据库系统复杂,而文件系统简单 

B) 文件系统不能解决数据冗余和数据独立性问题,而数据库系统可以解决 C) 文件系统只能管理程序文件,而数据库系统能够管理各种类型的文件 D) 文件系统管理的数据量较小,而数据库系统可以管理庞大的数据量

(8)以下不属于C#和Java共同特征的是( ) A)除操作系统外,都需要额外运行环境 B)源程序文件名都受到文件中类名的限制

C)都采用Try-Catch-Finally的异常处理机制 D)都完全面向对象

(9)C#数据类型包括值类型和引用类型两种,下列类型不属于值类型的是( ) A)类类型 B)int C)枚举类型 D)结构类型

(10)C#中的字符型数据,均是Unicode字符,这样一个字符的标准长度为( ) A)4位 B)8位 C)16位 D)32位

(11)声明结构型的关键字是( ) A)enum B)struct C)class D)interface

(12)值类型比引用类型的执行效率( ) A)高 B)低 C)相同 D)视情况而定

(13)下列声明双精度型二维数组array1的正确方式是( )

A)double[][] array1 B)double[ , ] array1 C)float[][] array1 D)float[ , ] array1

(14)——(18)题采用如下“教师”和“学院”表 以下为“教师”表和“学院”表:

(14)为“学院”表增加一个字段“教师人数”的标准SQL语句是( )。

A)CHANGE TABLE学院ADD教师人数 int B)ALTER STRU学院ADD教师人数 int

C)ALTER TABLE学院ADD教师人数 int D)CHANGE TABLE学院INSERT教师人数 int

(15)将“欧阳秀”的工资增加200元的标准SQL语句是( )。 A)REPLACE教师WITH工资=工资+200 WHERE 姓名=“欧阳秀” B)UPDATE教师SET工资=工资+200 WHEN 姓名=“欧阳秀” C)UPDATE教师工资WITH工资+200 WHERE姓名=“欧阳秀” D)UPDATE教师SET 工资=工资+200 WHERE姓名=“欧阳秀”

(16)有SQL语句“SELECT * FROM教师WHERE NOT(工资>3000 OR 工资<2000) ”与之等价的SQL语句是( )。

A)SELECT*FROM 教师 WHERE 工资<=3000 AND 工资=>2000 B)SELECT*FROM 教师 WHERE 工资>2000 AND 工资<3000 C)SELECT*FROM 教师 WHERE 工资>2000 OR 工资<3000

D)SELECT*FROM 教师 WHERE 工资<=2000 AND 工资>=3000

(17)有SQL语句:“SELECT 主讲课程, COUNT(*) FROM 教师GROUP BY 主讲课程”该语句执行结果含有记录个数是( )。 A)3 B)4 C)5 D)6

(18)有SQL语句“SELECT COUNT(*) AS人数, 主讲课程 FROM教师 GROUP BY 主讲课程 ORDER BY 人数 DESC”该语句执行结果的第二条记录的内容是( )。

A) 4 数据结构 B) 3 操作系统 C) 2 数据库 D) 1 网络技术

(19)使用SQL语句将学生表S中年龄(AGE)大于30岁的记录删除,正确的命令是 ( )。

A) DELETE FOR AGE>30 B) DELETE FROM S WHERE AGE>30 C) DELETE S FOR AGE>30 D) DELETE S WHERE AGE>30

(20)使用SQL语句向学生表S(SNO,SN,AGE,SEX)中添加一条新记录,字段学号(SNO)、姓名(SN)、性别(SEX)、年龄(AGE)的值分别为0401、王芳、女、18,正确的命令是 ( )。

A)APPEND INTO S (SNO,SN,SXE,AGE) value S (?0401','王芳','女',18) B)APPEND S value S (?0401','王芳','女',18)

C)INSERT INTO S (SNO,SN,SEX,AGE) value S (?0401','王芳','女',18) D)INSERT S value S (?0401','王芳',18,'女')

(21)对于“关系”的描述,正确的是( )。

A .同一个关系中允许有完全相同的元组 B.同一个关系中元组必须按关键字升序存放

C .在一个关系中必须将关键字作为该关系的第一个属性 D. 同一个关系中不能出现相同的属性名

(22)在SQL的SELECT查询结果中,消除重复记录的方法是 ( )。

A) 通过指定主关系键 B) 通过指定惟一索引 C) 使用DISTINCT D)使用HAVING子句

(23)下列关于SQL中HAVING子句的描述,错误的是( )。

A)HAVING子句必须与GROUP BY子句同时使用 B)HAVING子句与GROUP BY子句无关

C)使用WHERE子句的同时可以使用HAVING子句 D)使用HAVING子句的作用是限定分组的条件

(24)C#提供了对数组进行排序的方法,是( ) A)Sort B)Reverse C)GetLength D)Length

(25)现有长整形定义“long abc=12345678;”,显式转换为int型变量cba的语句为( )

A)cba=(int)abc B)cba=int(abc) C)cba=int abc D)cba=Convert.ToInt32(abc)

(26)与” i++ ”等价的表达式为( ) A)i=i+1 B)i+1 C)i=i+2 D)i+2

(27)在C#循环语句中,从当前一轮循环跳出,进入下一轮循环的命令是( ) A)return B)break C)continue D)goto

(28)现有C#方法定义为public void function1(int parameter1) {?省略?},在该方法中可使用的return语句正确格式是() A)return 1; B)return parameter1; C)return function1; D)return;

(29)try-catch-finally语句结构中,由try模块抛出的异常,被( )模块捕获。 A)try B)catch C)finally D)throw

(30)现有类Class1,选出如下选项中正确的缺省构造函数形式( ) A)private int Class1(){ } B)private class1(){ } C)public Class1(){ }

D)public void Class1(){ }

(31)定义引用类型的字符串参数str1的正确形式是( ) A)ref str str1 B)ref String str1 C)string str1 D)out string str1

(32)选择如下对Convert类的正确说明( )

A)Convert类位于System.Console命名空间下 B)Convert类位于system命名空间下

C)Convert类中的方法用于转化引用类型的数据 D)Convert类中的方法用于转化值类型的数据

(33)单击一下按钮,不会激发的事件是( )

A)MouseLeave B)MouseUp C)MouseDown D)MouseClick

(34)选择如下关于void的正确说明( )

A)void可用于声明参数 B)void可用于声明类 C)void可用于声明方法 D)void与空字符串等价

(35)以下关于字符串str1的用法,错误的是( )

A)str1.ToUpper();可将str1转化成大写 B)str1.ToLower();可将str1转化成小写 C)str1.split(?,?);返回字符串数组 D)str1.split(?,?);返回一个字符串

(36)以下关于Math类的各方法说明,错误的是( )

A)Math.Abs(-1);返回值为1 B)Math.Ceiling(1.3);返回值为2 C)Math.Floor(1.3);返回值为1 D)Math.Round(1.3);返回值为2

(37)已定义基类Animal,扩充类Cat继承自Animal,表示继承关系的正确C#代码是( )

A)class Cat: Animal{…类内部定义省略…} B)Class Cat: Animal{…类内部定义省略…}

C)class Animal: Cat{…类内部定义省略…} D)Class Animal: Cat{…类内部定义省略…}

(38)基类Cat中定义了方法EatFish( int fishnumber),Cat的实例tom调用方法的正确语句是( )

A)tom.EatFish(); B)Cat.EatFish(3); C)tom.EatFish(3); D)Cat.EatFish();

(39)类Cat采用默认构造函数,声明类Cat的实例tom的正确语句是( ) A)Cat tom=new Cat(); B)Cat tom=new tom(); C)Cat tom=new Cat; D)Cat tom=new tom;

(40)在基类Animal和扩充类Cat中,关于方法Method(),用法错误的是( ) A)在Animal中,Method可用virtual前缀修饰,Method称为虚拟方法

B)在Cat中,Method可用new前缀修饰,Cat中的Method会隐藏Animal中的Method

C)在Cat中,Method可用override前缀修饰,Cat中的Method会重写Animal

中的Method

D)在Cat中,Method可用override前缀修饰,Cat中的Method会重写Animal中的虚拟方法Method

(41)以下关于虚拟方法和抽象方法的说明,错误的是( )

A)虚拟方法用virtual前缀修饰 B)抽象方法用abstract前缀修饰

C)抽象方法不具有方法体实现部分 D)虚拟方法不具有方法体实现部分

(42)以下关于抽象类的说明,错误的是( )

A)用abstract做类的修饰符 B)用virtual做类的修饰符

C)抽象类中的方法都要生命为抽象方法 D)非抽象类可继承自抽象类

(43)以下关于接口的说明,错误的是( )

A)接口中的方法可以加public前缀 B)接口中的方法都是公共属性的 C)接口中的方法不具有方法体实现部分 D)一个类只能继承自一个基类,但是可以实现多个接口

(44)已定义接口interface Ieatable,接口中只有一个方法int eat(int num);,关于接口的实现类CatEat的说法错误的是( )

A)实现接口的语法为class CatEat: Ieatable {…省略类内容…} B)类CatEat中除构造函数外,只有一个方法eat C)类CatEat中除构造函数外,可以有多个方法 D)类CatEat中的eat方法,只能有一个整形参数

(45)关于C#的委托机制的主要步骤的说明,错误的是( )

A)第一步声明样板,需用delegate修饰,样板要有方法体实现部分

B)第二步定义准备调用的方法,该方法的参数类型、个数及参数的顺序必须与样板的定义相同

C)第三步定义delegate类型的处理函数,该函数的参数就是第二步中调用的方法

D)创建样板的实例,传入准备调用的方法名

(46)关于序列化的说明,错误的是( )

A)序列化的简单方式是在要序列化的类定义前加[Serializable] B)XML和SOAP序列化主要用于网络

C)XML序列化较二进制序列化保存的内容完整 D)二进制序列化较XML序列化保存的内容完整

(47)以下不属于C#集合类的是( )

A)ArrayList B)HashTable C)SortedList D)List

(48)对于标签控件Label的错误说法是( )

A)要修改Label上的字内容,可修改该控件Caption属性 B)要修改Label上的字内容,可修改该控件Text属性 C)要修改Label的背景色,可修改该控件BackColor属性

D) 要修改Label的文本颜色,可修改该控件ForeColor属性

(49)下述关于控件的属性,说法错误的是( )

A)为了使TextBox中输入文字能够换行,需要设置该控件的Multiline属性为true

B)为了使TextBox能接受密码,需要设置该控件的PasswordChar属性 C)设置ComboBox中的条目内容的属性是Items

D)RichTextBox控件提供了高级文本编辑功能,可通过修改属性SelectedColor以修改其中文本的颜色

(50)下述关于控件的事件,说法错误的是( )

A)CheckBox的选中状态发生变化时,会触发CheckChanged事件

B)ComboBox的选中条目发生变化时,会触发SelectedIndexChanged事件 C)Form在加载的时候,会触发Load事件

D)选择菜单项,会触发MenuIndexChanged事件 单选题(1分/题,共50分)

1-5 ACABB 6-10 DBBAC 11-15 BABCD 16-20 ADBBC 21-25 DCBAA 26-30 ACDBC 31-35 BDACD 36-40 DACAC 41-45 DBACA 46-50 CDADD

判断题

1.不能指定接口中方法的修饰符。 答:对

2.DotNet包含两个部分,即公共语言运行时和框架类库 答案:对

3.在同一行上可以书写多条语句,每条语句间用分号分隔。 答案:对

4.在数据类型转化时,只能通过类型转换关键字或Convert类实现。 答案:错

5.在定义数组时不允许为数组中的元素赋值。 答案:错

6.定义枚举时至少为其中的一个枚举成员赋值。 答案:错

7.接口与类同样是面向对象程序设计的核心,是创建对象的模版。 答案:对

8.委托是将方法作为参数传递给另一方法的一种数据类型。事件与委托没有关系。

答案:错

9.如果要实现重写,在基类的方法中必须使用virtual关键字,在派生类的方法中必须使用overrides关键字。 答案:错

10.在C#类中,this代表了当前类本身。 答案:错

11.静态类和实例类的区别在于:静态类不需要初始化即可直接使用,实例类需要进行实例化,生成对象才可使用。 答案:对

12.用Interval属性设置Timer控件Tick事件发生的时间间隔单位为秒。 答案:错

13.设置图片框控件的SizeMode属性为StretchImage时,图片可以按图片框的大小比例缩放显示。 答案:对

14.可以重写私有的虚方法。 答:错

15.在C#中,所有类都是直接或间接地继承System.Object类而得来的。 答案:对

16.在C#中,任何方法都不能实现多继承。 答案:错

17.在C#中,子类不能继承父类中用private修饰的成员变量和成员方法。 答案:对

18.菜单项标题中有含有带下划线的字符,这是快捷键。 答案:错

2.可以阻止某一个类被其他类继承。 答:对

14.一个窗体中可以有多个弹出式菜单。 答案:对

5.在C#Net中,窗体父子关系通过“属性”窗口来创建。 答案:对

7.使用Directory类的Move()方法可以删除文件。 答案:错

8.使用FileInfo类的Copy()方法可以复制文件。 答案:对

9.DataSet对象中的表可以和数据库中的表同名,也可以不同名。 答案:对

10.Command对象可以执行SQL语句。 答案:对

5.使用Directory类的Move()方法可以删除文件。 答案:错

6.使用FileInfo类的Copy()方法可以复制文件。 答案:对

简答题

1.如何区别重载方法?

不同的参数类型,不同的参数个数,不同的参数顺序

2.C#用多种修饰符来表达类的不同性质。根据其保护级C#的类有五种不同的限制修饰符,请写出并指出它们之间的区别是什么?

答:

public 可以被任意存取

protected只可以被本类和其继承子类存取

internal只可以被本组合体(Assembly)内所有的类存取,组合体是C#语言中类被组合后的逻辑单位和物理单位,其编译后的文件扩展名往往是“.DLL”或“.EXE”。

protected internal唯一的一种组合限制修饰符,它只可以被本组合体内所有的类和这些类的继承子类所存取。

private只可以被本类所存取。

3.接口和抽象类的区别是什么?

答:接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。抽象类可以提供某些方法的部分实现,接口不可以.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。在抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。

4.什么是抽象类?

答案:抽象类是含有一个或多个抽象方法的类,抽象类不能实例化。

5、异常的概念

所谓异常,它是指程序在运行过程(而非编译过程)中产生的错误

6、为什么要用finally块?

程序在运行过程中一旦出现异常会立即转向执行相应catch块中的语句,执行完后接着执行try-catch结构后面的语句。这意味着在出现异常时程序并不是按照既定的顺序执行,而是跳转执行。

为维持系统的有效性和稳定性,必须保证有相应的代码能够“弥补”被跨越代码的工作,主要是完成必要的清理工作(如关闭文件、释放内存等)。这种保证机制可以由带finally的try-catch-finally结构来实现。

7、委托(delegate)是C#特有的功能,它也翻译为代理、代表、指代等。

C#中没有指针的概念,但通过委托可以实现C/C++中函数指针的功能,且比函数指针具有更强大的能力。

简单地理解,方法的委托就是方法的别名(或者是方法的代理),通过委托不但可以执行方法,而且可以将方法传到其他的方法中,实现方法回调等。

委托和函数指针关系?

委托大体上相当于C++中的函数指针。但与函数指针不同的是,委托是面象对象的和类型安全的。

8、命名空间的作用:协同开发时,有效减少了由于成员名的重名而带来的麻烦。

程序员只需保证自己编写的命名空间中代码的有效性,而不必考虑其他命名空间中成员的命名问题

9、对话框可以分为模式对话框与非模式对话框。

模式对话框:当模式对话框被打开时同程序中的其他对话框和窗体都不能“动”,即模式对话框处于活动状态时程序就不能切换到其他对话框和窗体中,除非关闭它。非模式对话框:处于活动状态时程序可以切换到其他对话框和窗体中。

From类提供的ShowDialog()方法和Show()方法分别用于实现模式对话框和非模式对话框的显示。

例如:

Form frm1 = new Form();

Frm1.ShowDialog(); //打开模式对话框

Form frm2 = new Form(); Frm2.Show();

10、数据库系统、数据库和数据库管理系统(DBMS)之间的关系:

数据库系统是一种引进了数据库的计算机系统,其组成部分主要包括硬件、软件、数据库、系统涉及的人员等,其中,软件包括数据库管理系统(DBMS)和支持DBMS运行的其他相关软件,以及基于DBMS的应用程序等;

数据库管理系统则是数据库的“操作系统”,是管理数据库的软件系统,如SQL Server 2008、DB2、Oracle等都是数据库管理系统;

数据库是多张数据表(table)的集合,每张数据表由若干行和若干列组成,一行称为一条记录(record/row),一列称为一个字段(field)。能唯一标识每条记录且不含空值(NULL)的一个或多个字段可以定义为主键,每张表至多有一个主键。

可见,数据库系统是一个广泛的概念,凡是以数据库应用为核心的系统所涉及的部分都是它的组成部分。DBMS是数据库系统的一个组成部分,数据库则是DBMS管理的对象。 11、ADO.NET是在ADO的基础上发展而来的一种数据库访问接口,被认为是一个“跨时代的产品”。它提供了平台互用性和可伸缩的数据访问功能,可以使用它来访问关系数据库系统(如 SQL Server 2005、Oracle)和其他许多具有 OLE DB 或 ODBC 提供程序的数据源。

ADO.NET只是一种接口、一种通道,要通过ADO.NET访问数据库还需要有相应的操纵语言,而这种语言就是SQL语言。本章下部分将先简要介绍SQL语言的常用语句,然后再介绍ADO.NET常用的几个对象,最后介绍如何使用这些对象操作数据库。

12、DataReader对象的优点:执行效率高,在体积和开销上它比数据集小,占用内存少DataReader对象的缺点:在读取数据时它与服务器的连接始终是打开的,它只能以单向向前的次序访问记录,所以仅用于数据检索等功能非常单一的设计中。ataAdapter对象除了可以

//打开非模式对话框

实现DataReader对象的功能以外,还可以执行对数据库的插入、更新和删除等操作,其功能要比DataReader对象的功能强得多(要与DataSet对象结合使用)。 但强功能的实现就意味着要付出更多的机器资源,使用起来就显得特别“man”。 因此,如果DataReader对象已经能完成的任务就不必使用DataAdapter对象。

编程题 与程序阅读

1 编一个程序,设园半径r=1.5,园柱高h=3.6,圆周率3.1415定义为常量,求出圆周长、圆面积、圆柱体积。然后用Console.WriteLine方法输出计算结果,输出时要求有文字说明,取小数点后2位数字。例如,圆周长=×××.××。(k10052707) const double Pi = 3.1415; double r = 3, h = 5; double c, s, v; c = 2 * Pi * r; s = Pi * r * r;

v = Pi * r * r * h;

Console.WriteLine(\圆的周长为{0:f2}\Console.WriteLine(\圆的面积为{0:f2}\Console.WriteLine(\圆的体积为{0:f2}\

2 编一个程序,输入三个实数,要求使用if else语句把它们的中间数找出来,可以使用逻辑运算符。(k10032309) float x, y, z, second = 0;

Console.WriteLine(\请输入三个float类型的值\x = float.Parse(Console.ReadLine()); y = float.Parse(Console.ReadLine()); z = float.Parse(Console.ReadLine()); if ((x>y&&xz)) second = x;

else if ((y>x&&yz)) second = y; else

second = z;

Console.WriteLine(\这三个数中的中间数为{0}\

3 编一个程序,打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如, 153=1*1*1+5*5*5+3*3*3,所以153是“水仙花数”。(k10033106) int a, i, j, k;

for (a = 100; a <= 999; a++) {

i = a % 10; k = a / 100;

j = a % 100 / 10;

if (a == Math.Pow(i, 3) + Math.Pow(j, 3) + Math.Pow(k, 3)) Console.WriteLine(\是水仙花数\

4 编一个程序,要求使用while语句,输入用户名和密码,实现用户登录程序的功能,至多允许输入三次,超过三次不允许登录。(k10022507) const string UserName = \const string PassWord = \string username, password; int i=1; {

while(i<=3)

Console.WriteLine(\请输入用户名%username = Console.ReadLine(); Console.WriteLine(\请输入密码\password = Console.ReadLine();

if (username == UserName && password == PassWord) break; else

Console.WriteLine(\你输入的用户名或者密码错误,请重新输入用户名和密码\i++; }

if (i <= 3) {

Console.WriteLine(\正在登录系统\} else

Console.WriteLine(\不能登录系统\

5 编一个程序,定义一个字符串变量,输入字符串,判断有没有连续重复字符出现,统计重复字符出现次数。例如,aaabccdfff,其中a重复出现二次,c重复出现一次,f重复出现二次,共计字符重复五次。(k10053005) string i; int a = 0;

Console.WriteLine(\输入一个字符串\i = Console.ReadLine();

for (int b = 1; b <= i.Length - 1; b++) {

if (i[b] == i[b - 1]) a++; }

Console.WriteLine(\

6 定义一个一维数组,输入任意6个整数,假定为7,4,8,9,1,5。编一个程序,利用for语句,输出如下方阵的内容:

7 4 8 9 1 5 5 7 4 8 9 1 1 5 7 4 8 9 9 1 5 7 4 8 8 9 1 5 7 4 4 8 9 1 5 7 ( k10050903)

int[] a ={ 7, 4, 8, 9, 1, 5 }; int temp;

for (int i = 0; i < 6; i++) {

Console.Write(\}

for(int i=0;i<5;i++) {

Console.WriteLine(); temp = a[5];

for (int j = 5; j >0; j--) {

a[j] = a[j - 1]; }

a[0] = temp;

for (int k = 0; k < 6; k++) Console.Write(\}

7 * 编一个程序,定义一个类,该类中定义二个非静态方法,一个方法用来求出这个三角形的周长,另一个方法用来求出这个三角形的面积。已知三角形三条边a,b,c,计算其面积可以用Math类中的Sqrt()方法,有表达式

Math.Sqrt(s*(s-a)*(s-b)*(s-c)),可以利用它计算指定数的开方,其中s=(a+b+c)/2。在主方法中输入一个三角形三条边a,b,c,要求调用这二个非静态方法计算三角形的周长和面积。注意:在输入三角形三条边时,必须检查它们的数据合法性。(k10060103)

using System;

using System.Collections.Generic; using System.Linq; using System.Text;

namespace Test1 {

class Program {

static void Main(string[] args) {

double x, y, z;

Console.WriteLine(\请?输?入?三▂角?形?的?三▂边?\); x = double.Parse(Console.ReadLine()); y = double.Parse(Console.ReadLine()); z = double.Parse(Console.ReadLine()); triangle tr = new triangle(x,y,z);

if ((x + y > z && x - y < z) && (x + z > y && x - z < y) && ((y + z) > x && (y - z < x))) {

Console.WriteLine(\三▂角?形?的?周ü长¤为a{0}\, tr.c(x,y,z)); Console.WriteLine(\三▂角?形?的?面?积y为a{0}\, tr.s(x,y,z)); } else

Console.WriteLine(\三▂角?形?三▂边?不?合?法ぁ?);

} }

class triangle {

double a, b, c;

public triangle(double x, double y, double z) {

a = x; b = y; c = z; }

public double C(x,y,z) {

double zc; zc = a + b + c; return zc; }

public double s(x,y,z) {

double mj,s1;

s1 = (a + b + c) / 2;

mj = Math.Sqrt(s1*(s1-a)*(s1-b)*(s1-c)); return mj; } } }

8 编程题 *

【例10.1】 DataSet对象的使用方法。

本例将综合上面介绍有关DataSet对象的使用方法。

该程序要展示的功能是:将两个数据源(对应数据库MyDatabase中的表student和表teacher)的数据分别填充到DataSet对象中,形成该对象中的两个表t1和表t2;

然后提取t1的所有字段名以及t1中所有的数据项,并显示在listBox1控件中;

最后将t2绑定到dataGridView1控件并显示t1中的数据,同时将表t2中的字段姓名绑定到textBox1并显示该字段的数据项。 创建步骤如下:

(1)创建窗体应用程序DataSetApp,在窗体上添加Button、TextBox、DataGridView和ListBox,并适当设置它们的属性、位置和大小:

建步骤如下:

(2)编写代码(以下是核心代码):

private void button1_Click(object sender, EventArgs e) {

SqlConnection conn = null;

SqlDataAdapter DataAdapter = null; DataSet dataset = null; try {

string ConnectionString = \

\ \ conn = new SqlConnection(ConnectionString);

conn.Open();

DataAdapter = new SqlDataAdapter(); dataset = new DataSet();

SqlCommand cmd = new SqlCommand(); cmd.Connection = conn;

cmd.CommandText = \ DataAdapter.SelectCommand = cmd;

DataAdapter.Fill(dataset, \ //第一次填充

cmd.CommandText = \ DataAdapter.SelectCommand = cmd;

DataAdapter.Fill(dataset, \ //第二次填充 string s = \ \

//获取表t1中的所有列名

for (int i = 0; i < dataset.Tables[\

s += dataset.Tables[\ listBox1.Items.Add(s); //提取表t1中的数据项

for (int i = 0; i < dataset.Tables[0].Rows.Count; i++) {

DataRow dr = dataset.Tables[0].Rows[i]; s = \

for (int j = 0; j < dataset.Tables[0].Columns.Count; j++) {

s += dr[j].ToString() + \ }

listBox1.Items.Add(s); }

//将表t2中的字段t_name绑定到textBox1

textBox1.DataBindings.Add(\ //将dataset绑定到dataGridView1

dataGridView1.DataSource = dataset; //在dataGridView1中显示表t2中的数据 dataGridView1.DataMember = \ }

catch (Exception ex) {

MessageBox.Show(ex.Message); }

finally {

if (conn != null) conn.Dispose(); if (dataset != null) dataset.Dispose();

if (DataAdapter != null) DataAdapter.Dispose(); } }

9、编程:定义一个行数与列数相等的二维数组,并执行初始化,然后计算该数组两条对角线上的元素值之和。

Console.Write(\请输入要定义的二维数组的下标值:\int k=int.Parse(Console.ReadLine( )); int[,] a=new int[k,k]; for(int i=0;i

for(int j=0;j

Console.Write(\请输入第{0}行第{1}列的数组值:\a[i,j]=int.Parse(Console.ReadLine()); } }

for(int i=0;i

for(int j=0;j

Console.Write(a[i,j]+\}

Console.WriteLine(); } int s=0;

for(int i=0;i

Console.WriteLine(\对角线之和为{0}\else

Console.WriteLine(\对角线之和为{0} \

10 、*题目,

1)从A。txt文本文件中按照行读字符串,进行加密。吧加密后的字符串写到B.txt文件中。 2)然后把A.txt文件中的内容删除,读出B.txt中的加密字符串,并解密,把解密的字符串在会写到A.txt中。

代码略,自己根据下面三个子程序,写出代码。

10.0然后把A.txt文件中的内容删除

string pathout = @\; StreamWriter

writer

=

new

StreamWriter(pathout,

false,

System.Text.Encoding.Default); writer.Write(\);

10.1 对一个字符串 进行加密和解密

string s = \

char[] ss=s.ToCharArray(); char a='#';

for(int i=0;i

ss[i]=(char)(ss[i] ^ a) ;//s[i]=(char)(s[i]^a); for (int i = 0; i < ss.Length; i++) Console.Write(ss[i]+\

Console.WriteLine();

for (int i = 0; i < ss.Length; i++) ss[i] = (char)(ss[i] ^ a); for (int i = 0; i < ss.Length; i++) Console.Write(ss[i] + \

10.2 分割string[] split(char c) string s = \string[] str = s.Split(' ','!');

for (int i = 0; i < str.Length; i++)

Console.WriteLine(str[i]);

10.3 读文本文件 例如:

string path = @\第7章\\Files\\毛主席诗词2.txt\

StreamReader reader = new StreamReader(path, System.Text.Encoding.Default); reader.BaseStream.Seek(10, SeekOrigin.Begin); string line = reader.ReadLine(); while (line != null) {

richTextBox1.Text += line + \ line = reader.ReadLine(); }

reader.Close(); 写文本文件 例如:

string path = @\

StreamWriter writer = new StreamWriter(path, false, System.Text.Encoding.Default); writer.Write(\writer.Write(\

//这两个语句相当于回车换行的作用

writer.Write('\\r'); writer.Write('\\n'); writer.Write(\writer.Close();

,WriteLine()方法执行后会自动添加一个回车换行符“\\r\\n”,而Write()方法没有。

11、*获取c:\\windows目录下的所有TXT文件,在控制台输出文件名,不包含路径。格式如下:

1: AA.Txt 2: AA.Txt

3: AA.Txt 4: AA.Txt 5: AA.Txt ........

通过循环语句编写代码,自己编写。参考代码如下:11.1 11.2 11.1 、打开文件对话框常用的、相对完整的代码:

openFileDialog1.InitialDirectory = \

openFileDialog1.Filter = \文件(*.txt)|*.txt|rtf文件(*.rtf)|*.rtf|All files (*.*)|*.*\openFileDialog1.FilterIndex = 3;

openFileDialog1.Title = \我的打开文件对话框\

if (openFileDialog1.ShowDialog() == DialogResult.OK) {

int pos = openFileDialog1.FileName.LastIndexOf('\\\\'); //获取文件的路径(不含文件名)

string dirpath = openFileDialog1.FileName.Substring(0, pos);

string filename = openFileDialog1.FileName.Substring(pos+1); //获取文件名 }

11.2 、获取指定目录下的所有文件

获取指定目录下的所有文件可由Directory.GetFiles()方法来实现。 string path = @\

//获得D:\\VS2008目录下所有的txt文件

string[] Files = Directory.GetFiles(path, \for (int i = 0; i < Files.Length; i++) {

listBox1.Items.Add(Files[i]); }

12、DataReader对象

例如,下面代码先利用Command对象执行Select语句,并将返回的结果集放到DataReader对象中,然后利用DataReader对象提供的属性和方法逐行、逐项提取结果集中的数据,并显示到ListBox对象中。 string ConnectionString =\ SqlConnection conn = new SqlConnection(ConnectionString); string strSQL = \

SqlCommand Command = new SqlCommand(strSQL, conn); conn.Open();

SqlDataReader reader = Command.ExecuteReader();//结果集放到reader对象中 object[] row = new object[reader.FieldCount]; while(reader.Read()==true) {

reader.GetValues(row); //获取结果集的当前行 for (int i = 0; i < reader.FieldCount; i++) {

listBox1.Items.Add(row[i].ToString()); //将逐项输出行中的项 }

listBox1.Items.Add(\

主意方法:GetName(n)方法 返回n +1列的字段名称。 GetValue(int n)方法

返回当前行中第n+1列的内容。由Read()方法决定当前行。 GetValues() FieldCount属性 返回字段的数目。

13、treeview应用,书上的案例。 14、方法委托程序 *

定义一个有学生类——student类,然后定义一个方法fun(),通过委托实现方法回调,使之既能求出成绩好的学生,也能求成绩差的学生。 class student

{ private string name; //姓名 private double score; //成绩

public student(string name, double score) //定义构造函数,以初始化姓名和成绩 { this.name = name; this.score = score; }

public void showInfo() //显示学生信息

{ Console.WriteLine(\姓名:{0},\\t成绩:{1}\ } public static object max(object obj1, object obj2) //求最大者(静态方法) { student st1 = (student)obj1; student st2 = (student)obj2;

if (st1.score > st2.score) return st1; return st2; }

public static object min(object obj1, object obj2) //求最小者(静态方法) { student st1 = (student)obj1; student st2 = (student)obj2;

if (st1.score > st2.score) return st2; return st1; } }

//声明委托类型,它可以关联静态方法student.max()和student.min() delegate object xnDelegate(object o1, object o2);

//以委托作为参数,定义方法fun(),以求st1和st2中成绩较好或较差的学生 static student fun(student st1, student st2, xnDelegate fxn) {

return (student)fxn(st1, st2); }

static void Main(string[] args)

{ student[] sts = //创建学生对象数组

{ new student(\ new student(\ new student(\ new student(\ new student(\ };

//创建委托对象mx,它关联静态方法student.max xnDelegate mx = new xnDelegate(student.max); //创建委托对象mn,它关联静态方法student.min xnDelegate mn = new xnDelegate(student.min); student maxst, minst;

maxst = minst = sts[0]; sts[0].showInfo();

//利用fun()方法求成绩最好的学生和成绩最差的学生 for (int i = 1; i < sts.Length; i++) {

sts[i].showInfo();

maxst = fun(maxst, sts[i], mx); minst = fun(minst, sts[i], mn); }

Console.WriteLine(\

Console.WriteLine(\成绩最好的学生:\ maxst.showInfo();

Console.WriteLine(\ Console.WriteLine(\成绩最差的学生:\ minst.showInfo(); Console.ReadKey(); } } }

本文来源:https://www.bwwdw.com/article/6dp7.html

Top