实验名称:实验一 语言基础

一、 实验目的 

 

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

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

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

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

 

二、 实验要求

 

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

 

三、 实验内容

 

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

1)源程序:

using System;

namespace ArrayApplication

{

    class MyArray

    {

        class A

        {

            public void triangle()

            {

                Console.ReadLine();

                float[] M = new float[3];

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

                M[0] = int.Parse(Console.ReadLine());

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

                M[1] = int.Parse(Console.ReadLine());

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

                M[2] = int.Parse(Console.ReadLine());

                if (M[0] <= 0 || M[1] <= 0 || M[2] <= 0)

                {

                    Console.WriteLine("不能输入负数或0作为边长!");

                    Console.WriteLine("按任意键退出");

                }

                else if (M[0] + M[1] <= M[2] || M[2] + M[1] <= M[0] || M[0] + M[2] <= M[1])

                {

                    Console.WriteLine("输入的三个数据作为边长使用时,不能组成一个三角形!");

                    Console.WriteLine("按任意键退出");

                }

                else

                {

                    float p = (M[0] + M[1] + M[2]) / 2;

                    double s = Math.Sqrt(p * (p - M[0]) * (p - M[1]) * (p - M[2]));

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

                    Console.WriteLine("按任意键退出");

                }

            }

 

            public void rectangle()

            {

                Console.ReadLine();

                float[] M = new float[2];

                Console.WriteLine("请输入矩形的长度:");

                M[0] = int.Parse(Console.ReadLine());

                Console.WriteLine("请输入矩形的宽度");

                M[1] = int.Parse(Console.ReadLine());

                Console.WriteLine("矩形的面积为:{0}", M[0] * M[1]);

                Console.WriteLine("按任意键退出");

            }

        }

        static void Main(string[] args)

        {

            A B = new A();

 

            int myInt;

            char myChar;

            Console.WriteLine("请输入类型为三角形还是长方形(a代表三角形,b代表长方形):");

            myInt = Console.Read();

            myChar = (char)myInt;

            if (myChar == 'a')

                B.triangle();

            else if (myChar == 'b')

                B.rectangle();

            Console.Read();

        }

    }

}

 

2)运行结果:

A.三角形:

 

B.长方形:

 

注:本处并没有演示出错时程序的处理,实际上已经包含在程序中(如用户输入负数、输入的三边不能组成三角形等情况,在程序中都有对应的出错处理程序)

 

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

1)源程序:

using System;

namespace ArrayApplication

{

    class MyArray

    {

        static void Main(string[] args)

        {

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

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

            if (a < 1)

            {

                Console.WriteLine("输入的月份必须为正数!");

            }

            else if (a > 12)

            {

                Console.WriteLine("输入的月份不能大于12!");

            }

            else

            {

                if (a >= 3 && a <= 5)

                {

                    Console.WriteLine("{0}月为春季", a);

                }

                else if (a >= 6 && a <= 8)

                {

                    Console.WriteLine("{0}月为夏季", a);

                }

                else if (a >= 9 && a <= 11)

                {

                    Console.WriteLine("{0}月为秋季", a);

                }

                else

                {

                    Console.WriteLine("{0}月为冬季", a);

                }

            }

            Console.WriteLine("输入任意键以继续");

            Console.Read();

        }

    }

}

2)运行结果:

 

 

  1. 编写程序,用while循环语句实现下列功能:有一篮鸡蛋,不止一个,有人两个两个数,多余一个,三个三个数,多余一个,再四个四个地数,也多余一个,请问这篮鸡蛋至少有多少个。

1)源程序

using System;

namespace ArrayApplication

{

    class MyArray

    {

        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循环结束

            Console.WriteLine("{0}", sum);

            Console.WriteLine("按任意键继续");

            Console.Read();

        }

    }

}

 

2)运行结果

 

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

1)源程序

using System;

namespace ArrayApplication

{

    class MyArray

    {

        static void Main(string[] args)

        {

            Console.WriteLine("请输入整形数组的长度(长度不能超过15):");

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

            int L = len;

            if (len > 15)

            {

                Console.WriteLine("长度已超过15!");

                return;

            }

            int[] array = new int[len];

            Console.WriteLine("注:输入元素不是整形时,系统会报错");

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

            {

                Console.WriteLine("请输入第{0}个数组元素的值(回车表示录入结束):", i + 1);

                array[i] = int.Parse(Console.ReadLine());

            }

 

            int B = 0;

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

            {

                if (array[i] % 2 == 1)

                    B++;

            }

            Console.WriteLine("本数组中:");

            Console.WriteLine("        含有{0}个奇数", B);

            Console.WriteLine("        含有{0}个偶数", L - B);

 

        }

    }

}

2)运行结果

 

 

 

 

 

 

  1. 编写程序,找一找一个二维数组中的鞍点(即该位置上的元素值在行中最大,在该列上最小。有可能数组没有鞍点)。

要求:

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

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

1)源程序

using System;

 

namespace Test_1_5

{

    class Program

    {

        static void Main(string[] args)

        {

            int max, min, rowindex = 0, colindex = 0, flag = 0;

 

            Console.WriteLine("选择数组的行数:");

            string input1 = Console.ReadLine();

            int data1 = Convert.ToInt32(input1);

 

            Console.WriteLine("选择数组的列数:");

            string input2 = Console.ReadLine();

            int data2 = Convert.ToInt32(input2);

 

        xunhuan:

            Console.WriteLine("请输入{0}行{1}列的数组,空格分隔", data1, data2);

            int[,] a = new int[data1, data2];

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

            {

                string str = Console.ReadLine();//首先输入一字符串,表示二维数组的一行数据

                string[] tmp = str.Split("".ToCharArray());//通过Split方法以空格作为分隔符将输入的一行字符串分开

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

                {

                    if (tmp.Length != data2)

                    {

                        Console.WriteLine("输入格式有误");

                        goto xunhuan;

                    }

                    else

                    {

                        a[i, j] = int.Parse(tmp[j]);//将分割后的字符赋值给二维数组的每个元素

                    }

                }

            }

 

            Console.WriteLine("二维数组为:");

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

            {

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

                {

                    Console.Write(a[i, j] + "  ");

                }

                Console.WriteLine();

            }

 

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

            {

                //找到i行上最大的元素,记录该元素所在的列号colindex

                max = a[i, 0];

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

                {

                    if (a[i, j] > max)

                    {

                        max = a[i, j];

                        colindex = j;

                    }

                }

                min = a[0, colindex];

                //找max所在列上最小元素,记录所在行rowindex

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

                {

                    if (a[j, colindex] < min)

                    {

                        min = a[j, colindex];

                        rowindex = j;

                    }

                }

                if (max == min && i == rowindex)

                {

                    flag = 1;

                    Console.WriteLine("鞍点为{0}行{1}列的元素{2}", rowindex + 1, colindex + 1, max);

                    break;

 

                }

            }

            if (0 == flag)

            {

                Console.WriteLine("没有鞍点");

            }

 

        }

    }

}

 

2)运行结果

 

posted on 2022-10-25 22:23  辰逸1  阅读(49)  评论(0)    收藏  举报