前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#实例练习3:程序流程控制(2)

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

作者头像
小孙同学
发布2022-01-17 15:18:51
4450
发布2022-01-17 15:18:51
举报
文章被收录于专栏:小孙同学的学习笔记

实验1:求n!

输入整数n,分别利用for循环、while循环、do…while循环求n!

for循环语句

代码语言:javascript
复制
using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 0;
            int i = 1;
            int ret = 1;

            Console.Write("请输入整数n的值,我来计算n的阶乘 >>>: ");
            String s = Console.ReadLine();
            n = int.Parse(s);

            for(i=1;i<=n;i++)
            {
                if (n == 0)
                {
                    Console.WriteLine("0!=1");
                }
                else
                {
                    ret *= i;
                }
            }
            Console.WriteLine("{0}!={1}", n, ret);
            Console.ReadKey();
        }
    }
}
代码语言:javascript
复制
请输入整数n的值,我来计算n的阶乘 >>>: 0
0!=1
代码语言:javascript
复制
请输入整数n的值,我来计算n的阶乘 >>>: 3
3!=6

while循环

代码语言:javascript
复制
using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 0;
            int i = 1;
            int ret = 1;

            Console.Write("请输入整数n的值,我来计算n的阶乘 >>>: ");
            String s = Console.ReadLine();
            n = int.Parse(s);

            while(i<=n)
            {
                if (n == 0)
                {
                    Console.WriteLine("0!=1");
                    break;
                }
                else
                {
                    ret *= i;
                }

                i++;
            }

            Console.WriteLine("{0}!={1}", n, ret);
            Console.ReadKey();
        }
    }
}
代码语言:javascript
复制
请输入整数n的值,我来计算n的阶乘 >>>: 5
5!=120

do…while循环

代码语言:javascript
复制
using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 0;
            int i = 1;
            int ret = 1;

            Console.Write("请输入整数n的值,我来计算n的阶乘 >>>: ");
            String s = Console.ReadLine();
            n = int.Parse(s);

            do
            {
                if (n == 0)
                {
                    Console.WriteLine("0!=1");
                    break;
                }
                else
                {
                    ret *= i;
                }

                i++;
            }
            while (i <= n);

            Console.WriteLine("{0}!={1}", n, ret);
            Console.ReadKey();
        }
    }
}
代码语言:javascript
复制
请输入整数n的值,我来计算n的阶乘 >>>: 4
4!=24

实验2:输出斐波那契数列

输入斐波那契数列,1,1,2,3,5…当值大于10000时停止显示,每行显示5项

代码语言:javascript
复制
using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            int n1 = 1;
            int n2 = 1;
            int next = 2;
            int flag = 0;

            while(n1 <= 10000)
            {
                Console.Write("{0}\t",n1);
                flag++;

                next = n1 + n2;
                n1 = n2;
                n2 = next;

                if (flag % 5 == 0)
                {
                    Console.WriteLine();
                }
            }
            Console.ReadKey();
        }
    }
}
代码语言:javascript
复制
1       1       2       3       5
8       13      21      34      55
89      144     233     377     610
987     1597    2584    4181    6765

实验3:鸡兔同笼问题

一个笼子里总共有h只鸡和兔,鸡和兔的总脚数为f,h,f由用户输入,求鸡和兔各有多少只

$$

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.

$$

代码语言:javascript
复制
using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            //设鸡有i只,兔有j只
            //i+j=h;2i+4j=f;
            int i, j, h, f;

            Console.Write("请输入鸡和兔子共有多少只: ");
            String s = Console.ReadLine();
            h = int.Parse(s);
            Console.Write("请输入共有多少只脚(必须是偶数): ");
            s = Console.ReadLine();
            f = int.Parse(s);

            while(f%2!=0)
            {
                Console.WriteLine("脚的个数必须是偶数!请重新输入!");
                Console.Write("请输入共有多少只脚(必须是偶数): ");
                s = Console.ReadLine();
                f = int.Parse(s);
            }

            bool solution = false;//判断是否有解

            for(i=0;i<=h;i++)
            {
                for(j=0;j<=h;j++)
                {
                    if((i+j==h)&&((2*i+4*j)==f))
                    {
                        Console.WriteLine("鸡有{0}只,兔有{1}只", i, j);
                        solution = true;
                    }
                }
            }

            if(!solution)
            {
                Console.WriteLine("无解!!!");
            }

            Console.ReadKey();
        }
    }
}
代码语言:javascript
复制
请输入鸡和兔子共有多少只: 3
请输入共有多少只脚(必须是偶数): 4
无解!!!
代码语言:javascript
复制
请输入鸡和兔子共有多少只: 26
请输入共有多少只脚(必须是偶数): 99
脚的个数必须是偶数!请重新输入!
请输入共有多少只脚(必须是偶数): 102
鸡有1只,兔有25只
代码语言:javascript
复制
请输入鸡和兔子共有多少只: 25
请输入共有多少只脚(必须是偶数): 66
鸡有17只,兔有8只
代码语言:javascript
复制
//解法二
using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            //设鸡有i只,兔有j只
            //i+j=h;2i+4j=f;
            int i, j, h, f;

            Console.Write("请输入鸡和兔子共有多少只: ");
            String s = Console.ReadLine();
            h = int.Parse(s);
            Console.Write("请输入共有多少只脚(必须是偶数): ");
            s = Console.ReadLine();
            f = int.Parse(s);

            while(f%2!=0)
            {
                Console.WriteLine("脚的个数必须是偶数!请重新输入!");
                Console.Write("请输入共有多少只脚(必须是偶数): ");
                s = Console.ReadLine();
                f = int.Parse(s);
            }

            bool solution = false;

            j = f / 2 - h;
            i = h - j;

            if(i>=0&&j>=0)
            {
                Console.WriteLine("鸡有{0},兔有{1}", i, j);
                solution = true;
            }

            if(!solution)
            {
                Console.WriteLine("无解!!!");
            }

            Console.ReadKey();
        }
    }
}

实验4:利用级数求π

代码语言:javascript
复制
using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            double pi = 0;
            double t = 1;
            double n = 1;
            int s = 1;
            
            while(Math.Abs(t)>=Math.Pow(10,-6))//精度
            {
                pi += 4*t;
                n += 2;
                s = -s;
                t = s / n;
            }
            Console.WriteLine("pi={0}", pi);
            Console.ReadKey();
        }
    }
} 
代码语言:javascript
复制
pi=3.141590653589692 

实验5:求最大公约数和最小公倍数

代码语言:javascript
复制
using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            int m, n, m1, n1;
            int i;

            //获得用户输入的两个数
            Console.Write("请输入第一个整数: ");
            String s = Console.ReadLine();
            m = int.Parse(s);
            Console.Write("请输入第二个整数: ");
            s = Console.ReadLine();
            n = int.Parse(s);

            /*生成两个范围在(0-100)的随机数的代码
            Random rNum = new Random();
            m = rNum.Next(0, 101);
            n = rNum.Next(0, 101);
            */

            //比较两个数的大小
            if (m<n)
            {
                m1 = m;
                n1 = n;
            }
            else
            {
                m1 = n;
                n1 = m;
            }

            //打印出排好序的两个数
            Console.WriteLine("您输入的这两个数分别是 {0} , {1}", m1, n1);

            //最大公约数的算法
            for(i=n1;;i--)
            {
                if(m1 % i == 0 && n1 % i == 0)
                {
                    Console.WriteLine("这两个数的最大公约数为 {0}", i);
                    break;
                }
            }
            
            //最小公倍数的算法
            for(i=m1;;i++)
            {
                if(i%m1==0&&i%n1==0)
                {
                    Console.WriteLine("这两个数的最小公倍数为 {0}", i);
                    break;
                }
            }

            Console.ReadKey();
        }
    }
}
代码语言:javascript
复制
请输入第一个整数: 25
请输入第二个整数: 5
您输入的这两个数分别是 5 , 25
这两个数的最大公约数为 5
这两个数的最小公倍数为 25
代码语言:javascript
复制
//随机数运行测试结果
您输入的这两个数分别是 49 ,70
这两个数的最大公约数为 7
这两个数的最小公倍数为 490

实验6:打印九九乘法表

上九九乘法表、下九九乘法表

代码语言:javascript
复制
using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, j;

            for(i=1;i<=9;i++)
            {
                for(j=1;j<=i;j++)
                {
                    Console.Write("{0}*{1}={2}\t", i, j, i * j);
                }

                Console.WriteLine();
            }

            Console.ReadKey();
        }
    }
}
代码语言:javascript
复制
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
5*1=5   5*2=10  5*3=15  5*4=20  5*5=25
6*1=6   6*2=12  6*3=18  6*4=24  6*5=30  6*6=36
7*1=7   7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49
8*1=8   8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64
9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81
代码语言:javascript
复制
using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, j;

            for(i=1;i<=9;i++)
            {
                for(j=1;j<=9;j++)
                {
                    if (i > j)
                    {
                        Console.Write("\t");
                    }
                    else
                    {
                        Console.Write("{0}*{1}={2}\t", i, j, i * j);
                    }
                }

                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
}
代码语言:javascript
复制
1*1=1   1*2=2   1*3=3   1*4=4   1*5=5   1*6=6   1*7=7   1*8=8   1*9=9
        2*2=4   2*3=6   2*4=8   2*5=10  2*6=12  2*7=14  2*8=16  2*9=18
                3*3=9   3*4=12  3*5=15  3*6=18  3*7=21  3*8=24  3*9=27
                        4*4=16  4*5=20  4*6=24  4*7=28  4*8=32  4*9=36
                                5*5=25  5*6=30  5*7=35  5*8=40  5*9=45
                                        6*6=36  6*7=42  6*8=48  6*9=54
                                                7*7=49  7*8=56  7*9=63
                                                        8*8=64  8*9=72
                                                                9*9=81

实验7:素数的判断

分别利用for循环和while循环显示1~100内所有的素数,每行显示十项

代码语言:javascript
复制
using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, k, n;
            bool flag;
            int count = 0;

            for(n=2;n<=100;n++)
            {
                flag = true;
                k = (int)Math.Sqrt(n);//根号下n,被除数的最大值

                for(i=2;i<=k;i++)
                {
                    if (n % i == 0)//符合条件的不是素数
                    {
                        flag = false;
                        break;
                    }
                }
                //while循环
                /*i = 2;
                while(i<=k)
                {
                    if (n % i == 0)//符合条件的不是素数
                    {
                        flag = false;
                        break;
                    }
                    i++;
                }*/

                if (flag)
                {
                    Console.Write("{0,3} ", n);
                    count++;
                    if (count % 10 == 0)
                    {
                        Console.WriteLine();
                    }
                }
            }

            Console.ReadKey();
        }
    }
}
代码语言:javascript
复制
 2   3   5   7  11  13  17  19  23  29
31  37  41  43  47  53  59  61  67  71
73  79  83  89  97

实验8:异常处理

输入任意两个整数,求两者的商,使用程序异常处理机制捕捉零除异常参数格式异常

代码语言:javascript
复制
using System;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, j, k;
            Console.Write("请输入被除数: ");
            String s = Console.ReadLine();
            i = int.Parse(s);
            Console.Write("请输入除数: ");
            s = Console.ReadLine();
            j = int.Parse(s);

            k = i / j;

            Console.WriteLine("{0}/{1}={2}", i, j, k);

            Console.ReadKey();
        }
    }
}
代码语言:javascript
复制
请输入被除数: 6
请输入除数: 0
Unhandled exception. System.DivideByZeroException: Attempted to divide by zero.
   at ConsoleApp3.Program.Main(String[] args) in J:\code\C#\ConsoleApp3\Program.cs:line 17
代码语言:javascript
复制
请输入被除数: 6
请输入除数: a
Unhandled exception. System.FormatException: Input string was not in a correct format.
   at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)
   at System.Number.ParseInt32(ReadOnlySpan`1 value, NumberStyles styles, NumberFormatInfo info)
   at System.Int32.Parse(String s)
   at ConsoleApp3.Program.Main(String[] args) in J:\code\C#\ConsoleApp3\Program.cs:line 15

起初我在测试时将除数和被除数的类型声明成了double型,为什么出现了下面这种情况???

代码语言:javascript
复制
请输入被除数: 6
请输入除数: 0
6/0=∞

到这里就结束了吗,没有,既然他算出来6/0=∞,呃…那我很想知道0/0=?,于是…???

代码语言:javascript
复制
请输入被除数: 0
请输入除数: 0
0/0=NaN
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实验1:求n!
  • 实验2:输出斐波那契数列
  • 实验3:鸡兔同笼问题
  • 实验4:利用级数求π
  • 实验5:求最大公约数和最小公倍数
  • 实验6:打印九九乘法表
  • 实验7:素数的判断
  • 实验8:异常处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档