实验名称:实验一 语言基础
一、 实验目的
1. 熟悉 Visual Stdio.NET 实验环境;
2. 掌握控制台程序的编写方法;
3. 掌握 C#程序设计语言的语法基础;
4. 掌握控制语句和数组的使用。
二、 实验要求
根据题目要求,编写 C#程序,并将程序代码和运行结果写入实验报告。
三、 实验内容
- 编写一个控制台应用程序,输入三角形或者长方形边长,计算其周长和面积并输出。
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)源程序:
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)运行结果:
- 编写程序,用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)源程序
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)源程序
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)运行结果
浙公网安备 33010602011771号