c#程序设计实训报告心得体会_C#.NET程序设计实验一实验报告

本文是关于C#程序设计实训的报告,涵盖了五个实验,包括使用Visual Studio.NET创建控制台应用程序,涉及三角形和矩形的周长、面积计算,季节判断,鸡蛋数量问题,数组中奇偶数之和,以及二维数组鞍点的查找。通过这些实验,作者掌握了C#语言的基本语法、控制结构和数组操作,体验了C#在VS环境下的便捷开发。

实验一  语言基础

一、实验目的

1. 熟悉Visual Stido.NET 实验环境;

2. 掌握控制台程序的编写方法;

3. 掌握C#程序设计语言的语法基础;

4. 掌握控制语句和数组的使用。

二、实验要求

根据题目要求,编写 C#程序,并将程序代码和运行结果写入实验报告。

三、实验内容

1. 编写一个控制台应用程序,输入三角形或者长方形边长,计算其周长和面积并输出。

源码:

主函数部分

static void Main1_1(string[] aa)

{

//定义三角形边长,矩形长和宽,以及周长和面积

int i;

double tri1, tri2, tri3;

double rec1, rec2;

double cir, area;

//系统编写

Console.WriteLine("--------------------几何图形周长、面积计算-----------------");

while (true)

{

Console.WriteLine("请选择图形样式:");

Console.WriteLine("   1.三角形    2.矩形   3.退出    ");

Console.WriteLine("请输入对应序号:");

//这里不知道什么原因。需要回车两次才能继续。

i = int.Parse(Console.ReadLine());

switch (i)

{

//三角形算法

case 1:

Console.WriteLine("请输入所求三角形的第一条边的长度:");

tri1 = float.Parse(Console.ReadLine());

Console.WriteLine("请输入所求三角形的第二条边的长度:");

tri2 = float.Parse(Console.ReadLine());

Console.WriteLine("请输入所求三角形的第三条边的长度:");

tri3 = float.Parse(Console.ReadLine());

cir = tri1 + tri2 + tri3;//周长

area = Math.Sqrt(cir / 2 * (cir / 2 - tri1) * (cir / 2 - tri2) * (cir / 2 - tri3));

//无法将double隐式转换为float,之前用的float类型的边长等,sqrt函数返回为double

Console.WriteLine("该三角形的周长为:{0}", cir);

Console.WriteLine("该三角形的面积为:{0}", area);

break;

case 2:

Console.WriteLine("请输入所求矩形的一条边的长度:");//用户依次输入三个边长

rec1 = float.Parse(Console.ReadLine());

Console.WriteLine("请输入所求矩形的另一条边的长度:");

rec2 = float.Parse(Console.ReadLine());

cir = 2 * (rec1 + rec2);        //长方形周长及面积

area = rec1 * rec2;

Console.WriteLine("该矩形的周长为:{0}", cir);

Console.WriteLine("该矩形的面积为:{0}", area);

break;

case 3:

Console.WriteLine("正在退出.....");

Console.WriteLine("退出成功!");

break;

default:

Console.WriteLine("输入有误,请输入1或2或3!!!");

break;

}

//判断是否退出系统

if (i == 3)

break;

}

}

程序运行截图

2. 编写一个控制台应用程序,可根据输入的月份判断所在季节。

主函数代码

static void Main1_2(string[] ab)

{

//定义输入的月份

int i;

//系统编写

Console.WriteLine("---------季节判断系统----------");

while(true)

{

Console.WriteLine("请输入要查询的月份:(输入0,退出系统)");

i = int.Parse(Console.ReadLine());

switch(i)

{

case 3:

case 4:

case 5:

Console.WriteLine("{0}月在春季。 ", i);

break;

case 6:

case 7:

case 8:

Console.WriteLine("{0}月在夏季。", i);

break;

case 9:

case 10:

case 11:

Console.WriteLine("{0}月在秋季。", i);

break;

case 12:

case 1:

case 2:

Console.WriteLine("{0}月在冬季。", i);

break;

case 0:

Console.WriteLine("正在退出.....");

Console.WriteLine("退出成功!");

break;

default:

Console.WriteLine("您的输入有误,请核实后输入!!!");

break;

}

if (i == 0)

break;

}

}

程序运行截图

3. 编写程序,用 while 循环语句实现下列功能:有一篮鸡蛋,不止一个,有人两个两

个数,多余一个,三个三个数,多余一个,再四个四个地数,也多余一个,请问这篮鸡蛋至

少有多少个。

主函数代码

static void Main1_3(string[] ac)

{

int sum = 2;

bool flag = false;

while (sum < int.MaxValue && flag == false)

{

if (sum % 2 == 1 && sum % 3 == 1 && sum % 4 == 1)

{

Console.WriteLine("这筐鸡蛋至少有{0}个.", sum);

flag = true;

}

else

sum++;

}

}

程序运行截图

4. 编写程序,计算数组中奇数之和和偶数之和。

主函数代码

static void Main1_4(string[] ad)

{

//定义数组,及奇数偶数之和

List str = new List();

int lenth = 0;

int jssum = 0;

int ossum = 0;

//输入数组

Console.WriteLine("输出数组元素,回车按q结束录入(最后一个数字后不要加空格)");

while(true)

{

string input = Console.ReadLine();

if (input.Equals("q") == false)

str.Insert(lenth++, input);

else

break;

}

//交叉数组,

string[][] every = new string[lenth][];

for(int i = 0; i < lenth; i++)

{

every[i] = str[i].Split();//C#对空格的分割方式之一

}

for (int i = 0; i < lenth; i++)

{

for(int j=0;j

{

int aa;

aa = int.Parse(every[i][j]);

if((aa%2)==1)

{

jssum += aa;

}

else

{

ossum += aa;

}

}

}

Console.WriteLine("该数组中奇数之和为:{0}", jssum);

Console.WriteLine("该数组中偶数之和为:{0}", ossum);

Console.ReadKey();

}

程序运行截图

5. 编写程序,找一找一个二维数组中的鞍点(即该位置上的元素值在行中最大,在该

列上最小。有可能数组没有鞍点)。要求:

u   二维数组的大小、数组元素的值在运行时输入;

u   程序有友好的提示信息。

主函数代码

static void Main1_5(string[] ae)

{

int[,] nos = new int[3, 4];

int xMaxIndex = 0;

bool isFind = false;

for (int i = 0; i < nos.Rank; i++)

{

for (int j = 1; j < nos.Length / (nos.Rank + 1); j++)

{

if (nos[i, j] > nos[i, j - 1])

xMaxIndex = j;

}

bool isMin = true;

for (int k = 0; k < nos.Rank; k++)

{

if (k == i)

continue;

if (nos[k, xMaxIndex] < nos[i, xMaxIndex])

isMin = false;

}

if (isMin)

{

Console.Write("[{0},{1}]={2} 是鞍点!", i, xMaxIndex,nos[i,xMaxIndex]);

isFind = true;

}

}

if (!isFind)

Console.Write("Not Find(没有找到鞍点)!");

}

程序运行截图

四、实验总结

通过本次实验报告,以及对应实验代码的编写以及运行工作,我初步认识到C#语言控制台应用的编写技巧,C#与C++,C以及JAVA都有类似的地方,语法方面有相互印证的地方,有了C/C++,Java的编程经历,对C#的开发比较顺利,这几个习题练习了C#,对于整型,双精度型数据的定义,赋值,以及while,for,if循环结构,还有终端的输入输出,以及二维数组的定义等方面,都有涉及,很好的培养了C#的开发习惯。而且C#在VS里的开发过程异常顺利,几乎没有遇到什么问题。对于题目中的一些瑕疵,我没有做深入的研究,通过注释将相关注意事项记下。最后一题感觉和题目有所出入。希望指正。

很好的C#培训教程,适合初学者使用 目 录 1 .NET体系结构 7 1.1 什么是.NET Framwork? 7 1.2 .NET Framework的内容 7 1.3 如何用.NET Framework编写应用程序 8 1.4 MSIL和JIT 8 1.5 程序集 9 1.6 托管代码 9 1.7 垃圾回收 9 1.8 链接 10 1.9 实例分析 11 1.10 内容总结 13 1.11 独立实践 14 2 C#基础 15 2.1 面向对象基本概念 15 2.2 变量 18 2.3 常量 22 2.4 预定义数据类型 22 2.5 流控制 28 2.6 数组 37 2.7 命名空间 38 2.8 C#预处理器指令 44 2.9 C#编程规则 46 2.10 内容总结 50 2.11 独立实践 50 3 对象和结构 52 3.1 类和结构 52 3.2 类和成员 53 3.3 构造函数 60 3.4 结构 65 3.5 部分类 68 3.6 内容总结 72 3.7 独立实践 72 4 继承 73 4.1 继承的类型 73 4.2 结构和类 75 4.3 调用函数的基类版本 76 4.4 抽象类和抽象函数 77 4.5 密封类和密封方法 79 4.6 修饰符 80 4.7 接口 81 4.8 内容总结 86 4.9 独立实践 86 5 委托与事件 88 5.1 事件的原理 88 5.2 简单的自定义事件 89 5.3 预定义事件处理机制 92 5.4 内容总结 100 5.5 独立实践 100 6 运算符和类型强制转换 101 6.1 运算符 101 6.2 运算符的简化操作 102 6.3 类型的安全性 107 6.4 类型转换 108 6.5 装箱和拆箱 111 6.6 对象的相等比较 112 6.7 引用类型的相等比较 112 6.8 运算符重载 114 6.9 运算符的工作方式 114 6.10 用户定义的数据类型转换 118 6.11 执行用户定义的类型转换 119 6.12 多重数据类型转换 126 6.13 内容总结 130 6.14 独立实践 131 7 字符串与正则表达式 132 7.1 System.String类 132 7.2 StringBuilder成员 135 7.3 字符串的格式化 138 7.4 正则表达式概述 142 7.5 内容总结 149 7.6 独立实践 150 8 集合 151 8.1 集合 151 8.2 索引器 152 8.3 集合接口 155 8.4 字典 157 8.4.1 现实生活中的字典 158 8.4.2 .NET中的字典 158 8.4.3 字典的工作情况 160 8.5 内容总结 167 8.6 独立实践 167 9 错误与异常 168 9.1 错误和异常 168 9.2 捕获异常 170 9.3 System.Exception属性 177 9.4 嵌套的 try块 178 9.5 用户定义的异常类 180 9.6 内容总结 189 9.7 独立实践 189 10 内存管理与指针 190 10.1 后台内存管理 190 10.2 值数据类型 190 10.3 引用数据类型 192 10.4 垃圾收集 194 10.5 释放未托管的资源 195 10.6 析构函数 195 10.7 IDisposable接口 196 10.8 实现IDisposable接口和析构函数 198 10.9 不安全的代码 199 10.10 指针 200 10.11 使用指针优化性能 213 10.12 内容总结 217 11 泛型 218 11.1 泛型的概念 218 11.2 使用泛型 219 11.3 可空类型 219 11.4 运算符和可空类型 220 11.5 System.Collections.Generic命名空间 227 11.6 定义泛型类 237 11.7 default关键字 239 11.8 约束类型 240 11.9 从泛型类中继承 247 11.10 泛型运算符 248 11.11 泛型结构 250 11.12 定义泛型接口 250 11.13 定义泛型方法 251 11.14 定义泛型委托 253 11.15 独立实践 253 12 反射 254 12.1 定制特性 254 12.2 编写定制特性 255 12.3 指定特性参数 258 12.4 VectorClass程序集 261 12.5 反射 263 12.6 查找定制特性 269 12.7 内容总结 273 13 线程 274 13.1 线程 274 13.2 多线程应用程序 275 13.3 线程的处理 276 13.4 线程的优先级 282 13.5 同步 283 13.6 同步问题 285 13.7 内容总结 288 14 Winform基本概念 289 14.1 .NET Windows应用程序开发 289 14.2 .NET框架类库简介 289 14.3 事件和事件处理程序 290 14.4 事件参数 290 14.5 Windows 应用程序 290 14.6 窗体属性、方法和事件 291 14.7 this 关键字 292 14.8 控件概念 292 14.9 各种类型控件 292 14.10 控件的些通用属性 294 14.11 标签、文本框、按钮控件简介 295 14.12 列表框控件简介 296 14.13 复选列表框 296 14.14 组合框 296 14.15 内容总结 302 15 Winform控件 303 15.1 控件分类 303 15.2 在窗体之间建立链接 307 15.3 应用程序的启动和关闭 308 15.4 内容总结 308 16 高级用户界面 309 16.1 打印控件的使用 309 16.2 PrintDocument组件 309 16.3 PrintPreviewControl组件 310 16.4 PrintDialog 组件 310 16.5 PrintPreviewDialog组件 311 16.6 PageSetUpDialog控件 311 16.7 对话框 311 16.8 通用对话框 312 16.9 OpenFileDialog控件 312 16.10 SaveFileDialog控件 312 16.11 FontDialog控件 312 16.12 ColorDialog控件 312 16.13 MessageBox消息框 313 16.14 WinForms 中的可视效果 314 16.15 内容总结 315 17 MDI应用程序 316 17.1 SDI程序 316 17.2 MDI程序 316 17.3 MenuStrip和ToolStripMenuItem 317 17.4 toolStrip控件简介 318 17.5 StatusStrip控件 320 17.6 创建对话框 320 17.7 内容总结 321 18 ADO.NET编程 322 18.1 简介 322 18.2 ADO.NET 的优点 322 18.3 ADO.NET 结构 324 18.4 ADO.NET 的基本组件 325 18.5 DataReader 328 18.6 获取单个值 328 18.7 修改数据库中的数据 329 18.8 从SQL Server获取XML数据 329 18.9 DataAdapter 330 18.10 数据集:DataSet 330 18.11 DataTable 330 18.12 DataView 332 18.13 关系 332 18.14 数据绑定 333 18.15 DataRow 简介 335 18.16 操纵数据源中的值 336 18.17 内容总结 336 19 GDI+ 编程 337 19.1 理解绘图规则 337 19.2 测量坐标和区域 341 19.3 绘制可滚动的窗口 343 19.4 颜色 348 19.5 画笔和钢笔 351 19.6 绘制图形和线条 352 19.7 显示图像 355 19.8 绘制文本 357 19.9 字体和字体系列 359 19.10 内容总结 363 20 自定义控件 364 20.1 添加事件处理程序 368 20.2 添加更多的属性 370 20.3 内容总结 372 21 部署与安装 373 21.1 部署的设计 373 21.2 无干涉部署 387 21.3 内容总结 394 22 ASP.NET与Web窗口简介 395 22.1 应用程序方案 395 22.2 Web 应用程序开发周期 399 五个对象实现了服务器端的请求 403 22.3 ASP.NET 的演变 404 22.4 Global.asax 文件 405 22.5 发布网站 408 22.6 内容总结 408 23 ASP.NET中的内置对象 409 23.1 ASP.NET页面 409 23.2 虚拟目录 421 23.3 内容总结 423 24 Web服务器控件 424 24.1 Web 控件 424 24.2 复杂控件 429 24.3 内容总结 431 25 HTML控件 432 25.1 服务器控件 432 25.2 HTMLForm控件 432 25.3 Web服务器控件优缺点 433 25.4 HTML服务器控件优缺点 433 25.5 使用服务器控件设计页面建议 433 25.6 内容总结 439 26 深入服务器对象 440 26.1 Global.asax文件简介 441 26.2 Application 对象 446 26.3 HttpServerUtility类和Server对象 446 26.4 HttpSessionState类和Session对象 448 26.5 内容总结 449 27 ADO.NET WEB应用 450 27.1 回顾ADO.NET 450 27.2 模板概念 464 27.3 ASP.NET 中的数据处理 465 27.4 内容总结 466 28 WEB服务器基础 467 28.1 ASP.NET Web 服务 467 28.2 编写简单的 Web 服务 468 28.3 内容总结 470 28.4 独立实践 470 29 用户控件 471 29.1 用户控件开发 471 29.2 内容总结 479 29.3 独立实践 480 30 Web部署 481 30.1 使用XCOPY部署 481 30.2 使用Visual studio的Copy Web Site功能部署 482 30.3 使用Visual Studio的Precompilation预编译部署 482 30.4 内容总结 483 30.5 独立实践 484
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值