首页 > 其他分享 >12.15

12.15

时间:2024-12-31 10:34:54浏览次数:1  
标签:case Console int double 12.15 static WriteLine

一、实验目的

1. 熟悉Visual Stido.NET 实验环境;

2. 掌握控制台程序的编写方法;

3. 掌握C#程序设计语言的语法基础;

4. 掌握控制语句和数组的使用。

二、实验要求

  根据题目要求,编写 C#程序,并将程序代码和运行结果写入实验报告。

三、实验内容

由于没有事先看清实验要求,我将实验一的五个实验写到了一个程序内并能循环运行,所以这里先附上代码,每个实验会单独截图

// See https://aka.ms/new-console-template for more information

//Console.WriteLine("Hello, World!");

using System;

 

class Program

{

    static void Main()

    {

        while (true)

        {

            Console.WriteLine("请选择实验内容:");

            Console.WriteLine("    1.计算边长面积");

            Console.WriteLine("    2.判断月份");

            Console.WriteLine("    3.最少鸡蛋数量");

            Console.WriteLine("    4.奇数和与偶数和");

            Console.WriteLine("    5.二维数组鞍点");

            Console.WriteLine("****输入0以退出程序****");

            int choice = int.Parse(Console.ReadLine());

 

            switch (choice)

            {

                case 0:

                    return;

                case 1:

                    test1();

                    break;

                case 2:

                    test2();

                    break;

                case 3:

                    test3();

                    break;

                case 4:

                    test4();

                    break;

                case 5:

                    test5();   

                    break;

                default:

                    Console.WriteLine("无效的选择");

                    break;

            }

 

           

        }

 

    }

 

    static void test1()

    {

        Console.WriteLine("请选择形状(1. 三角形  2. 长方形):");

        int choice1 = int.Parse(Console.ReadLine());

 

        switch (choice1)

        {

            case 1:

                ProcessTriangle();

                break;

            case 2:

                ProcessRectangle();

                break;

            default:

                Console.WriteLine("无效的选择");

                break;

        }

 

        //Console.ReadLine(); // 保持控制台窗口打开

    }

    static void ProcessTriangle()

    {

        Console.WriteLine("请输入三角形的三边长:");

        double sideA = double.Parse(Console.ReadLine());

        double sideB = double.Parse(Console.ReadLine());

        double sideC = double.Parse(Console.ReadLine());

 

        double perimeter = sideA + sideB + sideC;

 

        // 使用海伦公式计算三角形面积

        double s = perimeter / 2;

        double area = Math.Sqrt(s * (s - sideA) * (s - sideB) * (s - sideC));

 

        Console.WriteLine($"三角形的周长为: {perimeter}");

        Console.WriteLine($"三角形的面积为: {area}");

    }

 

    static void ProcessRectangle()

    {

        Console.WriteLine("请输入长方形的长度和宽度:");

        double length = double.Parse(Console.ReadLine());

        double width = double.Parse(Console.ReadLine());

 

        double perimeter = 2 * (length + width);

        double area = length * width;

 

        Console.WriteLine($"长方形的周长为: {perimeter}");

        Console.WriteLine($"长方形的面积为: {area}");

    }

 

 

    static void test2()

    {

        Console.WriteLine("请输入月份(1-12):");

        int month = int.Parse(Console.ReadLine());

 

        string season = GetSeason(month);

 

        if (season != null)

        {

            Console.WriteLine($"该月份处于{season}季节。");

        }

        else

        {

            Console.WriteLine("无效的月份。");

        }

 

       // Console.ReadLine();

    }

 

    static string GetSeason(int month)

    {

        switch (month)

        {

            case 1:

            case 2:

            case 12:

                return "冬季";

            case 3:

            case 4:

            case 5:

                return "春季";

            case 6:

            case 7:

            case 8:

                return "夏季";

            case 9:

            case 10:

            case 11:

                return "秋季";

            default:

                return null;

        }

    }

 

 

    static void test3()

    {

        int eggs = FindMinimumEggs();

        Console.WriteLine($"这篮鸡蛋至少有 {eggs} 个。");

    }

    static int FindMinimumEggs()

    {

        int eggs = 2;

 

        while (true)

        {

            if (CheckConditions(eggs))

            {

                return eggs;

            }

 

            eggs ++; // 优化:每次递增4,因为条件是每4个数为一个循环

        }

    }

    static bool CheckConditions(int n)

    {

        return n % 2 == 1 && n % 3 == 1 && n % 4 == 1;

    }

 

 

    static void test4()

    {

        Console.WriteLine("请输入整数数组(以空格分隔):");

        string input = Console.ReadLine();

 

        // 将输入字符串拆分成整数数组

        int[] numbers = Array.ConvertAll(input.Split(' '), int.Parse);

 

        int oddSum = CalculateSum(numbers, true);

        int evenSum = CalculateSum(numbers, false);

 

        Console.WriteLine($"奇数之和: {oddSum}");

        Console.WriteLine($"偶数之和: {evenSum}");

    }

    static int CalculateSum(int[] array, bool isOdd)

    {

        int sum = 0;

 

        foreach (var number in array)

        {

            if (isOdd && number % 2 != 0)

            {

                sum += number;

            }

            else if (!isOdd && number % 2 == 0)

            {

                sum += number;

            }

        }

 

        return sum;

    }

 

 

    static void test5()

    {

        Console.WriteLine("请输入二维数组的行数和列数(以空格分隔):");

        string[] sizes = Console.ReadLine().Split(' ');

 

        int rows = int.Parse(sizes[0]);

        int cols = int.Parse(sizes[1]);

 

        int[,] matrix = new int[rows, cols];

 

        Console.WriteLine($"请输入 {rows} 行 {cols} 列的二维数组元素(以空格分隔):");

 

        // 获取用户输入的二维数组元素

        for (int i = 0; i < rows; i++)

        {

            string[] elements = Console.ReadLine().Split(' ');

 

            for (int j = 0; j < cols; j++)

            {

                matrix[i, j] = int.Parse(elements[j]);

            }

        }

 

        FindSaddlePoint(matrix);

    }

    static void FindSaddlePoint(int[,] matrix)

    {

        int rows = matrix.GetLength(0);

        int cols = matrix.GetLength(1);

        bool found = false;

 

        for (int i = 0; i < rows; i++)

        {

            int maxInRow = matrix[i, 0];

            int colIndex = 0;

 

            // 找到行中的最大值

            for (int j = 1; j < cols; j++)

            {

                if (matrix[i, j] > maxInRow)

                {

                    maxInRow = matrix[i, j];

                    colIndex = j;

                }

            }

 

            // 检查最大值是否为列中的最小值

            bool isSaddlePoint = true;

            for (int k = 0; k < rows; k++)

            {

                if (matrix[k, colIndex] < maxInRow)

                {

                    isSaddlePoint = false;

                    break;

                }

            }

 

            // 如果是鞍点,输出位置和值

            if (isSaddlePoint)

            {

                Console.WriteLine($"鞍点位置: ({i + 1}, {colIndex + 1}), 值: {maxInRow}");

                found = true;

            }

        }

 

        if (!found)

        {

            Console.WriteLine("数组中不存在鞍点。");

        }

    }

}

 

  1. 编写一个控制台应用程序,输入三角形或者长方形边长,计算其周长和面积并输出。

 

 

2.编写一个控制台应用程序,可根据输入的月份判断所在季节。

 

3. 编写程序,用 while 循环语句实现下列功能:有一篮鸡蛋,不止一个,有人两个两

个数,多余一个,三个三个数,多余一个,再四个四个地数,也多余一个,请问这篮鸡蛋至

少有多少个。

 

4.编写程序,计算数组中奇数之和和偶数之和。

 

5. 编写程序,找一找一个二维数组中的鞍点(即该位置上的元素值在行中最大,在该

列上最小。有可能数组没有鞍点)。要求:

u   二维数组的大小、数组元素的值在运行时输入;

u   程序有友好的提示信息。

 

四、实验总结

控制台程序基本使用起来和之前学过的C++很像,可以轻松上手,中途遇到的第一个问题是程序的结合,也就是多个实验汇总到一个程序,因为我嫌弃每个实验都弄一个程序太麻烦,用到了之前用过的while循环,之后的几个实验出现的问题主要集中在输入上,学习了一下C#如何一次性输入未知大小的数组,整个实验就结束了。需要注意的是程序还有bug,比如说数组最后多输入了一个空格就会报错的问题,目前还没找到好的解决办法。

标签:case,Console,int,double,12.15,static,WriteLine
From: https://www.cnblogs.com/luoqingci/p/18643370

相关文章

  • 12.15博客 备战java13
    今天学习单表的增删改查中的删除操作建立数据库连接。构建DELETE语句的PreparedStatement对象,通过占位符指定要删除记录的条件(这里以ID作为条件)。执行executeUpdate方法来执行删除操作,依据返回的受影响行数判断删除是否成功。关闭相关资源,完成整个删除操作流程。我写......
  • 2024.12.15-2024.12.22
    物理快期末了,真是狂拉进度,考试不重要的就没有细细学了主要学了振荡,然后学了一点波,振荡是波的基础算法补周赛题真是收益良多啊题解1.动态规划的转移顺序,也可以尝试逆序转移2.线段树的理解更深一层,怎么定义节点信息,push_down,父节点子节点的关系,最重要的怎么实现离散化思......
  • AIGC时代算法工程师的面试秘籍(第二十八式2024.12.2-12.15) |【三年面试五年模拟】
    写在前面【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试经验,力求让读者在获得心仪offer的同时,增强技术基本面。欢迎大家关注Rocky的公众号:WeThinkIn欢迎大家关注Rocky的知乎:RockyDingAIGC算法工程师面试面经秘籍分享:WeThi......
  • C#/.NET/.NET Core技术前沿周刊 | 第 17 期(2024年12.09-12.15)
    前言C#/.NET/.NETCore技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NETCore领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等......
  • 11.25~12.15 总结
    题目有点多,这里就不写算法相关内容了(其实也没搞完)。NOIP前主要为了增加一点调试能力去写了大模拟,但是好像用处不是很大。NOIP场上主要的问题是半场开始比较懈怠,以及没有严格测试程序(虽然这次运气比较好没有挂T3和T2的大部分分数)。必须在Linux下测试程序和所有大样例。场......
  • 12.15学习总结
    1.写了篇英语作文 2.学习~  3.备考晚上周测 4.dfs经典例题(迷宫)学习5.晒太阳咯 ......
  • C#/.NET/.NET Core技术前沿周刊 | 第 17 期(2024年12.09-12.15)
    前言C#/.NET/.NETCore技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NETCore领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等。......
  • 上周热点回顾(12.9-12.15)
    热点随笔:· 重磅推出SdcbChats:一个全新的开源大语言模型前端 (.NET骚操作)· C#委托的前世今生 (付工上位机)· 关于服务器挖矿处理思路 (淡黄的cherry)· .NET静态代码编织——肉夹馍(Rougamo)5.0 (nigture)· 记一次.NET某差旅系统CPU爆高分析 (一线码农)· 一套......
  • 12.15学习总结
    据说 20122012 的灾难和太阳黑子的爆发有关。于是地球防卫小队决定制造一个特殊防护伞,挡住太阳黑子爆发的区域,减少其对地球的影响。由于太阳相对于地球来说实在是太大了,我们可以把太阳表面看作一个平面,中心定为 (0,0)(0,0)。根据情报,在 20122012 年时,太阳表面上会产生 NN......
  • Diary - 2024.12.15
    堂堂复活!!!今天是thupc初赛!!!10题,感觉打的有点倒闭,问了问上届参赛的说有希望。这下要靠狗运了,我想去北京玩!!!!!感觉我就是全队最摆的,就写了几个简单题。剩下的我是纯口胡,代码全给队友了,怎么会是呢。前天对昨天的幻想:做完补课的作业,然后开始复健oi,赢!实际的昨天:20:04(qq)我:......