c#计算机语言常见题(使用switch语句将所有题连接)

1、求正整数的阶乘(10分)见题末

输入一个正整数n,分别用for 、while、do...while三种不同的方法求其阶乘。

2、显示Fibonacci数列(10分)见题末

打印出Fibonacci数列,要求每行显示5项,当Fibonacci的值大于10000时停止显示。

3、鸡兔同笼求解(10分)见题末

由用户输入鸡和兔的总数量h,鸡和兔的总脚数f,判断用户输出的h和f是否正确,之后根据h和f 的值分别输出鸡和兔的数量。用二种不同方法求解(方程法和穷举法)。

4、百钱买百鸡求解(10分)见题末

公鸡5元一只,母鸡3元一只,小鸡一元3只,100元钱买100只鸡(要求公鸡、母鸡和小鸡都要有),求解每类鸡的数量。

5、猴子吃桃求解(10分)见题末

  猴子第一天摘下若干个桃子,当天吃掉一半多一个;第二天接着吃掉剩下桃子的一半多一个;以后每天都吃了前一天剩下桃子的一半多一个。到第8天的时候,只剩下了一个桃子。请问猴子第一天共摘了多少个桃子。

6、超市找零钱方案(10分)见题末

输入需要找零的金额,计算出该金额可以由哪些面额的人民币组成,输出找零钱的最佳方案。(找零方案中需要找出的钱币数量最少的为最佳)

7、计算距离(10分)见题末

一个小球从100m的高度自由落下,每次落地后反弹回原来高度的一半,再落下。求小球在第10次落地时,共经过多少米?第10次反弹多高?

8、求两个正整数的最大公约数(10分)见题末

用随机函数生成两个五位数的正整数,采用辗转相除法,求出它们的最大公约数和最小公倍数。

9、求数列的和(10分)见题末

随机产生一个1-9(包括1和9)的整数a,再随机产生一个5-10(包括5和10)的整数。求数列Sa=a+aa+aaa+…+a…a(n个a)

10、用数组存储矩阵,实现矩阵乘法的运算(10分)见题末

要求:由用户输入正整数m,n,p(均要求小于5),计算机用10以内的随机数生成m行p列的矩阵A和p行n列的矩阵B, 然后计算求出矩阵C=AXB,最后分别按矩阵的排列方式输出矩阵A,B,C。

using System;

namespace ch08
{
      public class Program
    {
        static void Main(string[] args)
        {            
            Console.WriteLine("1.求正整数的阶乘\n2.显示Fibonacci数列\n3.鸡兔同笼求解\n4.百钱买百鸡求解\n5.猴子吃桃求解\n6.超市找零钱方案\n7.计算距离\n8.求两个正整数的最大公约数\n9.求数列的和\n10.用数组存储矩阵,实现矩阵乘法的运算");
            
            for (int o = 1; o <= 20; o++) {  
            Console.Write("请选择你的题目:");
            int i = int.Parse(Console.ReadLine());
                if (i > 10 && i < 0)
                {
                    Console.WriteLine("你是来捣乱的吧?");
                }
                else
                    switch (i)
                    {
                        case 1:
                            A.jiecheng();
                            break;
                        case 2:
                            B.fibo();
                            break;
                        case 3:
                            C.jitu();
                            break;
                        case 4:
                            D.baiji();
                            break;
                        case 5:
                            E.monkey();
                            break;
                        case 6:
                            F.shopping();
                            break;
                        case 7:
                            G.juli();
                            break;
                        case 8:
                            H.gy();
                            break;
                        case 9:
                            I.qiuhe();
                            break;
                        case 10:
                            J.juz();
                            break;

                    }

            }
            Console.WriteLine("任意键退出");
            Console.ReadKey();
        }
    }
    class A
    {
        public static void jiecheng()
        {
            Console.Write("请输入一个正整数n,稍后为你求出其阶乘:");
            int n = 1;
            int i = 1;
            
            string shuru = Console.ReadLine();
            int zhong = short.Parse(shuru);
            for ( i = 1; i <= zhong; i++)
            {
                n = n * i;
            }
            Console.WriteLine("{0}", n);
            Console.WriteLine("任意键后使用while语句再次求值:");
            Console.ReadKey();           
            while (i <= zhong)
            {
                n = n * i;
                i++;
            }
            Console.WriteLine("{0}", n);
            Console.WriteLine("任意键后退出");
            Console.ReadKey();
        }
    } 
    
    class B
    {
        public static void fibo()
        {
                int f1 = 1, f2 = 1;
                for (int i = 1; f2 <10000; i++)
                {
                    Console.Write("{0,5}\t{1,5}\t",f1,f2);
                    if (i % 5 == 0) 
                    Console.WriteLine();
                    f1 += f2;   f2 += f1;
                }
        }
    }
    class C
    {
        public static void jitu()
        {
            Console.WriteLine("按任意键进入方程法");
            Console.ReadKey();
            Console.WriteLine("请输入鸡兔的总数:");
            int y = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入鸡兔的总腿:");
            int x = int.Parse(Console.ReadLine());
            int j, t;
           j = (4*y-x)/2;
            t = y-j;
            if (x % 2 != 0 || j < 0 || t < 0)
            {
                Console.WriteLine("输入的量有问题");
            }
            else
            {
                Console.WriteLine("鸡有{0},兔有{1}",j,t);
            
            Console.WriteLine("按任意键进入穷举法");
            Console.ReadKey();
            bool qiong = false;
            int xj = 0, xt = 0;
            for (int i = 1; i <= y; i++)
            {
                if (2 * i + 4 * (y - i) == x)
                {
                    xj = i;xt = y- i;
                    qiong = true;
                }
            }
            if (qiong)
            {
                Console.WriteLine("鸡有{0},兔有{1}", xj, xt);
            }
            }
        }
    }
    class D
    {
        public static void baiji()
        {
            int gong, mu, xiao;
            int sum=100, allmoney=100;
            for (gong = 1; gong <= 20; gong++)
            {
                for (mu = 1; mu <= 33; mu++)
                {
                        xiao = sum - gong - mu;
                        if (xiao % 3 != 0) continue;

                    int money = gong * 5 + mu * 3 + xiao / 3;
                    if (money == allmoney)
                    {
                        Console.WriteLine("公鸡若有{0}只,则母鸡有{1},小鸡有{2}", gong, mu, xiao);
                        Console.WriteLine("任意键继续");
                        Console.ReadKey();
                    }
                }
            }
            
            
        }
    }
    class E
    {
        public static void monkey()
        {
            int o = 1;
            for (int i = 1; i <= 8; i++)
            {
                o = o * 2 + 1;
            }
            Console.WriteLine("一共有{0}个桃子", o);
        }
    }
    class F
    {
        public static void shopping()
        {
            Console.WriteLine("请输入找零金额:");
            int money = int.Parse(Console.ReadLine());
            if (money == 0)
            {
                Console.WriteLine("不需要找零。");
                return;
            }
                int hundred = money / 100;
                money %= 100;
                int fifty = money / 50;
                money %= 50;
                int twenty = money / 20;
                money %= 20;
                int ten = money / 10;
                money %= 10;
                int five = money / 5;
                money %= 5;
                int one = money / 1;
                money %= 1;
            Console.WriteLine("100元需要{0}张,50元需要{1}张,20元需要{2}张,10元需要{3}张,5元需要{4}张,1元需要{5}张", hundred, fifty, twenty, ten, five, one);
        }
    }
    class G
    {
        public static void juli()
        {
            double t;
            double sum =100;
            for (int i = 1; i <= 10; i++)
            {
                t = 100 *  Math.Pow(0.5,i);
                sum += t;
              Console.WriteLine("高度为{0},{1}", t, sum);   
            }           
            Console.ReadKey();
        }
    }
    class H
    {            
         static int GCD(int m, int n)
        {            
            int r, t;
            if (m < n)
            {
                t = n;
                n = m;
                m = t;
            }
            while (n != 0)
            {
                r = m % n;
                m = n;
                n = r;
            }
            return (m);           
        }
        public static void gy()
        {
            int yy;
            Random ran = new Random();
            int num2 = ran.Next(10000, 99999);
           int num1 = ran.Next(10000, 99999);
            num2 = Convert.ToInt32(Console.ReadLine());
            yy = GCD(num1, num2);
            Console.WriteLine("最大公约数为:{0} 最小公倍数为{1}",yy,num1* num2/ yy);
            Console.ReadKey();
        }
    }
    class I
    {
        public static void qiuhe()
        {
            Random ran = new Random();
            int a = ran.Next(1, 9);
            int n = ran.Next(5, 10);
            int Sa = 0, now = 0;
            for (int i = 1; i <= n; i++)
            {
                now = now * 10 + a;
                Sa += now;
            }
            Console.WriteLine("生成的a为{0},生成的n为{1},数列的和Sa为 {2}", a, n, Sa);
        }
    }
    class J
    {
        public static void juz()
        {
            Console.WriteLine("请输入正整数m:");
            int m = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入正整数n:");
            int n = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入正整数p:");
            int p = int.Parse(Console.ReadLine());
            if (m < 5 && n < 5 && p < 5)
            {
                    int[,] a = new int[10, 10];
                    int[,] b = new int[10, 10];
                    int[,] c = new int[10, 10];
                  
                    Random ran = new Random();
                    for (int i = 1; i <= m; i++)
                    {
                        for (int j = 1; j <= p; j++)
                        {
                            a[i, j] = ran.Next(0, 10);
                        }
                    }
                    Console.WriteLine("生成的A数组为:");
                    for (int i = 1; i <= m; i++)
                    {
                        for (int j = 1; j <= p; j++)
                        {
                            Console.Write("{0} ", a[i, j]);
                        }
                        Console.WriteLine("");
                    }
                    for (int i = 1; i <= p; i++)
                    {
                        for (int j = 1; j <= n; j++)
                        {
                            b[i, j] = ran.Next(0, 10);
                        }
                    }
                    Console.WriteLine("生成的B数组为:");
                for (int i = 1; i <= p; i++)
                {
                    for (int j = 1; j <= n; j++)
                    {
                        Console.Write("{0} ", b[i, j]);
                    }
                    Console.WriteLine("");
                }
                for (int i = 1; i <= m; i++)
                {
                    for (int j = 1; j <= n; j++)
                    {
                        for (int k = 1; k <= p; k++)
                        {
                            c[i, j] += a[i, k] * b[k, j];
                        }
                    }
                }
                Console.WriteLine("得到的C数组为:");
                for (int i = 1; i <= m; i++)
                {
                    for (int j = 1; j <= n; j++)
                    {
                        Console.Write("{0} ", c[i, j]);
                    }
                    Console.WriteLine("");
                }

            }
            else
            {
                Console.WriteLine("请输入5以内的数字");
            }                 
            Console.WriteLine("任意键结束");
            Console.ReadKey();
        }


    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值