常熟理工学院-C_实验报告册(本二)
更新时间:2023-06-08 09:39:01 阅读量: 实用文档 文档下载
《面向对象程序设计C#》实验指导及报告书
/ 学年 第 学期
姓 名:______________ 学 号:______________ 班 级:______________ 指导教师:______________
实验目录
实验一 创建简单的.NET应用程序 ................................................. 3 实验二 选择和循环........................................................................... 9 实验三 数组和字符串处理............................................................. 15 实验四 类和对象编程练习............................................................... 21 实验五 继承与多态编程练习......................................................... 32 实验六 接口和集合........................................................................... 41 实验七 文件和输入输出................................................................. 50 实验八 代理和事件........................................................................... 54
实验一 创建简单的.NET应用程序
一、实验目的
1.了解C# 基本程序结构;
2.熟悉命令行方式下C#程序编写、编译、调试和执行过程; 3.了解VS2005集成开发环境的功能和特点。 二、预习内容
1.一个C#应用程序,从编写到运行,要经过哪几个步骤?
三、实验内容
1. 调试并运行下面程序,并写出运行结果: using System;
class SimpleProgram {
static void Main() {
Console.WriteLine(“Hello!\nWorld.”); } }
运行结果(注意,按照屏幕输出格式写): Hello! World.
2. 调试并运行下面程序,并写出运行结果:
using System; class StarTriangle {
static void Main(string[] args) {
int i, j, k;
for (i = 0; i <= 3; i++) {
for (j = 0; j <= 2 - i; j++)
Console.Write(" "); //一个空格 for (k = 0; k <= 2 * i; k++) Console.Write("*"); Console.WriteLine(); }
Console.ReadKey(); } }
运行结果(注意,按照屏幕输出格式写): * *** ***** *******
3. 下面是一个模拟计算器的程序(两个操作数都为正整数)。计算器应该能够执行以下算术操作:加法、减法、乘法、除法。调试并运行下面程序,验证当从键盘输入8和2两个整数时,选择进行乘法时的计算结果。 注意:程序输入时要区分大小写。 using System;
class CalcNumber { int number1,number2; char option; int result; public void Number()
{ Console.WriteLine(“Enter the First Number:”); number1=Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“Enter the Second Number:”); number2=Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“Main Menu”); Console.WriteLine(“1.Addition”); Console.WriteLine(“2.Subtraction”); Console.WriteLine(“3.Multiplication”); Console.WriteLine(“4.Division”);
Console.WriteLine(“Enter the Operation you want to perform:”); option=Convert.ToChar(Console.ReadLine()); switch(option) { case 1 : result=number1 + number2; break; case 2 : result=number1 - number2; break; case 3 : result=number1 * number2; break; case 4 : result=number1 / number2; break; default: Console.WriteLine(“Invalid Option”); return; }
Console.WriteLine(“The result is {0}” , result);
}
}
class TestCalc {
static void Main(string[] args) {
CalcNumber obj = new CalcNumber(); obj.Number(); } }
从键盘输入8和2两个整数时,
(1) 选择3时的运行结果: (2) 选择5时的运行结果: The result is 16 Invalid Option
从键盘输入的8和two时(第二个数为非整数),程序运行结果: 程序不运行
4.在保持功能不变的情况下,改写上例代码如下: using System;
class CalcNumber { int number1,number2; char option; public void GetNumber()
{ Console.WriteLine(“Enter the First Number:”); number1=Convert.ToInt32(Console.ReadLine()); Console.WriteLine(“Enter the Second Number:”); number2=Convert.ToInt32(Console.ReadLine()); }
public void GetOption() { Console.WriteLine(“Main Menu”); Console.WriteLine(“1.Addition”);
Console.WriteLine(“2.Subtraction”); Console.WriteLine(“3.Multiplication”); Console.WriteLine(“4.Division”);
Console.WriteLine(“Enter the Operation you want to perform:”); option = Convert.ToChar(Console.ReadLine()); }
public int Compute() {
int result;
}
switch(option) {
case 1 : result=number1 + number2; break;
case 2 : result=number1 - number2; break;
case 3 : result=number1 * number2; break;
case 4 : result=number1 / number2; break;
default: throw new InvalidOperationException (“Invalid Option”); }
return result;
}
class TestCalc {
static void Main(string[] args) {
try
{
CalcNumber obj = new CalcNumber();
obj.GetNumber(); obj.GetOption(); int result = pute(); Console.WriteLine(“The result is {0}” , result);
}
catch(Exception e) { Console.WriteLine(e.Message); } } }
比较与上例运行结果,是否完全相同: 从键盘输入8和2两个整数时, 选择3时的运行结果:
选择5时的运行结果:
从键盘输入8和two时(第二个数为非整数),程序运行结果: 输入的字符不正确
在main()函数中如不加try和catch部分代码,运行结果又会怎样? 程序不运行
体会程序5的结构与程序4相比哪一个好,谈谈你的理解?
四、实验小结
在程序的调试过程中,会遇到哪些问题?应该如何去解决这些问题?
实验二 选择和循环
一、实验目的
1. 掌握C#数据类型和表达式的特点和用法。
2. 熟练掌握单分支、双分支、多分支选择语句的格式与功能,能正确选取选择语句来设计选择结构的程序。
3. 熟练掌握while、do-while、for、break语句、continue语句的格式和功能;并能根据循环结构的要求正确选取循环语句来实现循环和多重循环。 二、预习内容
1.C#的内置数据类型有哪些?
2.从存储角度看.NET将变量的类型分为值类型和引用类型,它们两者有何区别(举例说明)?
3.查阅MSDN了解Random类,Math类的用法。
三、实验内容
1.调试并运行下面程序,写出运行结果: using System; class ThrowRoll { public static void Main() { int roll = 0;
} }
程序运行结果:
Random rd = new Random(); //创建一个存储随机数的变量rd Console.Write("开始掷筛子"); for(int count=0; count<5; count++) {
roll = (int) rd.Next(1,7); //生成一个1-6之间的随机整数 Console.Write ("这次掷的筛子是:{0} ",roll); switch(roll) { case 1: case 3: case 5: Console. Write ("筛子是奇数");break; case 2: case 4: case 6: Console. Write ("筛子是偶数");break; default: Console. Write ("筛子不在1-6之间");break; }
Console.WriteLine(“它的平方根是{0}”, Math.Sqrt(roll)); }
2.某服装店经营套服,也单件出售,若买的不少于50套,每套80元,不足50套,每套90元,若只买上衣每件60元,只买裤子每条45元,从键盘读入所买上衣coat和裤子trousers件数,计算应付款money?
提示: (1)先计算成套的衣服多少钱?
(2)再计算剩下的单件的上衣、单件的裤子多少钱; (3)计算总付款
将程序补充完整:
using System; class CalcPay
{ public static void Main(String[] args)
{ int coat,trousers,money;
Console.WriteLine (“Enter coat number:”); coat = Convert.ToInt32(Console.ReadLine()); Console.WriteLine (“Enter trousers number:”); trousers = Convert.ToInt32(Console.ReadLine()); money = getPay (coat, trousers);
Console.WriteLine ( “total money = {0}”,money); }
public static int getPay(int c, int t) { } }
要求用以下三套测试数据测试程序: a) coat: 55, trousers: 70 b) coat: 55, trousers: 40
c) coat: -5, trousers: 3 , 此时应显示错误信息 运行结果分别是:
3. 编程输入年份月份,打印该月的天数
变量命名要求: 年份:year;月份:month;计算结果:天数days 程序代码:
输入
年份:2008;月份:10,运行结果: 年份:2008;月份:2,运行结果:
年份:2009;月份:9,运行结果: 年份:2009;月份:2,运行结果: 年份:2009;月份:99,运行结果:
4.计算机来当一年级的算术老师,要求给出十道两位数的四则运算的算术题,每道题10分,学生输入该题的答案,计算机根据学生的答案判断正确与否,当结束时给出成绩。 (提示:用Random类产生两个两位数的随机数) 程序代码:
四、实验小结
谈谈本次实验的心得、体会?
五、选做实验
编写一个程序打印九九乘法表 1×1=1
2×1=2 2×2=4
3×1=3 3×2=6 3×3=9
4×1=4 4×2=8 4×3=12 4×4=16
六、教师评分
实验三 数组和字符串处理
一、实验目的
1. 要求掌握一维数组、多维数组(主要指二维)的创建、初始化、数组元素的引用等方法。
2. 掌握冒泡排序算法。 3. 掌握二分查找算法。
4. 掌握字符串处理的相关方法。 二、预习内容
1.如何创建一个能存放十个整数的一维数组intArr?
2.如何创建一个如下图的不等长的存放整数的二维数组jagArr?
3.查阅MSDN,至少写出String类的五个方法,并说明该方法的作用?
三、实验内容
1. 实现对从键盘输入一批非零整数,以-1作为输入结束标记,对这批整数进
行排序。要求:
1)用选择或冒泡升序排
2)从控制台获取数据、排序、输出数组功能分别做成三个方法。 3)安排方法的调用,注意方法调用时参数的传递。 程序代码:
2. 数组A中的N(0<N<100)个整数从小到大进行连续编号,要求不能改变
数组A中元素的顺序。如A=(78,42,-34,94,25)则输出为(4,3,1,5,2)。数组长度N和数组中元素要求从键盘输入。 程序代码:
3.已知一个已经从小到大排序的数组,这个数组中的一个平台就是指连续的一串值相同的元素,并且这一串元素不能再延伸,例如,在1,2,2,3,3,3,3,4,4,5,5,5,6中1,2,2,3,3,3,3,4,4,5,5,5,6划线部分都是一个平台,试编写程序,接收任意一个已排好序数组,把这个数组中最长的
4.调试下列代码,写出运行结果。 class Example
{ public static void Change(string str,char[] ch) { str = “test ok”; ch[0] = g ;
}
public static void Main(string[] args)
{
string str = “good”;
char[ ] ch = { a , b , c }; Change(str,ch);
Console.Write(str + “ and “); Console.WriteLine(ch); Console.ReadKey();
} }
运行结果是test ok and gbc吗?为什么?请分析原因:
5. 调试下列代码,写出运行结果,分析程序的功能。 class DealString {
public static string Del(string origin ,string smod) { if( origin !=null && smod !=null) { if( origin.IndexOf(smod)>-1)
{ origin = origin.Replace(smod, ""); return origin; } } else return null; }
}
class Program {
static void Main(string[] args) {
string str = "hellxyzo,wxyzoxyzrldxyz."; string smod = "xyz"; string newString;
newString = DealString.Del(str, smod); Console.WriteLine(newString); Console.ReadKey();
} }
运行结果:
程序完成什么样功能?
四、实验小结
谈谈在C#中,数组的使用和字符串处理的心得和体会?
实验四 类和对象编程练习
一、实验目的
1. 掌握C#中类的定义、对象的创建方法; 2. 理解封装性及其意义;
3. 掌握构造函数的含义与作用、定义方式和实现,能够根据要求正确定义
和重载构造函数。
4. 能够根据给定的要求定义类并实现类的成员函数;
5. 理解类的成员的访问控制的含义,公有、私有和保护成员的区别
二、实验内容
1. 定义一个学生类,其中有学号、姓名、年龄3个数据成员,以及若干成
员函数。同时编写主函数使用这个类,实现对学生数据的赋值和输出。要求:使用构造函数实现对数据的输入,使用成员函数实现对数据的输出。 调试下列的参考代码。 class Student {
private string id; private string name; private int age;
public Student(string id,string name,int age)
{
this.id = id; = name; this.age = age; }
public void Display() {
Console.WriteLine("id={0},name={1},age={2}",id,name,age); }
public static void Main() {
Student s1 = new Student("001","zhangshan",16); s1.Display();
Console.ReadKey();
正在阅读:
常熟理工学院-C_实验报告册(本二)06-08
人教版高中数学《离散型随机变量的分布列》教学设计(全国获奖)10-19
胖大海的秘密作文550字06-19
2014全国区号大全05-26
梦11-03
关于胜似亲人的作文600字07-05
扩写作文狐狸吃葡萄500字07-01
观察柳树的植物日记11-20
FDI对我国经常项目差额影响的实证分析06-05
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 常熟
- 理工学院
- 实验
- 报告
- 人教版物理八年级上册-宇宙和微观世界(河南省实验中学)
- 五年级上学期安全教育教案之安全伴随我成长
- 中金公司--技术硬件及设备行业:中国宽带国家战略呼之欲出,设备商先行受益
- c语言教师工资管理系统
- 1.3 提升素质 展示气质训练
- 人生作文之人生计划书范文
- 第12章 沟通与人际交往技能
- 国际标准智力测试题
- 飞机发动机维修行业成本控制问题
- 中国的广告行业的未来发展方向在哪里
- 酒店管理地产 地产开发——酒店公寓施工图审查关键节点表2015(叶予舜)
- 小孩脾胃不好中医认为脾为小儿之本
- 租用地址注册公司协议
- 移动支付商业模式分析
- 主成分分析在区域经济分析中的应用
- SMT中再流焊工艺建模与仿真
- 论文中国社会保障改革之我见
- 小学二年级写动物作文教案
- 石氏伤科草乌磁石药对应用举隅
- 中国商业地产行业全景调研与发展战略研究咨询报告2016-2021年