2021/10/16

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

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

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

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

二、实验要求 

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

三、实验内容 

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace _20194020

{

    class Program

    {

        static void Main(string[] args)

        {

            int i; double t_1, t_2, t_3; double r_lenth, r_width; double cir, area;                        //三角形及长方形的变量等

            

            while (true)

            {

                Console.WriteLine("       1.三角形     2.长方形    3.退出          ");

                Console.WriteLine("请输入序号:");

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

                switch (i) {

                    case 1:                                     //三角形周长及面积算法

                        Console.WriteLine("请输入第一条边长:");//用户依次输入三个边长

                        t_1 = float.Parse(Console.ReadLine());

                        Console.WriteLine("请输入第二条边长:");

                        t_2 = float.Parse(Console.ReadLine());

                        Console.WriteLine("请输入第三条边长:");

                        t_3 = float.Parse(Console.ReadLine());//输入结束

                        cir = t_1 + t_2 + t_3;                //计算三角形周长及面积

                        area = Math.Sqrt(cir / 2 * (cir / 2 - t_1) * (cir / 2 - t_2) * (cir / 2 - t_3));//无法将double隐式转换为float,之前用的float类型的边长等,sqrt函数返回为double

                        Console.WriteLine("该三角形周长为:{0}",cir);

                        Console.WriteLine("该三角形面积为:{0}",area);

                        break;

                    case 2:                                    //长方形周长及面积算法

                        Console.WriteLine("请输入长方形的长:");//用户依次输入三个边长

                        r_lenth = float.Parse(Console.ReadLine());

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

                        r_width = float.Parse(Console.ReadLine());

                        cir = 2 * (r_lenth + r_width);        //长方形周长及面积

                        area = r_lenth * r_width;

                        Console.WriteLine("该长方形周长为:{0}", cir);

                        Console.WriteLine("该长方形面积为:{0}", area);

                        break;

                    case 3: Console.WriteLine("欢迎您的下次进入!!!"); break;

                    default: Console.WriteLine("输入错误!!!");break;

               }//switch结束

             if (i == 3) break; //判断用户是否退出系统

            }//while循环结束

        }

    }

}

 

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace _20194020

{

    class Program

    {

        static void Main(string[] args)

        {

            int i;

            Console.WriteLine("***********欢迎进入季节判断系统***************");

            while (true)

            {

                Console.WriteLine("菜单:");

                Console.WriteLine("           1.1月    2.2月    3.3月           ");

                Console.WriteLine("           4.4月    5.5月    6.6月           ");

                Console.WriteLine("           7.7月    8.8月    9.9月           ");

                Console.WriteLine("           10.10月  11.11月  12.12月         ");

                Console.WriteLine("           13.退出                           ");

                Console.WriteLine("请输入月份序号:");

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

                switch (i)

                {

                    case 3:

                    case 4:

                    case 5: Console.WriteLine("<<此月份在春季>>"); break;

                    case 6:

                    case 7:

                    case 8: Console.WriteLine("<<此月份在夏季>>"); break;

                    case 9:

                    case 10:

                    case 11: Console.WriteLine("<<此月份在秋季>>"); break;

                    case 12:

                    case 1:

                    case 2: Console.WriteLine("<<此月份在冬季>>"); break;

                    case 13: Console.WriteLine("退出成功"); break;

                    default: Console.WriteLine("输入错误!!!"); break;

                }//switch结束

                if (i == 13) break; //退出系统

            }//while结束

        }

    }

}

 

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

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

少有多少个。 

using System;

 

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace _20194020

{

    class Program

    {

        static void Main(string[] args)

        {

            int sum=2;                 //鸡蛋个数总量

            bool flag = false;

            while (sum < int.MaxValue&&flag==false) {  //循环条件:鸡蛋总量没有超出int所表示最大值,且没找到一个符合条件的

                if (sum % 2 == 1 && sum % 3 == 1 && sum % 4 == 1) //满足题目条件,已找到

                {

                    Console.Write("这篮鸡蛋至少有{0}", sum);

                    Console.WriteLine("个。");

                    flag = true;

                }

                else                                            //没找到,增加鸡蛋数量

                sum++;

            }//while循环结束

        }

    }

}

 

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace _20194020

{

    class Program

    {

        static void Main(string[] args)

        {

            List<string> str = new List<string>();

            int len = 0;

            int jsum = 0;

            int osum = 0;

            Console.WriteLine("输出数组的元素,以q结束");

            while (true)

            {

                string input = Console.ReadLine();

                if (input.Equals("q") == false) //如果输入的不是q(区分大小写),则增加记录

                    str.Insert(len++, input);

                else

                    break;

            }

            string[][] every = new string[len][]; //交叉数组,行固定,为上面得到的行数,每一行的长度不定(每行字符间以空格或其他分割)

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

            {

                every[i] = str[i].Split(); //C#对空格的分割方式之一,如果是其他分割方式,就需要也使用上面的链表分割每行的方式了

            }

 

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

            {

                for (int j = 0; j < every[i].Length; j++)

                {

                    int aa;

                    // Console.WriteLine(every[i][j]);

                    aa = int.Parse(every[i][j]);

                    if ((aa % 2) == 1)

                    {

                        jsum += aa;

                    }

                    else

                    {

                        osum += aa;

                    }

                }

            }

            Console.WriteLine("奇数之和为:");

            Console.WriteLine(jsum);

            Console.WriteLine("偶数之和为:");

            Console.WriteLine(osum);

            Console.ReadKey();

        }

    }

}

 

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

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

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

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

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace _20194020

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("请选择:1.输入二维数组 0.退出");

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

            while (flag == 1)

            {

                Console.WriteLine("请输入二维数组的行数:");

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

                Console.WriteLine("请输入二维数组的列数:");

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

                float[,] a = new float[row, column];        //创建该二维数组

                Console.WriteLine("请输入二维数组元素:");

                for (int i = 0; i < row; i++)               //每行循环

                {

                    for (int j = 0; j < column; j++)        //每列循环

                    {

                        Console.WriteLine("请输入第{0}个数:", i * column + j + 1);

                        a[i, j] = float.Parse(Console.ReadLine());

                    }

                }

                int count = 0;                             //计数器

                for (int i = 0; i < row; i++)            //行循环

                {

                    int maxj = 0;                        //初始化该行最大的值所在列

                    for (int j = 0; j < column; j++)     //查找该行最大值的所在列

                    {

                        if (a[i, j] > a[i, maxj])

                        {

                            maxj = j;                    //把每行中最大的列号赋给maxj

                        }

                    }//找到该行最大数

                    int minx = 0;                       //初始化该行最大的值所在列中最小的值所在行

                    for (int j = 0; j < row; j++)       //查找该行最大值的所在列中该列的最小值

                    {

                        if (a[j, maxj] < a[minx, maxj])

                            minx = j;

                    }//找到该行最大数所在列的最小值

                    if (a[i, maxj] == a[minx, maxj])//判断该行最大数所在列的最小值的行号是否为该行

                    { Console.Write("鞍点[{0},{1}]:{2}" + '\n', minx, maxj, a[minx, maxj]); count++; }

                }//行循环结束

                if (count == 0) Console.WriteLine("没有鞍点数");

                else

                {

                    Console.WriteLine("鞍点总数为:" + count);

                }

                Console.WriteLine("请选择:1.输入二维数组,0.退出");

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

                if (flag == 0) Console.WriteLine("欢迎下次使用!!!");

            }//while循环结束

        }

    }

}

posted @ 2021-10-16 20:47  小强哥in  阅读(55)  评论(0编辑  收藏  举报