参考书籍:《C#程序设计实验指导与习题测试》
掌握常量和变量的使用
掌握运算符和表达式的使用
掌握赋值语句的使用
掌握顺序结构的程序流程
掌握单分支语句的使用
掌握双分支语句的使用
掌握多分支语句的使用
实验1:常量、变量、运算符、表达式和赋值语句的使用
输出半径,求对应圆的周长、面积,对应球体的体积。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 using System; namespace ConsoleApp2 { class Program { static void Main(string[] args) { const double PI = 3.14159; double r, permeter, area, volume; //变量r,permeter,area,volume分别存放圆的半径,周长,面积以及对应球体的体积 Console.Write("请输入半径:"); String s = Console.ReadLine(); r = double.Parse(s); //显性数据类型转换,将数字字符串转换成等效的双精度浮点数 Console.WriteLine("圆的半径为:{0}", r); //获取用户输入,并打印出圆的半径的值 permeter = 2 * PI * r; area = PI * r * r; volume = 4 / 3 * PI * Math.Pow(r, 3); //列出permeter、area、volume与r的关系表达式 Console.WriteLine("圆的周长是:{0}\n圆的面积是:{1}\n对应球体的体积是:{2}", permeter, area, volume); //打印计算结果 Console.ReadLine(); //等待用户输入,目的是使程序"停下来" } } }
1 2 3 4 5 请输入半径:5 圆的半径为:5 圆的周长是:31.4159 圆的面积是:78.53975 对应球体的体积是:392.69874999999996
实验2:求三角形的周长和面积
输入三角形的三条边,先判断是否可以构成三角形,如果可以,则求三角形的周长和面积,否则报错。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 using System; namespace ConsoleApp2 { class Program { static void Main(string[] args) { double a, b, c;//存放三角形的三条边 double p, h, area; //变量p用来存放三角形的周长,h存放三角形周长的一半,area用来存放三角形的面积 Console.Write("请输入三角形的第一条边a:"); String s = Console.ReadLine(); a = double.Parse(s); Console.Write("请输入三角形的第二条边b:"); s = Console.ReadLine(); b = double.Parse(s); Console.Write("请输入三角形的第三条边c:"); s = Console.ReadLine(); c = double.Parse(s); //获取用户输入数据,并将字符串数据转换成双精度浮点型数据 //判断是否可以构成三角形,若能,用海伦公式计算三角形的面积 if (a > 0 && b > 0 && c > 0 && a + b > c && a + c > b && b + c > a) { Console.WriteLine("三角形的三条边分别为a={0}, b={1}, c={2}",a,b,c); p = a + b + c; h = p / 2; area = Math.Sqrt(h * (h - a) * (h - b) * (h - c)); Console.WriteLine("三角形的周长为{0}\n三角形的面积为{1}", p, area); } else Console.WriteLine("无法构成三角形!"); Console.ReadKey(); } } }
1 2 3 4 请输入三角形的第一条边a:1 请输入三角形的第二条边b:1 请输入三角形的第三条边c:3 无法构成三角形!
1 2 3 4 5 6 请输入三角形的第一条边a:10 请输入三角形的第二条边b:24 请输入三角形的第三条边c:26 三角形的三条边分别为a=10, b=24, c=26 三角形的周长为60 三角形的面积为120
1 2 3 4 5 6 请输入三角形的第一条边a:10.2 请输入三角形的第二条边b:25.5 请输入三角形的第三条边c:33.3 三角形的三条边分别为a=10.2, b=25.5, c=33.3 三角形的周长为69 三角形的面积为95.15345500821303
实验3:分段函数的实现
输入x,根据如下公式计算分段函数y的值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 using System; namespace ConsoleApp2 { class Program { static void Main(string[] args) { double x, y; Console.Write("请输入x的值: "); String s = Console.ReadLine(); x = double.Parse(s); //方法一 y = (x * x - 3 * x) / (x + 1) + 2 * Math.PI + Math.Sin(x); if(y<0) { y = Math.Log(-5 * x) + Math.Sqrt(Math.Abs(x) + Math.Pow(Math.E, 4)) - Math.Pow(x + 1, 3); } Console.WriteLine("方法一:y={0}", y); //方法二 if(x>=0) { y = (x * x - 3 * x) / (x + 1) + 2 * Math.PI + Math.Sin(x); } if(x<0) { y = Math.Log(-5 * x) + Math.Sqrt(Math.Abs(x) + Math.Pow(Math.E, 4)) - Math.Pow(x + 1, 3); } Console.WriteLine("方法二:y={0}", y); //方法三 if (x >= 0) { y = (x * x - 3 * x) / (x + 1) + 2 * Math.PI + Math.Sin(x); } else { y = Math.Log(-5 * x) + Math.Sqrt(Math.Abs(x) + Math.Pow(Math.E, 4)) - Math.Pow(x + 1, 3); } Console.WriteLine("方法三:y={0}", y); //方法四 y=(x>=0)? y = (x * x - 3 * x) / (x + 1) + 2 * Math.PI + Math.Sin(x): y = Math.Log(-5 * x) + Math.Sqrt(Math.Abs(x) + Math.Pow(Math.E, 4)) - Math.Pow(x + 1, 3); Console.WriteLine("方法四:y={0}", y); Console.ReadKey(); } } }
1 2 3 4 5 请输入x的值: 5 方法一:y=6.990927699183115 方法二:y=6.990927699183115 方法三:y=6.990927699183115 方法四:y=6.990927699183115
实验4:三个数比较大小
产生三个0~100(包含0和100)的随机数a,b,c
按从小到大的顺序排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 using System; namespace ConsoleApp2 { class Program { static void Main(string[] args) { int a, b, c; int temp; Random rNum = new Random(); a = rNum.Next(101); b = rNum.Next(101); c = rNum.Next(101); Console.WriteLine("原始值: a={0}, b={1}, c={2}", a, b, c); //冒泡排序的方法两两比较 if(a > b) { temp = a; a = b; b = temp; } if (a > c) { temp = a; a = c; c = temp; } if (b > c) { temp = b; b = c; c = temp; } Console.WriteLine("从小到大排序后: a={0}, b={1},c={2}", a, b, c); Console.ReadKey(); } } }
1 2 原始值: a=15, b=59, c=59 从小到大排序后: a=15, b=59, c=59
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 using System; namespace ConsoleApp2 { class Program { static void Main(string[] args) { int a, b, c; int Max, Min, Mid; Random rNum = new Random(); a = rNum.Next(101); b = rNum.Next(101); c = rNum.Next(101); Console.WriteLine("原始值: a={0}, b={1}, c={2}", a, b, c); Max = Math.Max(Math.Max(a, b), c); Min = Math.Min(Math.Min(a, b), c); Mid = a + b + c - Max - Min; Console.WriteLine("从小到大排序后: a={0}, b={1}, c={2}", Min, Mid, Max); Console.ReadKey(); } } }
1 2 原始值: a=8, b=26, c=3 从小到大排序后: a=3, b=8, c=26
实验5:求解一元二次方程
输入一元二次方程组的三个系数a,b,c,求方程的解。
(当一元二次方程组中二次项系数a=0时,方程不再是一元二次方程,而是一元一次方程,这里有点歧义,此处的一元二次方程应该指的是形如$a x^{2}+b x+c=0$的方程)
分析:
方程 $a x^{2}+b x+c=0$ 的解有以下几种情况 : (1) $a=0$ 和 $b=0,$ 无解 (2) $a=0$ 和 $b !=0,$ 有一个实根 $: x=-\frac{c}{b}$ (3) $b^{2}-4 a c=0,$ 有两个相等实根 : $x_{1}=x_{2}=-\frac{b}{2 a}$ (4) $b^{2}-4 a c>0,$ 有两个不等实根 $: x_{1}=\frac{-b+\sqrt{b^{2}-4 a c}}{2 a}, x_{2}=\frac{-b-\sqrt{b^{2}-4 a c}}{2 a}$ (5) $b^{2}-4 a c<0,$ 有两个共地复根 $: x_{1}=-\frac{b}{2 a}+\frac{\sqrt{4 a c-b^{2}}}{2 a} \mathrm{i}, x_{2}=-\frac{b}{2 a}-\frac{\sqrt{4 a c-b^{2}}}{2 a} \mathrm{i}_{}$
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 using System; namespace ConsoleApp2 { class Program { static void Main(string[] args) { double a, b, c;//存放方程的三个系数 double x1, x2;//存放实数解 double realPart, imagPart;//存放虚数解中的实部和虚部 double dlt = 0;//存放delta Console.Write("请输入系数a: "); String s = Console.ReadLine(); a = double.Parse(s); Console.Write("请输入系数b: "); s = Console.ReadLine(); b = double.Parse(s); Console.Write("请输入系数c: "); s = Console.ReadLine(); c = double.Parse(s); if(a==0) { if(b==0) { Console.WriteLine("方程无解!"); } else { Console.WriteLine("此方程的解为:{0}", -c / b); } } else { dlt = b * b - 4 * a * c; if(dlt>0) { x1 = (-b + Math.Sqrt(dlt)) / (2 * a); x2 = (-b - Math.Sqrt(dlt)) / (2 * a); Console.WriteLine("此方程有两个不等式根,分别是{0}和{1}", x1, x2); } else if(dlt==0) { x1 = x1 = (-b + Math.Sqrt(dlt)) / (2 * a); Console.WriteLine("此方程有两个相等的实根为:{0}", x1); } else { realPart = -b / (2 * a); imagPart = Math.Sqrt(-dlt) / 2 * a; Console.WriteLine("方程有两个虚根分别是{0}+{1}i 和 {0}-{1}i ", realPart, imagPart); } } } } }
1 2 3 4 请输入系数a: 0 请输入系数b: 0 请输入系数c: 6 方程无解!
1 2 3 4 请输入系数a: 0 请输入系数b: 1 请输入系数c: 2 此方程的解为:-21
1 2 3 4 请输入系数a: 1 请输入系数b: -2 请输入系数c: 1 此方程有两个相等的实根为:1
1 2 3 4 请输入系数a: 1 请输入系数b: -1 请输入系数c: -6 此方程有两个不等式根,分别是3和-2
1 2 3 4 请输入系数a: 1 请输入系数b: -1 请输入系数c: 0.5 方程有两个虚根分别是0.5+0.5i 和 0.5-0.5i
实验6:switch语句实现多重分支结构
输入一个数字(1~7),对应输出内容(星期一 ~星期天)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 using System; namespace ConsoleApp2 { class Program { static void Main(string[] args) { int i = 0; Console.Write("请输入一个数字(1-7)>>>:"); String s = Console.ReadLine(); i = int.Parse(s); switch(i) { case 1: Console.WriteLine("您输入的数字对应的内容是:星期一"); break; case 2: Console.WriteLine("您输入的数字对应的内容是:星期二"); break; case 3: Console.WriteLine("您输入的数字对应的内容是:星期三"); break; case 4: Console.WriteLine("您输入的数字对应的内容是:星期四"); break; case 5: Console.WriteLine("您输入的数字对应的内容是:星期五"); break; case 6: Console.WriteLine("您输入的数字对应的内容是:星期六"); break; case 7: Console.WriteLine("您输入的数字对应的内容是:星期天"); break; default: Console.WriteLine("输入错误!"); break; } Console.ReadKey(); } } }
1 2 请输入一个数字(1-7)>>>:7 您输入的数字对应的内容是:星期天
实验7:if语句和switch分支结构
使用if语句和switch语句输出下面的分段函数
switch语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 using System; namespace ConsoleApp2 { class Program { static void Main(string[] args) { int salary = 0; int c = 0; double f = 0; Console.Write("请输入salary的值:"); String s = Console.ReadLine(); salary = int.Parse(s); if(salary>1500) { c = 15; } else { c = (salary - 1) / 100; } switch(c) { case 0: case 1: case 2: case 3: f = 0.5 / 100 * salary; break; case 4: case 5: f = 1.0 / 100 * salary; break; case 6: case 7: f = 1.5 / 100 * salary; break; case 8: case 9: case 10: case 11: case 12: case 13: case 14: f = 2.0 / 100 * salary; break; case 15: f = 3.0 / 100 * salary; break; } Console.WriteLine("f={0}", f); Console.ReadKey(); } } }
1 2 请输入salary的值:99999 f=2999.97
if语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 using System; namespace ConsoleApp2 { class Program { static void Main(string[] args) { int salary = 0; double f = 0; Console.Write("请输入salary的值:"); String s = Console.ReadLine(); salary = int.Parse(s); if(salary>0&&salary<=400) { f = 0.5 / 100 * salary; } else if(salary > 400 && salary <= 600) { f = 1.0 / 100 * salary; } else if (salary > 600 && salary <= 800) { f = 1.5 / 100 * salary; } else if (salary > 800 && salary <= 1500) { f = 2.0 / 100 * salary; } else { f = 3.0 / 100 * salary; } Console.WriteLine("f={0}", f); Console.ReadKey(); } } }
1 2 请输入salary的值:99999 f=2999.97