C# 所有作业和实验报告:https://blog.csdn.net/COCO56/article/details/102803267
文章目录
一、实验目的及要求
- 掌握类型之间的转换方法;
- 掌握C#语言的选择语句、循环语句、跳转语句的使用;
- 掌握数组的定义和使用,掌握foreach语句的使用。
二、实验内容(或实验原理、实验拓扑)
练习1:C# 几种数据类型转换方式。
- (int)变量名[强制类型转换]
- int.Parse(string 变量名)。
- int.TryParse(string s, out int result)
- Convert.ToInt32
练习2:定义一个变量保存一个分数,判断该分数属于什么等级。
60分以下E,60 ~ 70D,70 ~ 80C,80 ~ 90 B,90或90以上是A。
练习3:从一个整数数组中取出最大的整数。
三、实验设备与环境
I7 7700HQ+16G内存+38TB分布式硬盘的笔记本电脑、Windows 10 1903政府版、Visual Studio 2019 企业版、.NET Framework 4.7.2
四、实验设计方案(包括实验步骤、设计思想、算法描述或开发流程等)
- 实验一:C# 几种数据类型转换方式。
- 实验二:定义一个变量保存一个分数,判断该分数属于什么等级。
- 实验三:从一个整数数组中取出最大的整数。
五、实验结果(包括设计效果、测试数据、运行结果等)
- 实验一:C# 几种数据类型转换方式。
- 实验二:定义一个变量保存一个分数,判断该分数属于什么等级。
- 实验三:从一个整数数组中取出最大的整数。
六、实验小结(包括收获、心得体会、注意事项、存在问题及解决办法、建议等)
类型基础是C#的基础概念,了解类型基础及背后的工作原理更有助于我们在编码的时候明白数据在内存中的分配与传递。C#提供了值类型和引用类型。
值
类
型
\color{red}{值类型}
值类型分为两类:结构和枚举。内置的数值类型如int,char等或使用 struct
关键字创建的自定义值类型都是结构;用enum
关键字可以创建枚举类型。
定义为类、委托、数组或接口的类型是
引
用
类
型
\color{red}{引用类型}
引用类型。
值类型和引用类型在栈和堆中的分配
这儿有两个原则:
- 创建引用类型时,runtime会为其分配两个空间,一块空间分配在堆上,存储引用类型本身的数据,另一个块空间分配在栈上,存储对堆上数据的引用(实际上存储的堆上的内存地址,也就是指针)。
- 创建值类型时, runtime会为其分配一个空间,这个空间分配在变量创建的地方,如:
- 如果值类型是在方法内部创建,则跟随方法入栈,分配到栈上存储。
- 如果值类型是引用类型的成员变量,则跟随引用类型,存储在堆上。
更多关于C#中的值类型和引用类型的内容请查看我的博文:https://blog.csdn.net/COCO56/article/details/100763194
七、附录(包括作品、流程图、源程序及命令清单等)
本实验文档同步更新于:https://blog.csdn.net/COCO56/article/details/100728344
-
实验一:C# 几种数据类型转换方式。
using System; namespace Test1_1 { class Program { //C# 几种数据类型转换方式。 static void Main(string[] args) { string s = ""; int n = 0; double d = 0; Console.Write("Please input an int: "); s = Console.ReadLine(); //int.Parse(string 变量名)。 n = int.Parse(s); Console.WriteLine("int.Parse(s):" + n); //int.TryParse(string s, out int result) int.TryParse(s, out n); Console.WriteLine("int.TryParse:" + n); //Convert.ToInt32 n = Convert.ToInt32(s); Console.WriteLine("Convert.ToInt32(s):" + n); //(int)变量名[强制类型转换] n = (int)Double.Parse(s); Console.WriteLine("(int):" + n); n = Int32.Parse(s); Console.Write("\nPlease input a double: "); s = Console.ReadLine(); d = Double.Parse(s); Console.WriteLine("You have entered: " + n + " and " + d); Console.WriteLine("You have entered: {0} and {1}", n, d); Console.WriteLine($"You have entered: {n} and {d}"); Console.WriteLine("Press any key to quit."); Console.ReadKey(); } } }
-
实验二:定义一个变量保存一个分数,判断该分数属于什么等级。
using System; namespace Test2 { class Program { //定义一个变量保存一个分数,判断该分数属于什么等级:60分以下E,60~70D,70~80C,80~90B,90或90以上是A。 static void Main(string[] args) { //levelToScores(); scoresToLevel(); Console.WriteLine("Press any key to quit."); Console.ReadKey(); } static void scoresToLevel() { Console.Write("Input scores :"); decimal scores = Convert.ToDecimal(Console.ReadLine()); string output= "Input error"; if (scores > 100) { } else if (scores >= 90) output = "A"; else if (scores >= 80) output = "B"; else if (scores >= 70) output = "C"; else if (scores >= 60) output = "D"; else if (scores >= 0) output = "E"; Console.WriteLine(output); if (output == "Input error"){ Console.WriteLine(); scoresToLevel(); } } static void levelToScores() { Console.Write("Input Grade Level: "); char grade = (char)Console.Read(); switch (char.ToUpper(grade)) { case 'A': Console.WriteLine(grade + " is 85~100"); break; case 'B': Console.WriteLine(grade + " is 70~84"); break; case 'C': Console.WriteLine(grade + " is 60~69"); break; case 'D': Console.WriteLine(grade + " is <60"); break; default: Console.WriteLine("input error"); break; } } } }
-
实验三:从一个整数数组中取出最大的整数。
using System; using System.Linq; namespace Test3 { class Program { //从一个整数数组中取出最大的整数。 static void Main(string[] args) { int[] numbers = { 1, 2, 3, 8, 5 }; Console.WriteLine("max=" + numbers.Max()); int max = numbers[0]; foreach (int i in numbers) if (max < i) max = i; Console.WriteLine("max=" + max); max = numbers[0]; for (int i = 1; i < numbers.Length; i++) if (max < numbers[i]) max = numbers[i]; Console.WriteLine("max=" + max); Console.WriteLine("\nPress any key to quit."); Console.ReadKey(); } } }