C#实例练习2:程序流程控制(1)

个人学习笔记, 如有错误之处,还请各位大佬批评指正!

参考书籍:《C#程序设计实验指导与习题测试》

笔记同步发表在我的个人博客上,欢迎访问!传送门


实验目的

  • 掌握常量和变量的使用
  • 掌握运算符和表达式的使用
  • 掌握赋值语句的使用
  • 掌握顺序结构的程序流程
  • 掌握单分支语句的使用
  • 掌握双分支语句的使用
  • 掌握多分支语句的使用


实验1:常量、变量、运算符、表达式和赋值语句的使用

输出半径,求对应圆的周长、面积,对应球体的体积。

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();
            //等待用户输入,目的是使程序"停下来"
        }
    }
}
请输入半径:5
圆的半径为:5
圆的周长是:31.4159
圆的面积是:78.53975
对应球体的体积是:392.69874999999996

实验2:求三角形的周长和面积

输入三角形的三条边,先判断是否可以构成三角形,如果可以,则求三角形的周长和面积,否则报错。

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();
        }
    }
}
请输入三角形的第一条边a:1
请输入三角形的第二条边b:1
请输入三角形的第三条边c:3
无法构成三角形!
请输入三角形的第一条边a:10
请输入三角形的第二条边b:24
请输入三角形的第三条边c:26
三角形的三条边分别为a=10, b=24, c=26
三角形的周长为60
三角形的面积为120
请输入三角形的第一条边a:10.2
请输入三角形的第二条边b:25.5
请输入三角形的第三条边c:33.3
三角形的三条边分别为a=10.2, b=25.5, c=33.3
三角形的周长为69
三角形的面积为95.15345500821303

实验3:分段函数的实现

输入x,根据如下公式计算分段函数y的值

y = { x 2 − 3 x x + 1 + 2 π + sin ⁡ x x ⩾ 0 ln ⁡ ( − 5 x ) + 6 ∣ x ∣ + e 4 − ( x + 1 ) 3 x < 0 y=\left\{\begin{array}{ll} \frac{x^{2}-3 x}{x+1}+2 \pi+\sin x & x \geqslant 0 \\ \ln (-5 x)+6 \sqrt{|x|+\mathrm{e}^{4}}-(x+1)^{3} & x<0 \end{array}\right. y={x+1x23x+2π+sinxln(5x)+6x+e4 (x+1)3x0x<0

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();
        }
    }
}
请输入x的值: 5
方法一:y=6.990927699183115
方法二:y=6.990927699183115
方法三:y=6.990927699183115
方法四:y=6.990927699183115

实验4:三个数比较大小

产生三个0~100(包含0和100)的随机数a,b,c,按从小到大的顺序排序后输出

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();
        }
    }
}   
原始值: a=15, b=59, c=56
从小到大排序后: a=15, b=56, c=59

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();
        }
    }
} 
原始值: 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 ax2+bx+c=0的方程)

分析:

方程 a x 2 + b x + c = 0 a x^{2}+b x+c=0 ax2+bx+c=0 的解有以下几种情况 :
(1) a = 0 a=0 a=0 b = 0 , b=0, b=0, 无解
(2) a = 0 a=0 a=0 b ! = 0 , b !=0, b!=0, 有一个实根 : x = − c b : x=-\frac{c}{b} :x=bc
(3) b 2 − 4 a c = 0 , b^{2}-4 a c=0, b24ac=0, 有两个相等实根 : x 1 = x 2 = − b 2 a x_{1}=x_{2}=-\frac{b}{2 a} x1=x2=2ab
(4) b 2 − 4 a c > 0 , b^{2}-4 a c>0, b24ac>0, 有两个不等实根 : x 1 = − b + b 2 − 4 a c 2 a , x 2 = − b − b 2 − 4 a c 2 a : x_{1}=\frac{-b+\sqrt{b^{2}-4 a c}}{2 a}, x_{2}=\frac{-b-\sqrt{b^{2}-4 a c}}{2 a} :x1=2ab+b24ac ,x2=2abb24ac
(5) b 2 − 4 a c < 0 , b^{2}-4 a c<0, b24ac<0, 有两个共地复根 : x 1 = − b 2 a + 4 a c − b 2 2 a i , x 2 = − b 2 a − 4 a c − b 2 2 a i : 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}_{} :x1=2ab+2a4acb2 i,x2=2ab2a4acb2 i

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            double a, b, c;//存放方程的三个系数
            double x1, x2;//存放实数解
            double realPart, imagPart;//存放虚数解中的实部和虚部
            double dlt;//存放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);
                }
            }
        }
    }
}
请输入系数a: 0
请输入系数b: 0
请输入系数c: 6
方程无解!
请输入系数a: 0
请输入系数b: 1
请输入系数c: 2
此方程的解为:-21
请输入系数a: 1
请输入系数b: -2
请输入系数c: 1
此方程有两个相等的实根为:1
请输入系数a: 1
请输入系数b: -1
请输入系数c: -6
此方程有两个不等式根,分别是3-2
请输入系数a: 1
请输入系数b: -1
请输入系数c: 0.5
方程有两个虚根分别是0.5+0.5i 和 0.5-0.5i

实验6:switch语句实现多重分支结构

输入一个数字(1~7),对应输出内容(星期一 ~ 星期天)

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-7>>>:0
输入错误!
请输入一个数字(1-7>>>:7
您输入的数字对应的内容是:星期天

实验7:if语句和switch分支结构

使用if语句和switch语句输出下面的分段函数值

  f = { 0.5 % ∗  salary   salary  ⩽ 400 1 % ∗  salary  401 ⩽  salary  ⩽ 600 1.5 % ∗  salary  601 ⩽  salary  ⩽ 800 2 % ∗  salary  801 ⩽  salary  ⩽ 1500 3 % ∗  salary   salary  > 1500 \text { } f=\left\{\begin{array}{ll} 0.5 \% * \text { salary } & \text { salary } \leqslant 400 \\ 1 \% * \text { salary } & 401 \leqslant \text { salary } \leqslant 600 \\ 1.5 \% * \text { salary } & 601 \leqslant \text { salary } \leqslant 800 \\ 2 \% * \text { salary } & 801 \leqslant \text { salary } \leqslant 1500 \\ 3 \% * \text { salary } & \text { salary }>1500 \end{array}\right.  f=0.5% salary 1% salary 1.5% salary 2% salary 3% salary  salary 400401 salary 600601 salary 800801 salary 1500 salary >1500

switch语句

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();
        }
    }
}
请输入salary的值:666
f=9.99
请输入salary的值:99999
f=2999.97

if语句

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();
        }
    }
}

            
请输入salary的值:666
f=9.99
请输入salary的值:99999
f=2999.97
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实验二 C#程序设计练习 一、实验目的 1.掌握C#语言的基本语法、控制语句及异常处理。 2.掌握C#类的基本使用方法以及C#语言面向对象的基本特性。 二、实验内容 1.编写一个函数,用于计算1!+2!+3!+4!+5!,在控制台或页面输出运行结果。 2.在控制台或页面输出九九乘法表。 3.输入10个以内的整数,输出该组整数的降序排列,要求采用数组实现。 4.计算两个数的商,在控制台或页面输出结果,要求包含异常处理。 5.定义一个汽车类,该类具有重量和速度属性;再定义一个跑车类,该类继承汽车类的属性,并拥有自己的颜色属性;然后声明一个汽车类的对象和一个跑车类的对象,并把它们的属性输出到控制台上。 6.假设某动物园管理员每天需要给他所负责饲养的狮子、猴子和鸽子喂食。请用一个程序来模拟他喂食的过程。 要求: (1)饲养员喂食时,不同动物执行不同的吃的功能,例如狮子吃肉、猴子吃香蕉、鸽子吃大米等。 (2)饲养员喂动物时,不能使用判断语句判断动物类型。 (3)使用虚方法或抽象方法实现喂养不同动物的多态,不能使用方法重载。 提示:需要建一个动物类,动物类有一个虚的或抽象的吃方法,动物类下面有几个子类,不同的子类重写父类的吃方法。饲养员类提供喂食方法。然后,在Main方法中一一调用吃的方法。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Add2._1 { class Program { static void Main(string[] args) { int sum = 0; for (int i = 1; i < 6; i++) { int tmp = 1; for (int j = 1; j <= i; j++) { tmp = tmp * j; } sum += tmp; } Console.WriteLine("1!+2!+3!+4!+5!={0}\r\n", sum.ToString()); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小孙同学Coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值