C#实验指导书(新).docx

上传人:无*** 文档编号:68387989 上传时间:2022-12-27 格式:DOCX 页数:139 大小:449.49KB
返回 下载 相关 举报
C#实验指导书(新).docx_第1页
第1页 / 共139页
C#实验指导书(新).docx_第2页
第2页 / 共139页
点击查看更多>>
资源描述

《C#实验指导书(新).docx》由会员分享,可在线阅读,更多相关《C#实验指导书(新).docx(139页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、C#程序设计实验指导实验一熟悉c#的编辑和编译环境【实验目的与要求】 熟悉Visual Studio. NET集成开发环境(IDE)熟悉C#源程序语言的编辑、编译和运行过程能够创建、编译和执行一个简单的C#程序【实验内容与步骤】1、练习使用C#编写第一个控制台应用程序示例(1)using System;class HelloWordpublic static void Main()在控制台出“Hello,这是我的第一个C#程序”保存文件为 D: myCsHelloWord. cs 选择开始程序Microsoft令提示,打开命令提示窗口。System. Console. Wri teLine (

2、 u Hello,这是我的第一个 C# 程序”);记事本3 Lots AplictiM圆! Ut!应用程序& licrosoft RT Frmwork SDKQ lieroittft Office TAE Bicroioft SQL SrrrG licrosoft Visud. Basic 6 0 中文版C licrosoft Visual SourceSafeaj Ovtlook Express RalOn Plyr Windows Medi* Pl*yr .Vindovs Mssn* Visual Studio MET 具! 由licrosoft W*bPublish!1*P3 Dance

3、r)! 由!tAnts)I orton AatiVinu,!QQ2OO院M版,1 b由 Visual StMio MET 企业版功能S Microsoft Visual Studio NZT Microsoft Visual Studio MTT 文档licrosft fordicrosoft PowrPfindovt ldi Pli所有以奪Q)! 0 vi1 studio m 命令!示A IS AH Vb调试及鼻 FC-ATL,Spy* CO隱谒査找中Visual C+历程周试罟Visual Studio. Net. Net 工具命如下图所示:-|n|x/out :文件 /target:ex

4、e /target:winexe /target:library /target:module /def ine: /doc:文件Zrecurse :通酉己付 /reference : 文件列表 /addmodule: 文件列表质规范,包括当前目录和子目录下的所有文件cC Visual Studio .HET 命令提示Setting environment for using Microsoft Uisual Studio .NET tools.C:Documents and SettingsMtdministratorcsc/?Microsoft Uisual Ctt .NET Compil

5、er vers ion 7.00.9466for Microsoft NET Framework version 1.0.3705版权所有 Microsoft Corporation 2001 保留所有权利。Uisual Cn .NET编译器选项-犢出文件鏈袤騎雋込觐號普的缝或第一个文件的基名称)生成拄制台可执仃文件(默认缩写:八:exe)生成Windows可执行文件缩写:/t:winexe生成库缩写:/t: library生成龍添加到甚他程序集的模块缩写:/1:module定义案件编译符号(缩写:/d要生成的XML文档文件运行CSC/?,可以看到编译器的各种相关命令参数 执行 CSC D:

6、mycsHelloWord. cs2、练习使用C#编写第一个Windows应用程序 using System;using System. Windows. Forms;namespace sample4public class WinApp2:Form(TextBox txtTest;public static void MainO(Application. Run (new WinApp2 ();)public WinApp2()(Form myfrm=new Form();txtTest=new TextBox();txtTest.Size=new System. Drawing. Siz

7、e(50, 20);txtTest. Location=new System. Drawing. Point (20, 20);Button btnOk=new Button ();btnOk. Size=new System. Drawing. Size (50, 20);btnOk. Location=new System. Drawing. Point (80, 20);btnOk.Text=Click Me;btnOk.Click+=new System.EventHandler(btnClick);this.Controls. Add(txtTest);this.Controls.

8、Add(btnOk);)void btnClick(object sender, System. EventArgs e)(string userinput;userInput=txtTest.Text;MessageBox. Show(userlnput);输入以上代码,并保存文件为:TestWinApp.es使用:esc / target :winexe D: mycsTestWinApp. cs 进行编译,将其编译为 Windows应用程序,然后执行该可执行文件。welcome|PClickl|welcome to C# World!3、练习使用,NET下C#和VB.NET语言的互操作

9、(1)编写以下VB.NET程序NameSpace VBMethodpublic class MyVBpublic Function Add(ByVai a as integer, ByVai b as integer) as IntegerAdd=a+bEnd Functionend classEnd NameSpace将该程序保存为:VBAdd.VB,然后在命令行用VBC命令将该文件编译成一个动态 链接库文件:VBC /target:library vbadd. vb (2)编写以下C#调用程序 using System;using VBMethod; 使用Using关键字引入前面定义的用户

10、命名空间namespace CallVB 定义一个新的用户命名空间 (public class TestCallAdd /定义用户类(public static void Main()(MyVB MyAdd=new MyVB();int sum=MyAdd. Add(32, 21);Console. WriteLine(“32+21=+sum. ToStringO);将文件保存为:CallVb.cs,然后在命令行按以下格式进行编译:esc /reference:VBAdd. dll CallVB. cs运行编译后的可执行文件,看看能否用C#程序调用VB编写的类方法。(3)用ILDasm. ex

11、e程序,反汇编VBAdd. dll和CallVB. exe,看看有什么差异。4、调试并运行下列程序(1)using System;class OrdLength(public static void main(String args)Console. Write (“显示自变量的个数”);Console. WriteLine (命令行中自变量的个数是:, args. Length);(2)class wayRead(public static void Main()(Console. Write(/zMay I get your name?_);String s=Console. ReadLi

12、neO ;Console. WriteLine(Nice to meet you, , S);Console. Write(Are you male or female?_(M/F);char i=(char)Console. Read();if (i= M I 丨 i= m)(Console. WriteLine(You are boy, aren, t you?);)else if (i= F | i= f)(Console. WriteLine( You are Girl, aren t you?);)else(Console. WriteLine(I am sorry, I think

13、 you made a wrong choice!);(3)编写个应用程序,输入个圆的半径,打印该圆的直径、周长和面积。使 用下面的公式(R是半径,直径=2R,周长等于2nR,面积等于nR、2)(4)编写个应用程序,输入一个五位数,把这五个数分成单独的阿拉伯数字, 并且把这五个数字用四个空格彼此分开逆序输出。例如用户输入31245,则输出5 4 2 1 3(5)任意输入一个正整数,请分别取出该整型数内存中各字节上的二进制数并 将其转换为十进制输出。运行结果如下图所示。cT C:IIID0ISsystea32cd. exePlease input a Pos itiue integer numb

14、er n=65536 一字节=0;第二字节=。;第三字节=1;第四字节=0;J): testoGetNunberB9B9tePlease input a Positiue integer number, n=442220813 一字节=13;第二字节=193;第三字节=91;第四字节=26; :testCGetNumberByBytePlease input a Positiue integer number6 n=6970061 性一字节=205;第二字节=90;第三字节=106;第四字节=0;D: testOGetNunberB9B9tePlease input a Positiue in

15、teger number- n=234 慄一字节=234;第二字节=0;第三字节=0;第四字节: testO实验二熟悉C#的基本语言与语法规则【实验目的与要求】 掌握分支结构语句的语法书写格式 掌握循环结构语句的语法书写格式 综合利用各种结构语句完成特定的任务【实验内容与步骤】、分支结构语句1.1 if语句if语句根据布尔表达式的值选择要执行的语句。if语句.if (布条表达式D(if (布尔表达式2)(语句组1)else if (布尔表达式3)(语句组2)else(语句组3)示例1:根据输入的学生成绩,显示相应的等级:优,良,中,差,及格和不及 格。using System;class St

16、uGrade(public static void Main()(int score;string grade;Console. Write(请输入学生的确学习成绩;score=Int32. Parse (Console. ReadLineO);if (score=90)grade=优秀!”;else if (score=80)grade=良好!”;else if (score=70)grade=中等!”;else if (score60)grade =及格!”;elsegrade 二不及格!;Console. WriteLine (该学生的确学习成绩等级为:0, grade);1. 2 sw

17、itch 语句switch语句选择要执行的语句列表,此列表具有一个对应于switch表达式的 值的相关联的switch标签。switch 语句:switch (表达式)switch 块switch 块: switch节可选switch 节:switch 节switch 节 switch 节switch 节:switch标签语句列表switch 标签:switch标签switch标签switch标签switch 标签:case 常数表达式:default :switch语句包含关键字switch,后跟带括号的表达式(称为switch表达式), 然后是个switch块。switch块包含零个或多个

18、括在大括号内的switch节。 每个switch节包含一个或多个switch标签,后跟个语句列表。switch语句的主导类型由switch表达式建立。如果switch表达式的类型为 sbyte, byte、 short, ushort, int, uint、 !ong, ulong, char, string 或枚 举类型,那么这就是switch语句的主导类型。否则,必须有且只有一个用户定 义的从switch表达式的类型到下列某个可能的主导类型的隐式转换:sbyte, byte, short, ushort, int, uint, long, ulong, char, stringo 如果不存

19、在 这样的隐式转换,或者存在个以上这样的隐式转换,将发生编译时错误。每个case标签的常数表达式必须表示可以隐式转换为switch语句的主导类 型的类型的值。如果同一 switch语句中的两个或更多个case标签指定同一个 常数值,将发生编译时错误。个switch语句中最多只能有一个default标签。switch语句的执行方式如下:. 计算switch表达式并将其转换为主导类型。如果在同一 switch语句中的case标签中指定的常数之一等于switch 表达式的值,控制将转到匹配的case标签后的语句列表。如果在同一 switch语句中的case标签中指定的常数都不等于switch 表达式

20、的值,且如果存在一个default标签,控制将转到default标签 后的语句列表。如果在同一 switch语句中的case标签中指定的常数都不等于switch 表达式的值,且如果不存在default标签,控制将转到switch语句的 结束点。如果switch节的语句列表的结束点是可到达的,将发生编译时错误。这称为“非 贯穿”规则。示例2:using System;class ThrowRoll(public static void Main()int roll=0;Random rnd=new Random (); 创建一个存储随机数的变量 roll=(int) rnd. Next(l, 7

21、);生成一个1-6之间的随机整数Console. Write (开始掷筛子”);Console. WriteLine(这次掷的筛子是:0, roll);switch (roll)(case 1:case 3:case 5:Console. WriteLine(筛子是奇数);break;case 2:case 4:case 6:Console. WriteLine (筛子是偶数);break;default:Console. WriteLine (筛子不在 1-6 之间);break;)二、循环结构语句2. 1 while 语句while语句有条件地执行嵌入语句零次或多次。while语句:whi

22、le (布尔表达式)嵌入语句while语句的执行方式如下:.计算布尔表达式。 如果布尔表达式产生true,控制将转到嵌入语句。当(和如果)控制到 达嵌入语句的结束点(可能是通过执行个continue语句)时,控制将 转到while语句的开头。如果布尔表达式产生false,控制将转到while语句的结束点。在while语句的嵌入语句内,break语句可用于将控制转到while语句的结束 点(从而结束嵌入语句的迭代),而continue语句可用于将控制转到嵌入语句 的结束点(从而执行while语句的另一次迭代)。如果while语句是可到达的且布尔表达式不具有常数值false,贝骇while语 句的

23、嵌入语句是可到达的。如果下列条件中至少有一个为真,则while语句的结束点是可到达的: while语句包含个退出while语句的可到达的break语句。 while语句是可到达的且布尔表达式不具有常数值true。示例3 使用while语句,计算1+2+3+100的值。using System;class sum(public static void Main()(int sum=0, i=l;while (i100)sum+=i+; /循环变量是i, i+是用于改变循环变量的Console. WriteLine(sum= , sum);2. 2 do-while 语句do语句有条件地执行一个嵌

24、入语句一次或多次。do语句:do嵌入语句 while (布尔表达式);do语句的执行方式如下:控制转到嵌入语句。. 当(和如果)控制到达嵌入语句的结束点(可能是通过执行个continue 语句)时,计算布尔表达式。如果布尔表达式产生true,控制将转到do 语句的开头。否则,控制转到do语句的结束点。在do语句的嵌入语句内,break语句可用于将控制转到do语句的结束点(从 而结束嵌入语句的迭代),而continue语句可用于将控制转到嵌入语句的结束 点(从而执行do语句的另一次迭代)。如果do语句是可到达的,则do语句的嵌入语句是可到达的。如果下列条件中至少有一个为真,则do语句的结束点是可

25、到达的: do语句包含个退出do语句的可到达的break语句。嵌入语句的结束点是可到达的且布尔表达式不具有常数值trueo 示例4:使用do while语句计算5!using System;class jiecheng(public static void Main()(int sum=l, i=l;do(sum=i+; 循环变量是i, i+是用于改变循环变量的while (i=5);Console. WriteLine sum= 0,sum);2. 3 for语句for语句计算个初始化表达式序列,然后,当某个条件为真时,重复执行某个 嵌套语句并计算个迭代表达式序列。for语句:for ( f

26、or初始值设定项可选;for条件可选;for迭代程序可选) 嵌入语句for初始值设定项:局部变量声明语句表达式列表for条件:布尔表达式for迭代程序:语句表达式列表语句表达式列表:语句表达式语句表达式列表,语句表达式for初始值设定项(如果存在的话)由一个局部变量声明或个用逗号分隔的语 句表达式列表组成。用for初始值设置项声明的局部变量的范围从变量的变量 声明符开始,一直延伸到嵌入语句的结尾。该范围包括for条件和for迭代程 序。for条件(如果存在的话)必须是个布尔表达式。for迭代程序(如果存在的话)包含一个用逗号分隔的语句表达式列表。for语句的执行方式如下:如果存在for初始值设

27、定项,则按变量初始值设定项或语句表达式的编 写顺序执行它们。此步骤只执行一次。 如果存在for条件,则计算它。 如果不存在for条件或如果计算产生true,控制将转到嵌入语句。当(和 如果)控制到达嵌入语句的结束点(可能是通过执行个continue语句) 时,则按顺序计算for迭代程序的表达式(如果有的话),然后从计算 上一个步骤中的for条件开始,执行另一次迭代。 如果存在for条件,且计算产生false,控制将转到for语句的结束点。在for语句的嵌入语句内,break语句可用于将控制转到for语句的结束点 (从而结束嵌入语句的迭代),而continue语句可用于将控制转到嵌入语句的 结束

28、点(从而执行for语句的另一次迭代)。示例5:使用for语句计算1!+2!+3!+10!using System;class sm4(public static void Main()int i, k, m=l, sum;for (i=l;i=10;i+)(for (k=l;k=i;k+) m=m*k;sum=sum+m;m=l;Console. WriteLine(1!+2!+3!+10! = , sum);)2. 4 foreach 语句foreach语句枚举集合的元素,为集合的各个元素执行一个嵌入语句。foreach 语句:foreach (类型标识符in集合对象)嵌入语句foreach

29、语句的类型和标识符声明该语句的迭代变量。迭代变量对应于个其范 围覆盖整个嵌入语句的只读局部变量。示例6按照元素的顺序打印出一个二维数组中的各个值:class Test(static void Main() doublet, values = 1. 2, 2. 3, 3. 4, 4. 5,5.6, 6. 7, 7.8, 8.9 ;foreach (double elementValue in values)Console. Write(,z 0 ”, elementValue);Console. WriteLine ();输出为:1.2 2. 3 3.4 4. 5 5. 6 6. 7 7. 8

30、8. 9实验三数组【实验目的与要求】 掌握纬数组的定义及使用方法 掌握多纬数组的定义及使用方法 掌握不规则锯齿数组的定义及其使用方法.熟悉数组对象的些常用属性和静态方法 掌握使用数组来求解些现实问题的步骤和方法【实验内容与步骤】数组是包含若干通过计算所得的索引进行访问的变量的数据结构。数组中包 含的变量(又称数组的元素)具有相同的类型,该类型称为数组的元素类型。数组具有秩,它确定与每个数组元素关联的下标的数目。数组的秩又称为数 组的维度。秩为1的数组称为维数组,秩大于1的数组称为多维数组。特定 大小的多维数组常根据其大小命名,如二维数组、三维数组,等等。数组的每个维度都有一个关联的长度,它是个

31、大于或等于零的整数。维度 的长度不是数组类型的组成部分,而是在运行时创建数组类型的实例时建立的。 维度的长度确定该维度的下标的有效范围:对于长度为N的维度,下标范围可 以为0到N - 1 (包括0和N - 1) 数组中的元素总数是数组中各维度长 度的积。如果数组的个或多个维度的长度为零,则称该数组为空。数组的元素类型可以是任意类型,包括数组类型。、纬数组的定义及其使用方法(1) 纬数组的定义和初始化同变量样,数组也必须先定义,后使用。定义纬数组的格式如下:数据类型口数组名;其中,数据类型可以是C#语言中的各种数据类型,包括数值类型和引用 类型。 方括号“口”在这里表示是定义个数组,而不是普通的

32、个变量或对象数组名是任意合法的变量标识符如:int myArray;初始化纬数组 静态初始化格式:数据类型口数组名=元素1,元素2,,兀 n;如:int arry=l, 2, 3, 4)动态初始化:可以用两条语句来实现:数据类型口数组名;数组定义数组名=new数据类型表达式;/Z动态初始化或用一条语句来实现;数据类型口数组名=new数据类型表达式;如:int x=new int4;例1:选择排序法using System;namespace shuzu (class selectOrderstatic void Main(string args)int i, j, k, m;int que=n

33、ew int 3,5, 34, 65, 15, 74, 28, 59, 122, 42;定义数组并动态初始 化for(i=0;i10;i+)(k=i;for(j=i+l; j10; j+) 从i的下个元素起开始比较 (i f (que j que k) 比较数组元素(k=j; 记录下标值if(k!=i) (m=quei;quei=quek;quek=m;)Console. WriteLine (输出排序后的结果是:“); for(i=0;i10;i+) (Console. Write(0t, quei);) )例2:冒泡排序法using System;namespace shuzu class

34、 maopo(public static void Main()(int a=new int10;Console. WriteLine (请输入 !0 个整数”);for(int i=0;i10;i+) (Console. Write(第0个数:,i+1); ai = Int32. Parse (Console. ReadLine ();)Console. WriteLine(排序前的十个数是:);for(int i=0;i 10;i+)Console. Write(0t, ai);Console. WriteLine ();int temp;临时变量 for(int j=0;j 9;j+)

35、(for(int i=0;iai+l) (temp=ai;ai=ai+l; ai+l=temp;)for (int i=0;i10;i+) (Console. WriteLine(排序后的结果是:); Console. Write( 0 t, ai);)Console. WriteLine();) )例3:字符数组using System;namespace shuzu (class charArray (public static void Main() (定义并初始化name字符数组char name=new char G , , d, int ctr=O; 建立一个计数器ctr,用于遍历

36、数组元素while(namectr!=O) 输出数组中的字符,直到遇到个ASCII码为0的字符 为止,结束循环(Console. WriteLine(0, namectr);ctr+;)例4:对象数组using System;using System. Windows. Forms;namespace shuzu public class useArray(public static void Main()(ArrayForm newfrm=new ArrayForm10;for (int i=0;itrrci 3 u nu二、多纬数组的定义及其使用对于多维数组,数组初始值设定项必须具有与数组

37、维数同样多的嵌套级别。最外 面的嵌套级别对应于最左边的维度,而最里面的嵌套级别对应于最右边的维度。 数组各维度的长度是由数组初始值设定项中相应嵌套级别的元素数冃确定的。对 于每个嵌套的数组初始值设定项,元素的数目必须与同一级别的其他数组初始值 设定项相同。示例:int, b = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;创建一个二维数组,其最左边的维度的长度为5,最右边的维度的长度为2:int, b = new int 5, 2;然后用下列值初始化该数组实例:b,0=0;b0,1=1;bl,0=2;bl,1=3;b2,0=4;b2,1=5;b3, 0 = 6; b3, 1 =

38、7;b4, 0 = 8; b4, 1 = 9;当数组创建表达式同时包含显式维度长度和一个数组初始值设定项时,长度必须 是常数表达式,并且各嵌套级别的元素数目必须与相应的维度长度匹配。示例:int i = 3;int x = new int3 0, 1, 2 ;/ OKint y = new inti 0, 1, 2);/ Error, i not a constantint z = new int 3 0, 1, 2, 3);/ Error, length/initializer mismatch这里,由于维度长度表达式不是常数,因此y的初始值设定项导致编译时错误; 另外由于初始值设定项中的长

39、度和元素数目不一致,z的初始值设定项也导致编 译时错误。三、锯齿型数组数组创建表达式允许实例化包含数组类型的元素的数组,但必须手动初始化这类 数组的元素。例如,语句int a = new int 100;创建一个包含100个int口类型的元素的维数组。每个元素的初始值为 nullo同样的数组创建表达式不可能也实例化子数组,并且语句int a = new int100 5;/ Error导致编译时错误。实例化子数组必须改为手动执行,如下所示int a = new int100;for (int i = 0; i !00; i+) ai = new int5;当数组的数组具有“矩形”形状时,即当子

40、数组全都具有相同的长度时,使用多 维数组更有效。在上面的示例中,实例化数组的数组创建101个对象1个 外部数组和100个子数组。相反,int, = new int100, 5;只创建单个对象(即一个二维数组)并在单个语句中完成分配。例5:二维数组及锯齿型数组示例/ Initializing two-dimensional arrays.using System;using System. Drawing;using System. Collections;using System. ComponentModel;using System. Windows. Forms;using System

41、. Data;namespace TwoDimensiona1Arrays(III III Summary description for Forml.Ill public class TwoDimensiona1Arrays : System. Windows. Forms. Form (private System. Windows. Forms. Button showOutputButton;private System. Windows. Forms. Label outputLabel;III III Required designer variable.Ill private S

42、ystem.ComponentModel. Container components = null;public TwoDimensionalArrays()/ Required for Windows Form Designer support/InitializeComponent();/ TODO: Add any constructor code after InitializeComponent call/III III Clean up any resources being used.Ill protected override void Dispose( bool disposing ) (if ( disposing )(if (components != null) components. Dispose (); base. Dispose( disposing );ttregion Windows Form Designer generated codeIII III Requir

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com