visual c#net程序设计与应用开发知识点梳理(王东明主.docx_第1页
visual c#net程序设计与应用开发知识点梳理(王东明主.docx_第2页
visual c#net程序设计与应用开发知识点梳理(王东明主.docx_第3页
visual c#net程序设计与应用开发知识点梳理(王东明主.docx_第4页
visual c#net程序设计与应用开发知识点梳理(王东明主.docx_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

课后题知识点1. Visual C#定义标示符命名规则:a.标示符必须以字母、数字、下划线组成的一串符号,且必须以字母、下划线开头b.应选取有意义的字符序列c.不能与c#语言的关键字同名2. 值类型和引用类型的主要区别:定义实例时,值类型生成引用,引用类型直接生成实例。3. 值类型包括:整型、布尔型、字符型、实型、结构类型、枚举型4. 引用类型包括:类、数组、代理、接口5. 数组类型定义初始化一维数组int a=new int10int a=new int1,2,3,4int a; /定义数组a=new int10; /分配空间int a=1,2,3,4二维数组int , b=new int3,4int , b=new int3,41,2,3,4,5,6,7,8,9,10,11,12int , b; /定义数组b=new int3,4;/分配空间int , b=1,2,3,4,5,6,7,8,9,10,11,12参差数组int c=new int3;c0= new int2; c1= new int4; c2= new int8;6. 定义函数时,至少必须指明:函数名与返回类型。7. 在c#中只允许嵌套调用函数,不允许嵌套定义函数。8. 参数类型及特征参数类型特 征值参数参数传递的是原实参的副本,不改变内存中原实参的值按值传递的参数引用参数(ref)参数传递的是原实参的地址,会改变内存中原实参的值按地址传递的参数,共用一个内存区域调用前需要对变量初始化输出参数(out)用于传递方法和返回的数据按地址传递的参数,开辟一个内存区域调用前无需对变量初始化,方法返回后传递的变量被认为经过了初始化9. 使用static关键字定义的静态方法,属于整个类而不属于类的某个具体实例。10. 在属性的访问声明中,对属性的值的读操作用get关键字标出,表明属性的值是只读的,不能改写。11. 异常类对象均为System.Exception类的对象。12. 异常可以被try定义的块捕捉,并被相应的catch定义的块所控制和处理。13. 任何类型的异常可匹配catch(Exception e)语句。14. 异常就是程序中出现不可控制的错误,导致程序非正常退出,通常是由于编程人员对程序所遇到的情况没有充分的估计而造成的。15. 在Visual C#中,接口和类的主要区别是:类不可以多重继承而接口可以。16. IS 运算符的作用:检测运行时对象的类型是否与某一给定的类型兼容。AS运算符的作用:在兼容类型之间进行转换。17. 在声明接口时不需要为接口成员指定任何修饰符,且不需要为接口成员指定任何代码,故不可为接口成员实例化代码,只需在声明接口的时候指定接口成员的名称和参数即可。18. Sealed类的作用是确保一个类永远不作为基类,也就确保了这个类永远不被别的类继承。19. 构造方法实例化对象的形式是:类名 对象=new 类名(构造函数参数)20. 代理是一种用来引用静态方法或者对象实例的数据类型,同类接口、字符串和对象一样,代理也是C#的一种引用数据类型。21. .NET中大多数控件都派生于System.Windows.Forms.Control类。22. TextBox控件的常用属性中,PasswordChar控件用来获取或设置字符,该字符用于屏蔽单行TextBox控件中的密码字符。23. 在RadioButton控件的事件中,CheckedChanged事件当Checked属性值改变时发生。24. 进行自定义控件开发时,根据实际需要可以用以下三种方法开发定制控件:Control类继承、UserControl类继承和Windows窗体控件继承。25. Width和Height属性决定了一个TextBox控件的大小。26. 在ADO.NET开发中,常用Connection对象进行数据库连接。27. ADO.NET中的类大概可分为.NET数据提供者对象和用户对象两种。28. .NET框架提供了操作XML文档和数据的一组完整的类。XMLReader和XMLWriter对象以及这两个对象的派生类提供了读取XML和可选验证XML的能力。29. 常用的.NET数据提供者对象分为以下4种:SQLServer数据提供程序、OLEDB数据源提供程序、Oracle数据提供程序以及与ODBC兼容的数据源提供程序。30. DataTable对象表示表格,通过DataTableCollection对象可以在一个DataSet中存储多个DataTable对象。31. Directory类用于进行目录管理。32. Fiel和FileStream类用于对文件进行创建、删除、复制、移动、打开等操作。33. StreamReader和StreamWriter类用于按文本方式读写文件。34. BinaryReader和BinaryWriter类用于按二进制方式读写文件。常见程序设计题1.随机产生十个两位数,请你快速地找出最大数及其位置;然后利用选择法把它们从小到大排序。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication8 class Program static void Main(string args) int max, max_i=1, i; int arr=new int 10; Random randomObj = new Random(); for (i = 0; i 10; i+) arri = randomObj.Next(10, 100); Console.WriteLine(随机数组为:); for(i=0;i10;i+) Console.Write(0 ,arri); max=arr0; for(i=1;i max) max = arri; max_i = i + 1; int temp=0,j,k; for (j = 0; j 10; j+) for (k = 0; k 10; k+) if (arrj arrk) temp = arrj; arrj = arrk; arrk = temp; Console.WriteLine(n随机数组最大值为:0 位置为:第1个元素, max, max_i); Console.WriteLine(n数组排序后为:); for(i=0;i10;i+) Console.Write(0 ,arri); Console.ReadLine(); 2.输入帐号为Pass,密码为Pass可以通过验证,并且进入第三题的界面。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace sx07_2 public partial class frm7_2 : Form private bool Flag; public frm7_2() InitializeComponent(); private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) if (e.KeyChar = (char)13)/如果是回车键 textBox2.Focus();/把焦点移到密码输入框中 else if (e.KeyChar 9)/如果不是数字 MessageBox.Show(必须输入数字);/提示 Flag = false;/标记为false,代表输入了非数字 else Flag = true;/输入的是数字 private void textBox2_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) if (e.KeyChar = (char)13) if (textBox2.Text != Pass) /判断密码是否正确 /用户选中了重试if (MessageBox.Show(密码错误, 错误提示, MessageBoxButtons.RetryCancel) != DialogResult.Cancel) textBox2.Text = ;/清除文本框 textBox2.Focus(); else Application.Exit();/结束应用程序 else MessageBox.Show(欢迎你使用本系统, 进入系统欢迎);/密码正确提示你已进入系统 this.Hide();/关闭本窗体 frm7_3 frm=new frm7_3(); frm.Show(); private void textBox1_TextChanged_1(object sender, EventArgs e) string str1; str1 = textBox1.Text;/取得输入的字符串 if (Flag = false)/如果输入了非数字 Flag = true;/选把Flag置为true textBox1.Text = ;/把输入的内容清除 private void button1_Click(object sender, EventArgs e) if (textBox2.Text != Pass) /判断密码是否正确 /用户选中了重试 if (MessageBox.Show(密码错误, 错误提示, MessageBoxButtons.RetryCancel) != DialogResult.Cancel) textBox2.Text = ;/清除文本框 textBox2.Focus(); else Application.Exit();/结束应用程序 else MessageBox.Show(欢迎你使用本系统, 进入系统欢迎);/密码正确提示你已进入系统 this.Hide();/关闭本窗体 frm7_3 frm = new frm7_3(); frm.Show(); private void button2_Click(object sender, EventArgs e) this.Close(); 3.分别使用DataSet和DataRaeder对象选取本机学生数据库的Student表中数据并显示在label中。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Data.OleDb; /连接Access数据库using System.Drawing;using System.Text;using System.Windows.Forms;namespace sx09_3 public partial class frm93 : Form public frm93() InitializeComponent(); private void button1_Click(object sender, EventArgs e) /设置连接字符串 string CString = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Student.MDB;/数据源版本数据源数据库名 OleDbConnection MyCon = new OleDbConnection(CString);/创建连接对象 DataSet ds =new DataSet(); String sql = SELECT * FROM Student WHERE Sex=女?; try MyCon.Open();/打开连接 OleDbDataAdapter da = new OleDbDataAdapter(sql, MyCon); da.Fill(ds, stu); DataTable dt = ds.Tablesstu; label1.Text = ; int i, j; for (i = 0; i dt.Columns.Count; i+) label1.Text += dt.Columnsi.ColumnName + ; if (i = 4) label1.Text += ; for (j = 0; j dt.Rows.Count; j+) label1.Text += n; DataRow row = dt.Rowsj; for (i = 0; i dt.Columns.Count; i+) label1.Text += rowi + ; catch (OleDbException OleDbe) MessageBox.Show(OleDbe.Message, Access连接失败话框);/连接失败对话框 finally MyCon.Close();/关闭连接 private void button2_Click(object sender, EventArgs e) /设置连接字串 string CString = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Student.MDB; OleDbConnection MyCon = new OleDbConnection(CString);/创建连接对象 try MyCon.Open();/打开连接 OleDbCommand cmm = new OleDbCommand(); cmm.Connection = MyCon; cmm.CommandText = SELECT * FROM Student WHERE Sex=男D; OleDbDataReader dr= cmm.ExecuteReader(); int i; label1.Text = ; for (i = 0; i dr.FieldCount; i+) label1.Text += dr.GetName(i) + ; if (i = 4) label1.Text += ; while (dr.Read() label1.Text += n; for (i = 0; i =90) dj=A;/优秀 else if(cj=80) dj=B;/良好 else if(cj=70) dj=C;/中等 else if(cj=60) dj=D;/及格 else dj=E;/不及格 Console.WriteLine(您的成绩等级为:0,dj);/输出 5. 编程求下式的值(要求编写成控制台应用程序): using System;class WhileTest public static void Main() int sum,i=1,t;/sum代表和,i代表加到了第几项,t代表加到的项的值 sum=0;/和赋初值0 while(i=10) /循环,循环条件为“i=10” t=i*i; /求第i项的值放在t中 sum=sum+t;/把该项的值加到和sum中 i=i+1;/i的值加1准备加下一项 Console.WriteLine(1*1+2*2+10*10=0,sum);/输出结果 6. 编一个程序按下列公式求e的值(要求精度达到1e-6)using System;class WhileTest public static void Main() double sum,t=1; int i=1;/sum代表和,i代表加到了第几项,t代表加到的项的值 sum=1.0;/和赋初值为第一项的值 do /循环,循环条件为“i=1.0e-6); Console.WriteLine(e=0,sum);/输出结果 7. 一张单据上有一个5位数的号码为6*42,其中百位数和千位数已模糊不清,但知道该数能被57和67除尽。设计一个算法,找出该单据所有可能的号码。using System;class ForTest public static void Main() int hm,i,j;/hm代表要求的号码,i代表千位数,j代表百位数 for(i=0;i=9;i+)/千位数从09 for(j=0;j=9;j+) /百位数从09 hm=6*10000+i*1000+j*100+42; /根据规律形成可能的号码 if(hm%57=0 & hm%67=0) /是要求的号码吗? Console.WriteLine(号码=0,hm);/输出结果 8. 设计一个程序完成这样的功能:产生100个两位随机正整数,求这些数中所有能被3整除的数的和以及所有不能被3整除的数的各位数字和。要求编写成控制台应用程序。using System;class a_3_9 public static void Main() float sum1=0,sum2=0; int i,num; Random randObj=new Random();/产生随机数对象,同时初始化随机数发生器 for(i=1;i=100;i+) num=randObj.Next(10,100);/*产生两位随机数*/ if(num%3=0)sum1=sum1+num;continue;/*把能被3整除的数加到sum1中*/ sum2=sum2+num%10; /*把不能被3整除的数的个位数加到sum2中去*/ sum2=sum2+num/10; /*把不能被3整除的数的十位数加到sum2中去*/ Console.WriteLine(能被3整除的数的和为:0,sum1); Console.WriteLine(不能被3整除的所有数的各位数字和为:0,sum2); 9. 随机产生十个两位数,然后利用选择法把它们从小到大排序。using System;class WhileTest public static void Main() int i,j,k;int a=new int10; Random randomObj = new Random(); for (i = 0; i 10; i+) k = randomObj.Next(10,100); ai=k; Console.WriteLine(排序之前:); for (i = 0; i 10; i+) Console.Write(0 , ai); for (i = 0; i 10; i+) for (j =i+1; j aj) int temp = ai; ai = aj; aj=temp; Console.WriteLine(n排序之后:); for (i = 0; i 10; i+) Console.Write(0 ,ai); Console.ReadLine(); 10.某班有M名同学,本学期开了N门课,期末考试后,要统计每个学生的平均分。请你编写一个程序实现该功能。要求:对于每个学生要输入学号和N门课的成绩using System;class A_4_3 public static void Main() const int M=2;/定义一个常量M用来人数 const int N=2;/定义一个常量N用来表示课程数 int , cj=new int M,N+1;/该数组用来存放M个人的学号和每个人的N门课和成绩 int i,j; double aver=new doubleM ; for(i=0;iM;i+) Console.WriteLine(请输入第0个人的学号和成绩:,i+1); cji,0=Convert.ToInt32(Console.ReadLine(); for(j=1;j=N;j+) cji,j=Convert.ToInt32(Console.ReadLine(); /*此循环用来输入学号和成绩*/ for(i=0;iM;i+) averi=0; for(j=1;j=N;j+) averi=averi+cji,j; averi=averi/N; /*此循环用来求出每个学生的平均分存放在一维数组aver中*/ for(i=0;iM;i+) Console.WriteLine(); for(j=0;j=N;j+) Console.Write(0 ,cji,j); Console.Write(0 ,averi); /*此循环用来输出每个学生的学号、各门课的成绩和平均分*/ 11.编程输出杨辉三角的前五行。杨辉三角的前五行值如下所示。111121133114641using System;class A_4_4 public static void Main() const int M=5;/定义一个常量M用来行数 int yhsj=new int M;/该数组用来存放杨辉三角 int i,j; for(i=0;i5;i+) /该循环为每行分配存储空间 yhsji=new inti+1; for(i=0;iM;i+)/首列和对角线赋值1 yhsji0=1; yhsjii=1; for(i=2;i5;i+) for(j=1;ji;j+) /其它元素是前一行的前一列和前一行的当前列的和 yhsjij=yhsji-1j-1+yhsji-1j; for(i=0;iM;i+) Console.WriteLine();/换行 for(j=0;jk) min=k; Console.WriteLine(数组为:); i=0; foreach(int k in score)/foreach循环每行五个元素输出数组的各元素值 Console.Write(0 ,k); i=i+1; if(i%4=0) Console.WriteLine(); Console.WriteLine(最小值为:0,min);/输出最小值 13.用冒泡法把随机产生的10个整数从小到大排列。using System;class B_4_1 public static void Main() const int N=10;/定义一个常量用来表示数组元素个数 int a= new int N;/定义具有N个元素的数组a int i,j,t;/定义循环变量和交换用的临时变量 Random randObj=new Random();/生成随机数变量 for(i=0;iN;i+) ai=randObj.Next(10,99);/*产生随机数并赋值给数组元素*/ Console.WriteLine(排序前); for(i=0;iN;i+)/输出整个数组 Console.Write(0 ,ai); for(i=1;iN;i+)/*i表示轮次*/ for(j=0;jaj+1)/*如果后面的元素值小,则交换*/ t=aj;aj=aj+1;aj+1=t; Console.WriteLine(n排序后:); for(i=0;iN;i+)/输出整个数组 Console.Write(0 ,ai); 14.某次集会时,学生排成了M行N列的方阵。请你编程把每个人的身高录入到计算机中,然后找出每行的最高身高和该同学在该行中的位置。using System;class B_4_1 public static void Main() const int M=5,N=4; int ,height=new int M,N;/定义存放身高信息的数组 int max=new int M;/*定义存放每行最高身高信息的数组*/ int max_i=new int M;/定义存放每行最高身高所在位置信息的数组 int i,j; Random randObj=new Random();/生成随机数变量 for(i=0;iM;i+)/*本循环随机生成所有人的身高信息并存放到数组height中*/ for(j=0;jN;j+) heighti,j=randObj.Next(130,200); for(i=0;iM;i+) maxi=heighti,0;max_ii=0;/*首先认为该行第1个人身高最高*/ for(j=1;jN;j+)/*和该行后面的人的身高比较,找出最高的身高和位置*/ if(maxiheighti,j) maxi=heighti,j;max_ii=j; for(i=0;iM;i+) Console.WriteLine(); for(j=0;jN;j+)/*输出某行人的身高*/ Console.Write(0 ,heighti,j); Console.Write(本行最高:0,位置:1,maxi,max_ii+1);/*输出该行人的最高身高和所处位置*/ 15.定义一个具有十个元素的一维数组,给它赋一个有序整数序列,然后利用二分法查找算法查找一个输入的数m在数组中的位置。若找到,输出其下标,若找不到,则显示没有找到信息。using System;class C_4_1 public static void Main() int a=1,3,5,9,12,14,26,30,45,56;/定义数组并赋初值 int i,low,mid,high,m,flag; Console.Write(请输入要查找的数m:); m=Convert.ToInt32(Console.ReadLine();/*输入一个要查找的数*/ low=0;high=9;/*设置要查找的数的范围*/ flag=0;/*用该变量表示是否找到*/ mid=-1; while(lowamid) /*m为amid大,要查找的数在后半部分*/ low=mid+1; /*改变low的值*/ else /*要查找的数在前半部分*/ high=mid-1; /*改变high的值*/ Console.WriteLine(数组:); for(i=0;i10;i+)/输出数组的值 Console.Write(0 ,ai); Console.WriteLine(); if (flag=1) Console.WriteLine(0的位置是1,m,mid+1);/*找到则输出元素值及其位置*/ else Console.WriteLine(在数组中不存在0,m); 16.找出一个54数组的“鞍点”。所谓“鞍点”是指在本行中值最大,在本列中值最小的数组元素。鞍点可能有,也可能没有,如果有要求输出所有“鞍点”的行号和列号以及鞍点个数,如果没有鞍点,则输出相应的提示信息。using System;class C_4_2 public static void Main() const int M=5; const int N=4; int ,a=new int5,4;/定义并生成数组 int i,j,k,p,flag,adgs; Random randObj=new Random();/生成随机数变量 adgs=0; /*该变量用来记下鞍点个数*/ for(i=0;iM;i+) /*通过random 函数产生一个数组*/ for(j=0;jN;j+) ai,j=randObj.Next(1,100);/产生随机数并赋值给数组 for(i=

温馨提示

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

评论

0/150

提交评论