C#计科复习(参考答案).doc_第1页
C#计科复习(参考答案).doc_第2页
C#计科复习(参考答案).doc_第3页
C#计科复习(参考答案).doc_第4页
C#计科复习(参考答案).doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(一)题型与分值分布1、填空题(10小题,10分)2、单项选择题(8小题,16分)3、多项选择题(5小题,15分)4、问答与分析题(8小题,41分)5、程序填空题(3小题,18分)(二)知识要点一、C#基础知识1、C#源文件的扩展名为cs,C#的编译器为csc。2、MSIL是独立于CPU 的指令集,它可以被高效地转换为特定于某种CPU 的代码3、C#的数据类型分为两大类:值类型和引用类型。4、小数类型:double、float、decimal类型。【例1】 在C#编制的财务程序中,需要创建一个存储流动资金金额的变量theMoney,则应该将该变量定义为_decimal_类型。5、整数相除的结果为整数,小数相除的结果为小数。【例2】已知某专业有x名男生,每间宿舍住y个人,使用c#表达式_(x + y - 1) / y_可以用于计算宿舍总数。【例3】假设变量a、b、c为大于1的整数,则代数式对应的c#表达式为 _1.0 / (a * b * c)_。6、假设有两个整型数x和 y,则表达式 (x y) y值还原为x 。7、将一个数左移N位相当于将一个数乘以2的n次方。8、基本数据类型的转换:隐式转换、强制转换、数据类型的自动提升。9、流程控制:if、switch、while、for、break、continue等语句。【例4】以下程序的运行结果为 ( C ) int i,j,k; for (i = 0; i 3; i+) / i的范围: 0, 1, 2 for(j=1; j 4; j+) / j的范围: 1, 2, 3 for(k=2; k 0) 3 Console.WriteLine(s != null | s.Length 0); 4 if ( s != null | s.Length 0) 5 Console.WriteLine(s != null | s.Length 0); 6 if ( s != null & s.Length 0) 7 Console.WriteLine(s != null & s.Length 0); 8 if ( s != null & s.Length 0) Console.WriteLine(s != null & s.Length 0);A2 4 6 B2 4 6 8 C4 6 8 D2 6 813、单例设计模式:饿汉式和懒汉式。三、WFP程序设计1、委托的定义及使用。 【例1】C#使用_委托_机制实现事件处理。2、布局管理器:StackPanel、Grid、DockPanel【例2】_Grid_布局管理器,类似网页中的table,以表格方式布局元素。 3、打开和保存文件对话框。【例3】设有命令按钮btnText的单击事件代码如下,其中txtText为文本框对象。请阅读代码,并回答以下问题:(1)请简述该段代码的功能(2)请指出该段代码在执行过程中可能出现的问题,并给出解决办法。private void btnText_Click(object sender, EventArgs e) OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = 文本文件 (*.txt)|*.txt ; if (ofd.ShowDialog() = true) txtText.Text = File.ReadAllText(ofd.FileName); (1) 功能:通过“打开文件”对话框openFileDialog选择文本文件,并将文本文件的内容显示在txtText文本框中。(2) 中文乱码问题。txtText.Text=File.ReadAllText(openFileDialog1.FileName,System.Text.Encoding.Default);四、数据库连接1、在ADO.NET框架中,通过创建Connection对象建立与数据源之间的连接,通过创建Command对数据源执行各种SQL命令。2、MD5算法。3、SQL语句的注入攻击。【例1】请举例说明什么是SQL语句注入攻击?试给出一种预防注入攻击的方法。答:假设使用如下SQL语句查找给定学号的学生信息,String s = “select * from student where sno=” + sno + “”;Sno代表用户输入的学号。如果输入的是字符串: or 1 =那么,执行该语句,将返回student表中的所有的学生信息。即该语句存在SQL语句的注入攻击。可以采用传入参数的方式预防注入攻击,对应的代码改成: string sqlStr = select sno,sname from student where sno = snoPar; SqlCommand command = new SqlCommand(sqlStr, sqlCon); command.Parameters. AddWithValue (snoPar,sno);此时,当用户输入字符串: or 1 = , 上述代码将在student表中查找学号为“: or 1 =”的学生信息,返回结果为空,即预防了上述的注入攻击。(三)程序设计题1、请编写一个实现闰年测试的代码。闰年为能被4整除却不能被100整除,或能被400整除的年份。2、请编写一个计算一个长整数各位数之和的方法。3、请编写一个计算两数最大公约数的方法。【参考代码】使用递归。 public static int F(int a, int b) int c = a % b; if (c != 0) return F(b, c); else return b; 4、找出1100之间能被2整除的数,并将这些数以每行6个的格式输出。【参考代码】int count = 0;for(int i=1; i= 0.5) if (a 0.0) b+; else b-; return b; 7、请编写一个实现通用函数定积分计算的方法。【参考代码】class Integral public delegate double IntegralDelegate(double x); public static double GetIntegral(double a, double b, IntegralDelegate f) const int section = 1000; double increment = (b - a) / 1000; double area = 0.0; for (int i = 0; i = section; i+) area = area + f(a + increment * i) * increment; return area; 8、请编写一个通用排序的方法。【参考代码】public class BubbleSorter public delegate bool CompareOperation(object objPrev, object objNext); static public void Sort(Object objArr, CompareOperation sortOp) bool flag = false; /交换标志 for (int i = 1; i = i; j-) if (sortOp(objArrj, objArrj - 1) object tmpObj = objArrj; objArrj = objArrj - 1; objArrj - 1 = tmpObj; flag = true; if (!flag) /如果没有发生交换,终止算法 return; 9、请编程实现随机生成1000个0-99之间的整数,并完成每个整数出现的次数的统计。【参考代码】 static void Main(string args) int numbers = new int1000; Random rand = new Random(); for (int i = 0; i numbers.Length; i+) numbersi = rand.Next(100); int counts = new int100; foreach (int n in numbers) +countsn; for (int i = 0; i 1) i = n / 2; m = n % 2; binary = m.ToString() + binary; n = i; if (i 0) binary = 1 + binary; return binary; 11、请编写一个方法,求两个整数的之和,要求在方法体内不得使用、。【参考代码】 static int AddWithoutArithmetic(int num1, int num2) if (num2 = 0) return num1; int sum = num1 num2; int carry = (num1 & num2) 1; return AddWithoutArithmetic(sum, carry);12、假设某公司有几千名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间。【参考代码】该方法用长度为60的整数数组timesOfAge辅助空间,换来了O(n)的时间效率。不论对多少人的年龄进行排序,辅助数组的长度timesOfAge的大小固定,因此它的空间复杂度是个常数,即O(1)。 void SortAges(int ages) const int oldestAge = 59; int timesOfAge = new intoldestAge + 1; /数组timesOfAge统计每个年龄出现的次数 for(int i = 0; i = oldestAge;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论