给你一份做作! 一、 选择填空题(每空2分,共60分) 1. 在对SQL Server 数据库操作时应选用()。 a) SQL Server .NET Framework 数据提供程序; b) OLE DB .NET Framework 数据提供程序; c) ODBC .NET Framework 数据提供程序; d) Oracle .NET Framework数据提供程序; 2. 下列选项中,()是引用类型。 a) enum类型 b) struct类型 c) string类型 d) int类型 3. 关于ASP.NET中的代码隐藏文件的描述正确的是() a) Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。 b) 项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。 c) 项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。 d) 以上都不正确。 4. 以下描述错误的是() a) 在C++中支持抽象类而在C#中不支持抽象类。 b) C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。 c) 在C#中可使用 new 修饰符显式隐藏从基类继承的成员。 d) 在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。 5. C#的数据类型有() a) 值类型和调用类型; b) 值类型和引用类型; c) 引用类型和关系类型; d) 关系类型和调用类型; 6. 下列描述错误的是() a) 类不可以多重继承而接口可以; b) 抽象类自身可以定义成员而接口不可以; c) 抽象类和接口都不能被实例化; d) 一个类可以有多个基类和多个基接口; 7. 在DOM中,装载一个XML文档的方法() a) save方法 b) load方法 c) loadXML方法 d) send方法 8. 下列关于构造函数的描述正确的是() a) 构造函数可以声明返回类型。 b) 构造函数不可以用private修饰 c) 构造函数必须与类名相同 d) 构造函数不能带参数 9. 以下是一些C#中的枚举型的定义,其中错误的用法有() a) public enum var1{ Mike = 100, Nike = 102, Jike } b) public enum var1{ Mike = 100, Nike, Jike } c) public enum var1{ Mike=-1 , Nike, Jike } d) public enum var1{ Mike , Nike , Jike } 10. int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是()。 a) 9 b) 2 c) 6 d) 越界 11. 接口是一种引用类型,在接口中可以声明(),但不可以声明公有的域或私有的成员变量。 a) 方法、属性、索引器和事件; b) 方法、属性信息、属性; c) 索引器和字段; d) 事件和字段; 12. ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是( ) a) HTML控件和Web控件 b) HTML控件和XML控件 c) XML控件和Web控件 d) HTML控件和IIS控件 13. ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为( ) a) <%@Register TagPrefix = “Mike” TagName = “Space2” Src = “myX.ascx”%> b) <%@Register TagPrefix = “Space2” TagName = “Mike” Src = “myX.ascx”%> c) <%@Register TagPrefix = “SpaceX” TagName = “Space2” Src = “Mike”%> d) 以上皆非 14. 在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是()。 a) insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行; b) ExecuteNonQuery()方法返回执行Sql语句所影响的行数。 c) Select操作的Sql语句只能由ExecuteReader()方法来执行; d) ExecuteReader()方法返回一个DataReder对象; 15. 下列ASP.NET语句(b)正确地创建了一个与SQL Server 2000数据库的连接。 a) SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”); b) SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”); c) SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB); d) SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”); 16. Winform中,关于ToolBar控件的属性和事件的描述不正确的是()。 a) Buttons属性表示ToolBar控件的所有工具栏按钮 b) ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度 c) DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭头键 d) ButtonClick事件在用户单击工具栏任何地方时都会触发 17. 在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和( ),必要时还要设置参数尺寸。 a) 大小; b) 上限; c) 初始值; d) 类型; 18. 如果将窗体的FormBoderStyle设置为None,则( )。 a) 窗体没有边框并不能调整大小; b) 窗体没有边框但能调整大小; c) 窗体有边框但不能调整大小; d) 窗体是透明的; 19. 如果要将窗体设置为透明的,则( ) a) 要将FormBoderStyle属性设置为None; b) 要将Opacity属性设置为小于100%得值; c) 要将locked 属性设置为True; d) 要将 Enabled属性设置为True; 20. 下列关于C#中索引器理解正确的是( ) a) 索引器的参数必须是两个或两个以上 b) 索引器的参数类型必须是整数型 c) 索引器没有名字 d) 以上皆非 21. 下面描述错误的是( )。 a) 窗体也是控件; b) 窗体也是类; c) 控件是从窗体继承来的; d) 窗体的父类是控件类; 22. 要对注册表进行操作则必须包含( )。 a) System.ComponentModel命名空间; b) System.Collections命名空间; c) System.Threading命名空间; d) Microsoft.Win32命名空间; 23. 要创建多文档应用程序,需要将窗体的( )属性设为true。 a) DrawGrid; b) ShowInTaskbar; c) Enabled; d) IsMdiContainer; 24. 如果设treeView1=new TreeView(),则treeView1.Nodes.Add("根节点")返回的是一个 ()类型的值。 a) TreeNode; b) int; c) string; d) TreeView; 25. 下面关于XML的描述错误的是()。 a) XML提供一种描述结构化数据的方法; b) XML 是一种简单、与平台无关并被广泛采用的标准; c) XML文档可承载各种信息; d) XML只是为了生成结构化文档; 26. 以下的C#代码,试图用来定义一个接口: public interface IFile { int A; int delFile() { A = 3; } void disFile(); } 关于以上的代码,以下描述错误的是( )。 a) 以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码行将出现错误; b) 以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以不能编写具体的实现函数; c) 代码void disFile();声明无错误,接口可以没有返回值; d) 代码void disFile();应该编写为void disFile(){}; 27. 在ASP.NET中有Button控件myButton,要是单击控件时,导航到其他页面http://www.abc.com, 正确的代码为( )。 a) private void myButton_Click(object sender, System.EventArgs e){Redirect(“http://www.abc.com”);} b) private void myButton_Click(object sender, System.EventArgs e){Request.Redirect(“http://www.abc.com”);} c) private void myButton_Click(object sender, System.EventArgs e){Reponse.Redirect(“http://www.abc.com”);} d) private void myButton_Click(object sender, System.EventArgs e){Request.Redirect(“http://www.abc.com”);return true;} 28. XML文档既包含数据同时也可包含( )。 a) 元数据; b) 架构; c) 代码; d) 图片; 29. 在C#中利用Socket进行网络通信编程的一般步骤是:建立Socket侦听、( )、利用Socket接收和发送数据。 a) 建立Socket连接; b) 获得端口号; c) 获得IP地址; d) 获得主机名; 30. 声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是( )。 a) void myCallBack(int x) ; b) int receive(int num) ; c) string receive(int x) ; d) 不确定的; 二、 判断题,对的打√错的打×(每小题2分,共20分) 1. ( )在C#中,装箱操作是将值类型转化成引用类型。 2. ( )接口中的成员不可以有访问域修饰符,但可以有其它修饰符。 3. ( )在C#中,索引器是专门用来访问对象中的数组信息的。 4. ( )在C#中,接口可以被多重继承而类不能。 5. ( )在C#中,int[][]是定义一个int型的二维数组。 6. ( )异常类对象均为System.Exception类的对象。 7. ( ) 当窗体最小化后,再次还原成为活动窗体时将自动触发Paint事件。 8. ( ) ASP.NET中,使用验证控件来验证用户输入,要求用户不可跳过该项输入,并且用户输入值在0和1000之间,则适用RequiredFieldValidator和RangeValidator控件。 9. ( ) 声明委托实际上是声明了一个方法。 10. ( ) 任何事物都是对象。 三、 简述题(每小题10分,共20分) 1. 请简述一下用Socket进行同步通讯编程的详细步骤 2. 比较ADO 与ADO.NET 的不同。
1. 填空: (1)面向对象的语言具有________性、_________性、________性。 (2)能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。 (3)列举ADO.net中的五个主要对象_______________、_____________、_______________、_______________、_________________。2. 不定项选择:(1) 以下叙述正确的是: A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。 (2) 从数据库读取记录,你可能用到的方法有: A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader3. 简述 private、 protected、 public、 internal 修饰符的访问权限。 4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。) 5 .列举ASP.NET 页面之间传递值的几种方式。 6. 写出程序的输出结果 class Class1 { private string str = "Class1.str"; private int i = 0; static void StringConvert(string str) { str = "string being converted."; } static void StringConvert(Class1 c) { c.str = "string being converted."; } static void Add(int i) { i++; } static void AddWithRef(ref int i) { i++; } static void Main() { int i1 = 10; int i2 = 20; string str = "str"; Class1 c = new Class1(); Add(i1); AddWithRef(ref i2); Add(c.i); StringConvert(str); StringConvert(c); Console.WriteLine(i1); Console.WriteLine(i2); Console.WriteLine(c.i); Console.WriteLine(str); Console.WriteLine(c.str); } } 7.写出程序的输出结果 public abstract class A { public A() { Console.WriteLine('A'); } public virtual void Fun() { Console.WriteLine("A.Fun()"); } } public class B: A { public B() { Console.WriteLine('B'); } public new void Fun() { Console.WriteLine("B.Fun()"); } public static void Main() { A a = new B(); a.Fun(); } } 8. 写出程序的输出结果: public class A { public virtual void Fun1(int i) { Console.WriteLine(i); } public void Fun2(A a) { a.Fun1(1); Fun1(5); } } public class B : A { public override void Fun1(int i) { base.Fun1 (i + 1); } public static void Main() { B b = new B(); A a = new A(); a.Fun2(b); b.Fun2(a); } } 9. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。(C#语言) 10. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言) 要求: 1.要有联动性,老鼠和主人的行为是被动的。2.考虑可扩展性,猫的叫声可能引起其他联动效应。
一、 选择填空题(每空2分,共60分) 1. 在对SQL Server 数据库操作时应选用(a)。 a) SQL Server .NET Framework 数据提供程序; b) OLE DB .NET Framework 数据提供程序; c) ODBC .NET Framework 数据提供程序; d) Oracle .NET Framework数据提供程序; 2. 下列选项中,(c)是引用类型。 a) enum类型 b) struct类型 c) string类型 d) int类型 3. 关于ASP.NET中的代码隐藏文件的描述正确的是(a) a) Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。 b) 项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。 c) 项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。 d) 以上都不正确。 4. 以下描述错误的是(a) a) 在C++中支持抽象类而在C#中不支持抽象类。 b) C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。 c) 在C#中可使用 new 修饰符显式隐藏从基类继承的成员。 d) 在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。 5. C#的数据类型有(b) a) 值类型和调用类型; b) 值类型和引用类型; c) 引用类型和关系类型; d) 关系类型和调用类型; 6. 下列描述错误的是(d) a) 类不可以多重继承而接口可以; b) 抽象类自身可以定义成员而接口不可以; c) 抽象类和接口都不能被实例化; d) 一个类可以有多个基类和多个基接口; 7. 在DOM中,装载一个XML文档的方法(b) a) save方法 b) load方法 c) loadXML方法 d) send方法 8. 下列关于构造函数的描述正确的是(c) a) 构造函数可以声明返回类型。 b) 构造函数不可以用private修饰 c) 构造函数必须与类名相同 d) 构造函数不能带参数 9. 以下是一些C#中的枚举型的定义,其中错误的用法有(a) a) public enum var1{ Mike = 100, Nike = 102, Jike } b) public enum var1{ Mike = 100, Nike, Jike } c) public enum var1{ Mike=-1 , Nike, Jike } d) public enum var1{ Mike , Nike , Jike } 10. int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是(d)。 a) 9 b) 2 c) 6 d) 越界 11. 接口是一种引用类型,在接口中可以声明( a),但不可以声明公有的域或私有的成员变量。 a) 方法、属性、索引器和事件; b) 方法、属性信息、属性; c) 索引器和字段; d) 事件和字段; 12. ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是(a) a) HTML控件和Web控件 b) HTML控件和XML控件 c) XML控件和Web控件 d) HTML控件和IIS控件 13. ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为(b) a) <%@Register TagPrefix = “Mike” TagName = “Space2” Src = “myX.ascx”%> b) <%@Register TagPrefix = “Space2” TagName = “Mike” Src = “myX.ascx”%> c) <%@Register TagPrefix = “SpaceX” TagName = “Space2” Src = “Mike”%> d) 以上皆非 14. 在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(c)。 a) insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行; b) ExecuteNonQuery()方法返回执行Sql语句所影响的行数。 c) Select操作的Sql语句只能由ExecuteReader()方法来执行; d) ExecuteReader()方法返回一个DataReder对象; 15. 下列ASP.NET语句(b)正确地创建了一个与SQL Server 2000数据库的连接。 a) SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”); b) SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”); c) SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB); d) SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”); 16. Winform中,关于ToolBar控件的属性和事件的描述不正确的是(d)。 a) Buttons属性表示ToolBar控件的所有工具栏按钮 b) ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度 c) DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭头键 d) ButtonClick事件在用户单击工具栏任何地方时都会触发 17. 在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(d ),必要时还要设置参数尺寸。 a) 大小; b) 上限; c) 初始值; d) 类型; 18. 如果将窗体的FormBoderStyle设置为None,则( a)。 a) 窗体没有边框并不能调整大小; b) 窗体没有边框但能调整大小; c) 窗体有边框但不能调整大小; d) 窗体是透明的; 19. 如果要将窗体设置为透明的,则( b) a) 要将FormBoderStyle属性设置为None; b) 要将Opacity属性设置为小于100%得值; c) 要将locked 属性设置为True; d) 要将 Enabled属性设置为True; 20. 下列关于C#中索引器理解正确的是(c ) a) 索引器的参数必须是两个或两个以上 b) 索引器的参数类型必须是整数型 c) 索引器没有名字 d) 以上皆非 21. 下面描述错误的是(c )。 a) 窗体也是控件; b) 窗体也是类; c) 控件是从窗体继承来的; d) 窗体的父类是控件类; 22. 要对注册表进行操作则必须包含(d )。 a) System.ComponentModel命名空间; b) System.Collections命名空间; c) System.Threading命名空间; d) Microsoft.Win32命名空间; 23. 要创建多文档应用程序,需要将窗体的(d )属性设为true。 a) DrawGrid; b) ShowInTaskbar; c) Enabled; d) IsMdiContainer; 24. 如果设treeView1=new TreeView(),则treeView1.Nodes.Add("根节点")返回的是一个 (a)类型的值。 a) TreeNode; b) int; c) string; d) TreeView; 25. 下面关于XML的描述错误的是( d)。 a) XML提供一种描述结构化数据的方法; b) XML 是一种简单、与平台无关并被广泛采用的标准; c) XML文档可承载各种信息; d) XML只是为了生成结构化文档; 26. 以下的C#代码,试图用来定义一个接口: public interface IFile { int A; int delFile() { A = 3; } void disFile(); } 关于以上的代码,以下描述错误的是(d )。 a) 以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码行将出现错误; b) 以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以不能编写具体的实现函数; c) 代码void disFile();声明无错误,接口可以没有返回值; d) 代码void disFile();应该编写为void disFile(){}; 27. 在ASP.NET中有Button控件myButton,要是单击控件时,导航到其他页面http://www.abc.com, 正确的代码为( c)。 a) private void myButton_Click(object sender, System.EventArgs e){Redirect(“http://www.abc.com”);} b) private void myButton_Click(object sender, System.EventArgs e){Request.Redirect(“http://www.abc.com”);} c) private void myButton_Click(object sender, System.EventArgs e){Reponse.Redirect(“http://www.abc.com”);} d) private void myButton_Click(object sender, System.EventArgs e){Request.Redirect(“http://www.abc.com”);return true;} 28. XML文档既包含数据同时也可包含(b )。 a) 元数据; b) 架构; c) 代码; d) 图片; 29. 在C#中利用Socket进行网络通信编程的一般步骤是:建立Socket侦听、( a)、利用Socket接收和发送数据。 a) 建立Socket连接; b) 获得端口号; c) 获得IP地址; d) 获得主机名; 30. 声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是(b )。 a) void myCallBack(int x) ; b) int receive(int num) ; c) string receive(int x) ; d) 不确定的; 二、 判断题,对的打√错的打×(每小题2分,共20分) 1. ( T)在C#中,装箱操作是将值类型转化成引用类型。 2. ( F)接口中的成员不可以有访问域修饰符,但可以有其它修饰符。 3. ( F)在C#中,索引器是专门用来访问对象中的数组信息的。 4. ( T)在C#中,接口可以被多重继承而类不能。 5. ( F)在C#中,int[][]是定义一个int型的二维数组。 6. ( T)异常类对象均为System.Exception类的对象。 7. (T ) 当窗体最小化后,再次还原成为活动窗体时将自动触发Paint事件。 8. ( T) ASP.NET中,使用验证控件来验证用户输入,要求用户不可跳过该项输入,并且用户输入值在0和1000之间,则适用RequiredFieldValidator和RangeValidator控件。 9. ( F) 声明委托实际上是声明了一个方法。 10. (T ) 任何事物都是对象。 三、 简述题(每小题10分,共20分) 1. 请简述一下用Socket进行同步通讯编程的详细步骤 1、 在应用程序和远程设备中使用协议和网络地址初始化套接字 2、在应用程序中通过指定端口和地址建立监听 3、远程设备发出连接请求 4、应用程序接受连接产生通信scoket 5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束) 6、通讯结束,关闭应用程序和远程设备的Socket回收资源 2. 比较ADO 与ADO.NET 的不同。 我就不写了
一、 选择填空题(每空2分,共60分)
1. 在对SQL Server 数据库操作时应选用()。
a) SQL Server .NET Framework 数据提供程序;
b) OLE DB .NET Framework 数据提供程序;
c) ODBC .NET Framework 数据提供程序;
d) Oracle .NET Framework数据提供程序;
2. 下列选项中,()是引用类型。
a) enum类型
b) struct类型
c) string类型
d) int类型
3. 关于ASP.NET中的代码隐藏文件的描述正确的是()
a) Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。
b) 项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。
c) 项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。
d) 以上都不正确。
4. 以下描述错误的是()
a) 在C++中支持抽象类而在C#中不支持抽象类。
b) C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。
c) 在C#中可使用 new 修饰符显式隐藏从基类继承的成员。
d) 在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
5. C#的数据类型有()
a) 值类型和调用类型;
b) 值类型和引用类型;
c) 引用类型和关系类型;
d) 关系类型和调用类型;
6. 下列描述错误的是()
a) 类不可以多重继承而接口可以;
b) 抽象类自身可以定义成员而接口不可以;
c) 抽象类和接口都不能被实例化;
d) 一个类可以有多个基类和多个基接口;
7. 在DOM中,装载一个XML文档的方法()
a) save方法
b) load方法
c) loadXML方法
d) send方法
8. 下列关于构造函数的描述正确的是()
a) 构造函数可以声明返回类型。
b) 构造函数不可以用private修饰
c) 构造函数必须与类名相同
d) 构造函数不能带参数
9. 以下是一些C#中的枚举型的定义,其中错误的用法有()
a) public enum var1{ Mike = 100, Nike = 102, Jike }
b) public enum var1{ Mike = 100, Nike, Jike }
c) public enum var1{ Mike=-1 , Nike, Jike }
d) public enum var1{ Mike , Nike , Jike }
10. int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是()。
a) 9
b) 2
c) 6
d) 越界
11. 接口是一种引用类型,在接口中可以声明(),但不可以声明公有的域或私有的成员变量。
a) 方法、属性、索引器和事件;
b) 方法、属性信息、属性;
c) 索引器和字段;
d) 事件和字段;
12. ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是( )
a) HTML控件和Web控件
b) HTML控件和XML控件
c) XML控件和Web控件
d) HTML控件和IIS控件
13. ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为( )
a) <%@Register TagPrefix = “Mike” TagName = “Space2” Src = “myX.ascx”%>
b) <%@Register TagPrefix = “Space2” TagName = “Mike” Src = “myX.ascx”%>
c) <%@Register TagPrefix = “SpaceX” TagName = “Space2” Src = “Mike”%>
d) 以上皆非
14. 在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是()。
a) insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;
b) ExecuteNonQuery()方法返回执行Sql语句所影响的行数。
c) Select操作的Sql语句只能由ExecuteReader()方法来执行;
d) ExecuteReader()方法返回一个DataReder对象;
15. 下列ASP.NET语句(b)正确地创建了一个与SQL Server 2000数据库的连接。
a) SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
b) SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
c) SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);
d) SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
16. Winform中,关于ToolBar控件的属性和事件的描述不正确的是()。
a) Buttons属性表示ToolBar控件的所有工具栏按钮
b) ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度
c) DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭头键
d) ButtonClick事件在用户单击工具栏任何地方时都会触发
17. 在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和( ),必要时还要设置参数尺寸。
a) 大小;
b) 上限;
c) 初始值;
d) 类型;
18. 如果将窗体的FormBoderStyle设置为None,则( )。
a) 窗体没有边框并不能调整大小;
b) 窗体没有边框但能调整大小;
c) 窗体有边框但不能调整大小;
d) 窗体是透明的;
19. 如果要将窗体设置为透明的,则( )
a) 要将FormBoderStyle属性设置为None;
b) 要将Opacity属性设置为小于100%得值;
c) 要将locked 属性设置为True;
d) 要将 Enabled属性设置为True;
20. 下列关于C#中索引器理解正确的是( )
a) 索引器的参数必须是两个或两个以上
b) 索引器的参数类型必须是整数型
c) 索引器没有名字
d) 以上皆非
21. 下面描述错误的是( )。
a) 窗体也是控件;
b) 窗体也是类;
c) 控件是从窗体继承来的;
d) 窗体的父类是控件类;
22. 要对注册表进行操作则必须包含( )。
a) System.ComponentModel命名空间;
b) System.Collections命名空间;
c) System.Threading命名空间;
d) Microsoft.Win32命名空间;
23. 要创建多文档应用程序,需要将窗体的( )属性设为true。
a) DrawGrid;
b) ShowInTaskbar;
c) Enabled;
d) IsMdiContainer;
24. 如果设treeView1=new TreeView(),则treeView1.Nodes.Add("根节点")返回的是一个 ()类型的值。
a) TreeNode;
b) int;
c) string;
d) TreeView;
25. 下面关于XML的描述错误的是()。
a) XML提供一种描述结构化数据的方法;
b) XML 是一种简单、与平台无关并被广泛采用的标准;
c) XML文档可承载各种信息;
d) XML只是为了生成结构化文档;
26. 以下的C#代码,试图用来定义一个接口:
public interface IFile
{
int A;
int delFile()
{
A = 3;
}
void disFile();
}
关于以上的代码,以下描述错误的是( )。
a) 以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码行将出现错误;
b) 以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以不能编写具体的实现函数;
c) 代码void disFile();声明无错误,接口可以没有返回值;
d) 代码void disFile();应该编写为void disFile(){};
27. 在ASP.NET中有Button控件myButton,要是单击控件时,导航到其他页面http://www.abc.com, 正确的代码为( )。
a) private void myButton_Click(object sender, System.EventArgs e){Redirect(“http://www.abc.com”);}
b) private void myButton_Click(object sender, System.EventArgs e){Request.Redirect(“http://www.abc.com”);}
c) private void myButton_Click(object sender, System.EventArgs e){Reponse.Redirect(“http://www.abc.com”);}
d) private void myButton_Click(object sender, System.EventArgs e){Request.Redirect(“http://www.abc.com”);return true;}
28. XML文档既包含数据同时也可包含( )。
a) 元数据;
b) 架构;
c) 代码;
d) 图片;
29. 在C#中利用Socket进行网络通信编程的一般步骤是:建立Socket侦听、( )、利用Socket接收和发送数据。
a) 建立Socket连接;
b) 获得端口号;
c) 获得IP地址;
d) 获得主机名;
30. 声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是( )。
a) void myCallBack(int x) ;
b) int receive(int num) ;
c) string receive(int x) ;
d) 不确定的;
二、 判断题,对的打√错的打×(每小题2分,共20分)
1. ( )在C#中,装箱操作是将值类型转化成引用类型。
2. ( )接口中的成员不可以有访问域修饰符,但可以有其它修饰符。
3. ( )在C#中,索引器是专门用来访问对象中的数组信息的。
4. ( )在C#中,接口可以被多重继承而类不能。
5. ( )在C#中,int[][]是定义一个int型的二维数组。
6. ( )异常类对象均为System.Exception类的对象。
7. ( ) 当窗体最小化后,再次还原成为活动窗体时将自动触发Paint事件。
8. ( ) ASP.NET中,使用验证控件来验证用户输入,要求用户不可跳过该项输入,并且用户输入值在0和1000之间,则适用RequiredFieldValidator和RangeValidator控件。
9. ( ) 声明委托实际上是声明了一个方法。
10. ( ) 任何事物都是对象。
三、 简述题(每小题10分,共20分)
1. 请简述一下用Socket进行同步通讯编程的详细步骤
2. 比较ADO 与ADO.NET 的不同。
下面的问题相信很多人都听过:
1 有五栋五种颜色的房子
2 每一位房子的主人国籍都不同
3 这五个人每人只喝一种饮料,只抽一种牌子的香烟,只养一种宠物
4 没有人有相同的宠物,抽相同牌子的香烟,喝相同的饮料
提示:
1、 英国人住在红房子里
2 、瑞典人养了一条狗
3 、丹麦人喝茶
4 、绿房子在白房子左边
5 、绿房子主人喝咖啡
6 、抽PALL MALL烟的人养了一只鸟
7 、黄房子主人抽DUNHILL烟
8 、住在中间那间房子的人喝牛奶
9 、挪威人住第一间房子
10 、抽混合烟的人住在养鱼人的旁边
11 、养马人住在DUNHILL烟的人旁边
12 、抽BLUE MASTER烟的人喝啤酒
13、 德国人抽PRINCE烟
14 、挪威人住在蓝房子旁边
15 、抽混合烟的人的邻居喝矿泉水
问题是:谁养鱼?
这道迷题出自1981年柏林的德国逻辑思考学院。据说世界上只有2%的人能出答案。就连大名鼎鼎的爱因斯坦也成为此题大伤脑筋,所以这道题也经常被国内外知名公司用做面试题目,相信许多朋友都只做出过一个答案,如果碰巧你属于那98%该怎么办呢。没关系,如果这个问题用电脑来解决就非常easy了。
不用考了,你一定要明白一个道理,看书是没效果的,一定要动手做!!!!
我现在就是要动手啊,才希望大家在这出题呀
那就试试看用C#写个操作系统吧
楼上不是开玩笑吧
我还没入门呢?帮助一下新人吗?
谁都是从不会到会的
购物车页面我用的是datalist
我用的session["totalprice"]所有商品的总价格
现在的情况是:购物车可以删除一行,可以更改数量并刷新该商品更改数量后的价格。
但是由于是点update后才能获得QtyTextBox 的值,所以只能获得该商品的更改数量后的价格。
而此时总价格就不对,比如session["totalprice"]的值现在为5000,有样商品A初始数量为1,单价为1000,我把QtyTextBox 的值改为2,然后点update,很明显该商品A的总价为2000,总价格应该为7000,但是如果还要update的话,比如再把2改为3,此时我的购物车总价格应该变成8000;问:应该怎么改,或者说,怎么样可以在点update前获得QtyTextBox的值
1. 填空: (1)面向对象的语言具有________性、_________性、________性。 (2)能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。 (3)列举ADO.net中的五个主要对象_______________、_____________、_______________、_______________、_________________。2. 不定项选择:(1) 以下叙述正确的是: A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。
C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。 (2) 从数据库读取记录,你可能用到的方法有: A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader3. 简述 private、 protected、 public、 internal 修饰符的访问权限。
4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。)
5 .列举ASP.NET 页面之间传递值的几种方式。
6. 写出程序的输出结果 class Class1 {
private string str = "Class1.str";
private int i = 0;
static void StringConvert(string str) {
str = "string being converted.";
}
static void StringConvert(Class1 c) {
c.str = "string being converted.";
}
static void Add(int i) {
i++;
}
static void AddWithRef(ref int i) {
i++;
}
static void Main() {
int i1 = 10;
int i2 = 20;
string str = "str";
Class1 c = new Class1();
Add(i1);
AddWithRef(ref i2);
Add(c.i);
StringConvert(str);
StringConvert(c);
Console.WriteLine(i1);
Console.WriteLine(i2);
Console.WriteLine(c.i);
Console.WriteLine(str);
Console.WriteLine(c.str);
}
}
7.写出程序的输出结果 public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
} public class B: A
{
public B()
{
Console.WriteLine('B');
} public new void Fun()
{
Console.WriteLine("B.Fun()");
} public static void Main()
{
A a = new B();
a.Fun();
}
}
8. 写出程序的输出结果:
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
} public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
public class B : A
{
public override void Fun1(int i)
{
base.Fun1 (i + 1);
} public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
}
} 9. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。(C#语言)
10. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言) 要求: 1.要有联动性,老鼠和主人的行为是被动的。2.考虑可扩展性,猫的叫声可能引起其他联动效应。
谢谢
[email protected]
2 每一位房子的主人国籍都不同
3 这五个人每人只喝一种饮料,只抽一种牌子的香烟,只养一种宠物
4 没有人有相同的宠物,抽相同牌子的香烟,喝相同的饮料
提示:
1、 英国人住在红房子里
2 、瑞典人养了一条狗
3 、丹麦人喝茶
4 、绿房子在白房子左边
5 、绿房子主人喝咖啡
6 、抽PALL MALL烟的人养了一只鸟
7 、黄房子主人抽DUNHILL烟
8 、住在中间那间房子的人喝牛奶
9 、挪威人住第一间房子
10 、抽混合烟的人住在养鱼人的旁边
11 、养马人住在DUNHILL烟的人旁边
12 、抽BLUE MASTER烟的人喝啤酒
13、 德国人抽PRINCE烟
14 、挪威人住在蓝房子旁边
15 、抽混合烟的人的邻居喝矿泉水
问题是:谁养鱼?
////////
这个是什么题目阿??
1. 在对SQL Server 数据库操作时应选用(a)。
a) SQL Server .NET Framework 数据提供程序;
b) OLE DB .NET Framework 数据提供程序;
c) ODBC .NET Framework 数据提供程序;
d) Oracle .NET Framework数据提供程序;
2. 下列选项中,(c)是引用类型。
a) enum类型
b) struct类型
c) string类型
d) int类型
3. 关于ASP.NET中的代码隐藏文件的描述正确的是(a)
a) Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。
b) 项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。
c) 项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。
d) 以上都不正确。
4. 以下描述错误的是(a)
a) 在C++中支持抽象类而在C#中不支持抽象类。
b) C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。
c) 在C#中可使用 new 修饰符显式隐藏从基类继承的成员。
d) 在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
5. C#的数据类型有(b)
a) 值类型和调用类型;
b) 值类型和引用类型;
c) 引用类型和关系类型;
d) 关系类型和调用类型;
6. 下列描述错误的是(d)
a) 类不可以多重继承而接口可以;
b) 抽象类自身可以定义成员而接口不可以;
c) 抽象类和接口都不能被实例化;
d) 一个类可以有多个基类和多个基接口;
7. 在DOM中,装载一个XML文档的方法(b)
a) save方法
b) load方法
c) loadXML方法
d) send方法
8. 下列关于构造函数的描述正确的是(c)
a) 构造函数可以声明返回类型。
b) 构造函数不可以用private修饰
c) 构造函数必须与类名相同
d) 构造函数不能带参数
9. 以下是一些C#中的枚举型的定义,其中错误的用法有(a)
a) public enum var1{ Mike = 100, Nike = 102, Jike }
b) public enum var1{ Mike = 100, Nike, Jike }
c) public enum var1{ Mike=-1 , Nike, Jike }
d) public enum var1{ Mike , Nike , Jike }
10. int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是(d)。
a) 9
b) 2
c) 6
d) 越界
11. 接口是一种引用类型,在接口中可以声明( a),但不可以声明公有的域或私有的成员变量。
a) 方法、属性、索引器和事件;
b) 方法、属性信息、属性;
c) 索引器和字段;
d) 事件和字段;
12. ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是(a)
a) HTML控件和Web控件
b) HTML控件和XML控件
c) XML控件和Web控件
d) HTML控件和IIS控件
13. ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为(b)
a) <%@Register TagPrefix = “Mike” TagName = “Space2” Src = “myX.ascx”%>
b) <%@Register TagPrefix = “Space2” TagName = “Mike” Src = “myX.ascx”%>
c) <%@Register TagPrefix = “SpaceX” TagName = “Space2” Src = “Mike”%>
d) 以上皆非
14. 在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(c)。
a) insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;
b) ExecuteNonQuery()方法返回执行Sql语句所影响的行数。
c) Select操作的Sql语句只能由ExecuteReader()方法来执行;
d) ExecuteReader()方法返回一个DataReder对象;
15. 下列ASP.NET语句(b)正确地创建了一个与SQL Server 2000数据库的连接。
a) SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
b) SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
c) SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);
d) SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
16. Winform中,关于ToolBar控件的属性和事件的描述不正确的是(d)。
a) Buttons属性表示ToolBar控件的所有工具栏按钮
b) ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度
c) DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭头键
d) ButtonClick事件在用户单击工具栏任何地方时都会触发
17. 在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(d ),必要时还要设置参数尺寸。
a) 大小;
b) 上限;
c) 初始值;
d) 类型;
18. 如果将窗体的FormBoderStyle设置为None,则( a)。
a) 窗体没有边框并不能调整大小;
b) 窗体没有边框但能调整大小;
c) 窗体有边框但不能调整大小;
d) 窗体是透明的;
19. 如果要将窗体设置为透明的,则( b)
a) 要将FormBoderStyle属性设置为None;
b) 要将Opacity属性设置为小于100%得值;
c) 要将locked 属性设置为True;
d) 要将 Enabled属性设置为True;
20. 下列关于C#中索引器理解正确的是(c )
a) 索引器的参数必须是两个或两个以上
b) 索引器的参数类型必须是整数型
c) 索引器没有名字
d) 以上皆非
21. 下面描述错误的是(c )。
a) 窗体也是控件;
b) 窗体也是类;
c) 控件是从窗体继承来的;
d) 窗体的父类是控件类;
22. 要对注册表进行操作则必须包含(d )。
a) System.ComponentModel命名空间;
b) System.Collections命名空间;
c) System.Threading命名空间;
d) Microsoft.Win32命名空间;
23. 要创建多文档应用程序,需要将窗体的(d )属性设为true。
a) DrawGrid;
b) ShowInTaskbar;
c) Enabled;
d) IsMdiContainer;
24. 如果设treeView1=new TreeView(),则treeView1.Nodes.Add("根节点")返回的是一个 (a)类型的值。
a) TreeNode;
b) int;
c) string;
d) TreeView;
25. 下面关于XML的描述错误的是( d)。
a) XML提供一种描述结构化数据的方法;
b) XML 是一种简单、与平台无关并被广泛采用的标准;
c) XML文档可承载各种信息;
d) XML只是为了生成结构化文档;
26. 以下的C#代码,试图用来定义一个接口:
public interface IFile
{
int A;
int delFile()
{
A = 3;
}
void disFile();
}
关于以上的代码,以下描述错误的是(d )。
a) 以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码行将出现错误;
b) 以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以不能编写具体的实现函数;
c) 代码void disFile();声明无错误,接口可以没有返回值;
d) 代码void disFile();应该编写为void disFile(){};
27. 在ASP.NET中有Button控件myButton,要是单击控件时,导航到其他页面http://www.abc.com, 正确的代码为( c)。
a) private void myButton_Click(object sender, System.EventArgs e){Redirect(“http://www.abc.com”);}
b) private void myButton_Click(object sender, System.EventArgs e){Request.Redirect(“http://www.abc.com”);}
c) private void myButton_Click(object sender, System.EventArgs e){Reponse.Redirect(“http://www.abc.com”);}
d) private void myButton_Click(object sender, System.EventArgs e){Request.Redirect(“http://www.abc.com”);return true;}
28. XML文档既包含数据同时也可包含(b )。
a) 元数据;
b) 架构;
c) 代码;
d) 图片;
29. 在C#中利用Socket进行网络通信编程的一般步骤是:建立Socket侦听、( a)、利用Socket接收和发送数据。
a) 建立Socket连接;
b) 获得端口号;
c) 获得IP地址;
d) 获得主机名;
30. 声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是(b )。
a) void myCallBack(int x) ;
b) int receive(int num) ;
c) string receive(int x) ;
d) 不确定的;
二、 判断题,对的打√错的打×(每小题2分,共20分)
1. ( T)在C#中,装箱操作是将值类型转化成引用类型。
2. ( F)接口中的成员不可以有访问域修饰符,但可以有其它修饰符。
3. ( F)在C#中,索引器是专门用来访问对象中的数组信息的。
4. ( T)在C#中,接口可以被多重继承而类不能。
5. ( F)在C#中,int[][]是定义一个int型的二维数组。
6. ( T)异常类对象均为System.Exception类的对象。
7. (T ) 当窗体最小化后,再次还原成为活动窗体时将自动触发Paint事件。
8. ( T) ASP.NET中,使用验证控件来验证用户输入,要求用户不可跳过该项输入,并且用户输入值在0和1000之间,则适用RequiredFieldValidator和RangeValidator控件。
9. ( F) 声明委托实际上是声明了一个方法。
10. (T ) 任何事物都是对象。
三、 简述题(每小题10分,共20分)
1. 请简述一下用Socket进行同步通讯编程的详细步骤
1、 在应用程序和远程设备中使用协议和网络地址初始化套接字 2、在应用程序中通过指定端口和地址建立监听 3、远程设备发出连接请求 4、应用程序接受连接产生通信scoket 5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束) 6、通讯结束,关闭应用程序和远程设备的Socket回收资源
2. 比较ADO 与ADO.NET 的不同。
我就不写了
挪威人住黄房子,抽DullHill,喝矿泉水,养鱼;
丹麦人住蓝房子,抽混合烟 ,喝茶,养马;
英国人住红房子,抽不详,喝牛奶,养不详;
德国人住绿房子,抽pall,喝咖啡,养鸟;
瑞典人住白房子,抽blue,喝啤酒,养狗;
好像都合适每个条件!
丹麦人住蓝房子,抽混合烟 ,喝茶,养马;
英国人住红房子,抽pall,喝牛奶,养鸟;
德国人住绿房子,抽PRINCE,喝咖啡,养不详;
瑞典人住白房子,抽blue,喝啤酒,养狗;我觉得这样改一下应该不错!
作者:李志勇 发文时间:2004.03.04
下面的问题相信很多人都听过:
1 有五栋五种颜色的房子
2 每一位房子的主人国籍都不同
3 这五个人每人只喝一种饮料,只抽一种牌子的香烟,只养一种宠物
4 没有人有相同的宠物,抽相同牌子的香烟,喝相同的饮料
提示:
1、 英国人住在红房子里
2 、瑞典人养了一条狗
3 、丹麦人喝茶
4 、绿房子在白房子左边
5 、绿房子主人喝咖啡
6 、抽PALL MALL烟的人养了一只鸟
7 、黄房子主人抽DUNHILL烟
8 、住在中间那间房子的人喝牛奶
9 、挪威人住第一间房子
10 、抽混合烟的人住在养鱼人的旁边
11 、养马人住在DUNHILL烟的人旁边
12 、抽BLUE MASTER烟的人喝啤酒
13、 德国人抽PRINCE烟
14 、挪威人住在蓝房子旁边
15 、抽混合烟的人的邻居喝矿泉水
问题是:谁养鱼?
这道迷题出自1981年柏林的德国逻辑思考学院。据说世界上只有2%的人能出答案。就连大名鼎鼎的爱因斯坦也成为此题大伤脑筋,所以这道题也经常被国内外知名公司用做面试题目,相信许多朋友都只做出过一个答案,如果碰巧你属于那98%该怎么办呢。没关系,如果这个问题用电脑来解决就非常easy了。程序代码如下:
using System;
namespace netsafe.math
{
public class ayst
{
/// <summary>
/// 问题中的所有元素
/// </summary>
string[,] data= {{"黄房子","蓝房子","白房子","红房子","绿房子"},
{"挪威人","英国人","德国人","丹麦人","瑞典人"},
{"DUNHILL","PRINCE","混合烟", "PALL MALL","BLUE MASTER"},
{"咖 啡","矿泉水","茶","牛奶"," 啤酒 "},
{"鱼"," 恐龙","马", "鸟","狗"}};
/// <summary>/// answer用来存放答案
/// </summary>
int[,] answer=new int[6, 6];
int[,] ALL=new int[6,122];
int count=1;
int nLevel = 0;
int[] List=new int[6];
public static void Main(string[] args)
{
ayst c=new ayst();
c.p(); ///生成全排列到all
c.run();
Console.Read(); /// 按任意键继续
}
void run()
{
int i1,i2,i3,i4,i5;///通过逻辑条件顺序的有效选择来优化程序
for (i1=1;i1<=120;i1++)///房子
{
///9 、挪威人住第一间房子
///14 、挪威人住在蓝房子旁边
///不满足条件就短路
///
if (ALL[2,i1]!=2)continue;
for(int j=0;j<5;j++,answer[j,1]=ALL[j,i1]);
for (i2=1;i2<=120;i2++)///人种
{
for(int j=0;j<5;j++,answer[j,2]=ALL[j,i2]);
///9 、挪威人住第一间房子
if (ALL[1,i2]!=1)continue;
///1、 英国人住在红房子里
///
if (find(1,4)!=find(2,2))continue;
///4 、绿房子在白房子左边
///
if (find(1,5)>find(1,3))continue;
for (i3=1;i3<=120;i3++)///烟
{
for(int j=0;j<5;j++,answer[j,3]=ALL[j,i3]);
///13、 德国人抽PRINCE烟
///
if(find(2,3)!=find(3,2))continue;
///7 、黄房子主人抽DUNHILL烟
///
if(find(1,1)!=find(3,1))continue;
for (i4=1;i4<=120;i4++)///饮料
{
for(int j=0;j<5;j++,answer[j,4]=ALL[j,i4]);
///8 、住在中间那间房子的人喝牛奶
///
if(ALL[3,i4]!=4)continue;
///5 、绿房子主人喝咖啡
///
if (find(1,5)!=find(4,1))continue;
///3 、丹麦人喝茶
///
if(find(2,4)!=find(4,3))continue;
///15 、抽混合烟的人的邻居喝矿泉水
if(Math.Abs(find(3,3)-find(4,2))!=1)continue;
///12 、抽BLUE MASTER烟的人喝啤酒
///
if(find(3,5)!=find(4,5))continue;
for (i5=1;i5<=120;i5++)///宠物
{
for(int j=0;j<5;j++,answer[j,5]=ALL[j,i5]);
///10 、抽混合烟的人住在养鱼人的旁边
///
if(Math.Abs(find(3,3)-find(5,1))!=1)continue;
///2 、瑞典人养了一条狗
///
if(find(2,5)!=find(5,5))continue;
///6 、抽PALL MALL烟的人养了一只鸟
///
if(find(3,4)!=find(5,4))continue;
///11 、养马人住在DUNHILL烟的人旁边
///
if(Math.Abs(find(5,3)-find(3,1))!=1)continue;
///
///能活到这里的data,当然是答案喽
///
write_answer();
}
}
}
}
}
}
/// <summary>
/// 非常典型的用递归实现排列组合算法。
/// </summary>
public void p()
{
int nCount,nJudge,key;
nLevel++;
if(nLevel>5)
{
writeall();///有一种排列就写到All数组里
nLevel--;
return;
}
for(nCount=1;nCount<=5;nCount++)
{
key=0;
for(nJudge=0;nJudge<=nLevel-1;nJudge++)
if(nCount==List[nJudge])
{
key=1;
break;
}
if(key==0)
{
List[nLevel]=nCount;
p();
}
}
nLevel--;
}
/// <summary>
/// 写入all数组
/// </summary>
void writeall()
{
int i;
for (i=1;i<=5;i++)
{
ALL[i,count]=List[i];
}
count++;
}
int find(int i,int j)
{
int k;
for(k=0;k<=5;k++)
{
if (answer[k,i]==j)
{
return k;
}
}
return -1;
}
/// <summary>
/// 将答案打印出来
/// </summary>
void write_answer()
{
for (int i = 1;i<=5;i++)
{
for(int j=1 ;j<=5;j++)
{
Console.Write(data[i-1,answer[j,i]-1]+",");
}
Console.WriteLine();
}
Console.WriteLine();
}
}
}
说明:程序使用目前最热门的C#语言,在Microsoft Visual Studio.net下编译执行通过。如果你没有Microsoft Visual C# 需要安装Microsoft(r) .NET Framework SDK ,把上述代码保存到ayst.cs,然后在命令行模式下执行csc ayst.cs ,然后执行ayst.exe也可以。这个程序是很久之前写的。当时只是为了得到答案,所以程序写的比较乱。让同行见笑了。以下是程序的运行结果(答案一总7种,没想到吧):
黄房子,蓝房子,红房子,绿房子,白房子,
挪威人,丹麦人,英国人,德国人,瑞典人,
DUNHILL,混合烟,PALL MALL,PRINCE,BLUE MASTER,
矿泉水,茶,牛奶,咖 啡, 啤酒 ,
鱼,马,鸟, 恐龙,狗, 绿房子,蓝房子,黄房子,红房子,白房子,
挪威人,德国人,瑞典人,英国人,丹麦人,
混合烟,PRINCE,DUNHILL,BLUE MASTER,PALL MALL,
咖 啡,矿泉水,牛奶, 啤酒 ,茶,
恐龙,鱼,狗,马,鸟, 绿房子,蓝房子,白房子,黄房子,红房子,
挪威人,德国人,瑞典人,丹麦人,英国人,
PALL MALL,PRINCE,混合烟,DUNHILL,BLUE MASTER,
咖 啡,矿泉水,牛奶,茶, 啤酒 ,
鸟,鱼,狗, 恐龙,马, 绿房子,蓝房子,白房子,黄房子,红房子,
挪威人,德国人,瑞典人,丹麦人,英国人,
PALL MALL,PRINCE,混合烟,DUNHILL,BLUE MASTER,
咖 啡,矿泉水,牛奶,茶, 啤酒 ,
鸟, 恐龙,狗,鱼,马, 绿房子,蓝房子,白房子,红房子,黄房子,
挪威人,德国人,瑞典人,英国人,丹麦人,
PALL MALL,PRINCE,混合烟,BLUE MASTER,DUNHILL,
咖 啡,矿泉水,牛奶, 啤酒 ,茶,
鸟,鱼,狗,马, 恐龙,
绿房子,蓝房子,红房子,黄房子,白房子,
挪威人,德国人,英国人,丹麦人,瑞典人,
PALL MALL,PRINCE,混合烟,DUNHILL,BLUE MASTER,
咖 啡,矿泉水,牛奶,茶, 啤酒 ,
鸟,鱼,马, 恐龙,狗, 绿房子,蓝房子,红房子,黄房子,白房子,
挪威人,德国人,英国人,丹麦人,瑞典人,
PALL MALL,PRINCE,混合烟,DUNHILL,BLUE MASTER,
咖 啡,矿泉水,牛奶,茶, 啤酒 ,
鸟, 恐龙,马,鱼,狗,
多谢楼上啊
感激不尽,不过对与我刚刚看完c#入门经典的人是不是难点啊
希望大家在发题呀
给初学c#的人一个更好的进步机会这已经是很简的了,兄弟,书是理论不能看一遍就完事了,要理解一些东西,不是硬性的记住一些东西~!我也是刚入门,这些题(除ADO。NET ASP。NET以外)对我来说很简单的,加油吧
丹麦人住在蓝房子,喝得茶,抽的混合烟,养马.
英国人住在红房子,喝得牛奶,抽PallMall烟,养鸟.
德国人住在绿房子,喝得咖啡,抽Prince烟.
瑞典人住在白房子,喝得啤酒,抽BlueMaster烟,养狗.
http://community.csdn.net/Expert/TopicView1.asp?id=3971746
这个题是我在太平洋网上看见的,答案也是那的,我当然没那么高的水平
[email protected]
[email protected]