C#编程实验指导手册前6章.docx
《C#编程实验指导手册前6章.docx》由会员分享,可在线阅读,更多相关《C#编程实验指导手册前6章.docx(55页珍藏版)》请在冰豆网上搜索。
![C#编程实验指导手册前6章.docx](https://file1.bdocx.com/fileroot1/2023-1/24/e885e862-df16-456e-b233-f9f187781041/e885e862-df16-456e-b233-f9f1877810411.gif)
C#编程实验指导手册前6章
《C#编程》实验指导手册
适用专业:
计算机专业
制定人:
余金林
院系名称:
内科大信息学院计算机系
2010年10月
实验一:
C#概述
一、实验目的
1、掌握VS.NET和MSDN安装,熟悉VS.NET集成开发环境及MSDN帮助文档的使用。
2、了解.NET平台和.NET框架结构。
3、掌握类库和命名空间的使用。
4、掌握创建控制台应用程序。
二、实验内容
1、画一个.NET框架结构图
(1)训练要点
Ø理解.NET框架的构成
Ø理解每个部分的功能
(2)需求说明
Ø用纸或计算机画出.NET框架结构图
Ø要求采用默写方式
Ø使用简单文字简单描述各部分的功能。
(3)实现思路及关键代码
Ø根据理论课知识整体理解框架的构成
●操作系统
●CLR
●框架类库
●托管语言
●CLR包含两大部分:
CLS、CTS
●框架类库包含基本类库、用于描述数据的ADO.NET和XML、用于描述应用程序的ASP.NET、WebService、Winforms。
参考解决方案如图1所示
.NET框架结构图
2、做连线游戏,指出左侧命名空间的主要用途
(1)训练要点
了解主要命名空间的功能
(2)需求说明
在右侧找出左侧命名空间的主要功能,用直线连接。
命名空间主要用途
System.Data引入开发Windows应用程序类
System.Windows.Forms泛型
System.Collections.Generic用于访问ADO.NET
System.Net提供系统的安全控制功能
System.Security可以对网络协议进行编程
3、编写一个控制台程序Hello
(1)程序需求
输出两行结果:
Hello,MynameisLiNing,Thisismyfirstcsharpprogram;我的C#学习之旅开始了。
(2)参考代码
如下所示:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceHello
{
classHello
{
staticvoidMain()
{
Console.WriteLine("Hello,MynameisLiNing,Thisismyfirstcsharp
program");
Console.WriteLine("我的c#学习之旅开始了");
Console.ReadLine();
}
}
}
三、作业
1、搭建学习开发环境:
VS2008+SQLServer2005开发版+Office2007+PDF阅读器.
2、安装VS2008及熟悉VS2008开发环境:
四、课后问题
1、类库与C/C++的库函数或者头文件有什么异同?
2、查阅MSDN,查找Console类的常用方法及其用途?
实验二:
C#基础语法
(一)
一、实验目的
1、掌握常量和变量的使用
2、掌握C#基本数据类型及C#数据类型分类
3、掌握枚举类型、结构类型、数组
4、掌握常见的类型转换方法
二、实验内容
1、创建3个结构体:
MyCircle,MyCylinder,MyCone
(1)程序需求
程序功能要求,创建三个结构体,MyCircle,MyCylinder,MyCone分别表示圆形、圆柱体和圆锥体,MyCircle包含一个int类型的成员r表示半径,MyCylinder和MyCone各自包含一个MyCircel类型的成员表示圆柱体和圆锥体的底面,成员h和volumn(都为整型)分别表示圆柱体和圆锥体的高和体积。
写出结构体和程序的主方法求圆柱体和圆锥体的体积。
(2)参考代码
如下所示:
structMyCircle
{
publicintr;
}
structMyCylinder
{
publicMyCirclec;
publicinth;
publicintvolumn;
}
structMyCone
{
publicMyCirclec;
publicinth;
publicintvolumn;
}
publicclassTester
{
publicstaticvoidMain()
{
Console.Write("请输入底面半径:
");
MyCirclec=newMyCircle();
c.r=int.Parse(Console.ReadLine());
Console.Write("请输入圆柱体高度:
");
MyCylindercy=newMyCylinder();
cy.h=int.Parse(Console.ReadLine());
cy.c=c;
Console.Write("请输入圆锥体高度:
");
MyConeco=newMyCone();
co.h=int.Parse(Console.ReadLine());
co.c=c;
//计算圆柱体体积
doublex=Math.PI*cy.c.r*cy.c.r;
doubley=x*cy.h;
cy.volumn=(int)y;
//计算圆锥体体积
doublex2=Math.PI*co.c.r*co.c.r;
doubley2=x2*co.h/3;
co.volumn=(int)y2;
//输出结果
//Console.WriteLine("圆柱体的体积为:
",cy.volumn);
Console.Write("圆柱体的体积为:
");
Console.Write(cy.volumn);
Console.Write("圆锥体的体积为:
");
Console.Write(co.volumn);
Console.ReadLine();
}
}
2、实现结构体Fraction
(1)程序需求
实现一个结构体Fraction,它包含两个int类型私有数据成员numerator和demominator。
让Fraction包含以下元素:
Ø一个带两个参数的构造函数来初始化numerator和demominator;
Ø用于存取numerator和demominator的属性;
Ø一个名叫value的属性,返回一个分数值,分数由(numerator/demominator)计算而得;
Ø覆盖ToString方法,返回下面的字符串“Fractionvalue:
xxx”,其中的xxx是以字符串表示的分数值;
Ø编写适当的代码来测试此Fraction结构。
(2)参考代码
如下所示:
usingSystem;
structFraction
{
privateintnumerator;
privateintdenominator;
publicFraction(intinitNumerator,intinitDenominator)
{
numerator=initNumerator;
denominator=initDenominator;
}
publicintNumerator
{
get
{
returnnumerator;
}
set
{
numerator=value;
}
}
publicintDenominator
{
get
{
returndenominator;
}
set
{
denominator=value;
}
}
publicdoubleValue
{
get
{
return(double)numerator/(double)denominator;
}
}
publicoverridestringToString()
{
stringreturnString;
returnString="Fractionvalue:
"+Value;
returnreturnString;
}
}
classTester
{
publicstaticvoidMain()
{
FractionmyFraction=newFraction(1,3);
Console.WriteLine(myFraction);
}
}
3、二维数组的使用ElevatorRequestTracker
(1)程序需求
一个电梯需求跟踪的类能根据一周内每天每时的随即电梯需求进行统计跟踪。
具体实现:
Ø随机产生一周7天内每小时的随机数,当8时至18时之间时电梯随机请求数在1-10楼之间,除此以外的时间在20-99之间产生;
Ø以列表形式打印出每天每个小时产生的需求数;
Ø打印出每天请求的总数;
Ø打印出一周内每小时的平均请求数;
(2)参考代码
如下所示:
usingSystem;
classElevatorRequestTracker
{
publicstaticvoidMain()
{
ushort[,]requests=newushort[7,24];
Randomrandomizer=newRandom();
intsum;
//Randomlygeneratenumberofrequestsreceivedforevery
//hourofthedayandeverydayoftheweek.
for(inti=0;i<7;i++)
{
for(intj=0;j<24;j++)
{
if((j<8)||(j>18))
requests[i,j]=(ushort)randomizer.Next(1,10);
else
requests[i,j]=(ushort)randomizer.Next(20,99);
}
}
//Printouttableshowingrequestsofallhoursofeveryday
Console.WriteLine("Hour\n");
Console.Write("");
for(inti=0;i<24;i++)
{
Console.Write("{0,2}",i);
}
Console.Write("\nDay");
for(inti=0;i<7;i++)
{
Console.Write("\n{0}",(i+1));
for(intj=0;j<24;j++)
{
Console.Write("{0,2}",requests[i,j]);
}
}
//Calculateandprinttotalnumberofrequestsonadailybasis
Console.WriteLine("\n\nTotalnumberofrequestperday:
\n");
for(inti=0;i<7;i++)
{
sum=0;
for(intj=0;j<24;j++)
sum+=requests[i,j];
Console.WriteLine("Day{0}:
{1}",(i+1),sum);
}
//Calculateandprintaveragerequestsonanhourlybasis
Console.Write("\nAveragerequestsperhour:
\n\nHour:
");
for(inti=0;i<24;i++)
{
Console.Write("{0,2}",i);
}
Console.Write("\nAver:
");
for(intj=0;j<24;j++)
{
sum=0;
for(inti=0;i<7;i++)
sum+=requests[i,j];
Console.Write("{0,2}",(sum/7));
}
}
}
三、上机作业
1、编写表达式语句、复合语句的程序Variables
(1)程序需求
建立包含表达式语句程序,要求定义两个double型数据,从控制台输入你的名字和两个double数据,计算这两个数据的加和、差、乘、除。
(2)参考代码
如下所示:
usingSystem;
namespaceVariables
{
classVariables
{
staticvoidMain(string[]args)
{
doublefirstNumber,secondNumber;
stringuserName;
Console.WriteLine("Enteryourname:
");
userName=Console.ReadLine();
Console.WriteLine("Welcome{0}!
",userName);
Console.WriteLine("Nowgivemeanumber:
");
firstNumber=Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Nowgivemeanothernumber:
");
secondNumber=Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Thesumof{0}and{1}is{2}.",firstNumber,
secondNumber,firstNumber+secondNumber);
Console.WriteLine("Theresultofsubtracting{0}from{1}is{2}.",
secondNumber,firstNumber,firstNumber–
secondNumber);
Console.WriteLine("Theproductof{0}and{1}is{2}.",firstNumber,
secondNumber,firstNumber*secondNumber);
Console.WriteLine("Theresultofdividing{0}by{1}is{2}.",
firstNumber,secondNumber,firstNumber/
secondNumber);
Console.WriteLine("Theremainderafterdividing{0}by{1}is{2}.",
firstNumber,secondNumber,firstNumber%
secondNumber);
Console.ReadLine();
}
}
}
2、编写一个声明c#不同数据类型变量的程序DataType
(1)参考代码
如下所示:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceDataType
{
classDataType
{
staticvoidMain()
{
intmyInt=3;
shortmyShort=32765;
uintmyUint=1;
floatmyFloat=100.15f;
doublemyDouble=-99;
longmyLong=10000;
decimalmyDecimal=-1.88m;
Console.WriteLine("myInt:
{0},myShort:
{1},myUint:
{2},myFloat:
{3}",
myInt,myShort,myUint,myFloat);
Console.WriteLine("myDouble:
{0},myLong:
{1},myDecimal",myDouble,my
Long,myDecimal);
Console.ReadLine();
}
}
}
3、数组和循环语句的应用
(1)程序功能要求
创建帐户数组accountBanlances,结合for循环实现允许用户输入5个帐户结算,将利息加到每个帐户结算上,打印5个结算的最后结果。
(2)参考代码
如下所示:
usingSystem;
classAccountBalanceTraversal
{
publicstaticvoidMain()
{
constdecimalinterestRate=0.1m;
decimal[]accountBalances;
accountBalances=newdecimal[5];
Console.WriteLine("Pleaseenter{0}accountbalances:
",accountBalances.Length);
for(inti=0;i{
Console.Write("Enterbalancewithindex{0}:
",i);
accountBalances[i]=Convert.ToDecimal(Console.ReadLine());
}
Console.WriteLine("\nAccountbalancesafteraddinginterest\n");
for(inti=0;i{
accountBalances[i]=accountBalances[i]
+(accountBalances[i]*interestRate);
Console.WriteLine("Accountbalancewithindex{0}:
{1:
C}",
i,accountBalances[i]);
}
}
}
以上程序中为何用decimal数据类型?
将以上程序改造成你自己的程序也实现以上功能,如将for语句用foreach语句实现或将for语句改造成其它循环语句。
四、课后问题
1、类和结构的异同?
2、交错数组如何使用?
3、装箱和拆箱的区别?
实验三:
C#基础语法
(二)
一、实验目的
1、掌握C#常见运算符的使用
2、掌握C#选择结构if语句和switch语句的使用
3、掌握C#循环结构的使用
4、掌握C#中的时间处理
二、实验内容
1、实现两个数的加、减、乘、除、取余
(1)训练要点
Ø控制台的输入输出。
Ø基本条件判断结构。
(2)需求说明
Ø输入计算需要的两个操作数和运算符。
Ø输出计算结果
输出结果如下图所示
两个数的算术运算
(3)实现思路及关键代码
Ø新建一个控制台应用程序Calculator。
Ø定义4个变量,分别代表第一个操作数、第二个操作数、计算结果和运算符。
Ø使用if结构判断运算符的类型,进行计算输出。
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceCalculator
{
classProgram
{
staticvoidMain(string[]args)
{
//定义三个整数变量,分别存放第一个操作数、第二个操作数和计算结果
intfirstNum,secondNum,result;
//定义一个标识符,存放选择的操作运算符类型,1——加法,2——减法,3——乘法,4——除法,5——除余
intChoiceType;
Console.WriteLine("请输入第一个操作数:
");
firstNum=Convert.ToInt16(Console.ReadLine());
Console.WriteLine("请输入第二个操作数:
");
secondNum=Convert.ToInt16(Console.ReadLine());
Console.WriteLine("请选择操作符类型(选择1--5中的一个):
");
Console.WriteLine("1——加法,2——减法,3——乘法,4——除法,5——除余");
ChoiceType=int.Parse(Console.ReadLine());
if(ChoiceType>5||ChoiceType<1)
{
Console.WriteLine("选择的操作符不对,请重新选择");
}
if(ChoiceType==1)
{
result=firstNum+secondNum;
Console.WriteLine("第一个操作数是{0},第二个操作数是{1},两数相加结果是{2}",firstNum,secondNum,result);
}
if(ChoiceType==2)
{
result=firstNum-secondNum;
Console.WriteLine("第一个操作数是{0},第二个操作数是{1},两数相减结果是{2}",firstNum,secondNum,result);
}
if(ChoiceType==3)
{
result=firstNum*secondNum;
Console.WriteLine("第一个操作数是{0},第二个操作数是{1},两数相乘结果是{2}",firstNum,secondNum,result);
}
if(ChoiceType==4)
{
if(secondNum==0)
{
Console.WriteLine("除数