实验一 语言基础
一、实验目的
1. 熟悉Visual Stido.NET 实验环境;
2. 掌握控制台程序的编写方法;
3. 掌握C#程序设计语言的语法基础;
4. 掌握控制语句和数组的使用。
二、实验要求
根据题目要求,编写 C#程序,并将程序代码和运行结果写入实验报告。
三、实验内容
1. 编写一个控制台应用程序,输入三角形或者长方形边长,计算其周长和面积并输出。
源码:
主函数部分
static void Main1_1(string[] aa)
{
//定义三角形边长,矩形长和宽,以及周长和面积
int i;
double tri1, tri2, tri3;
double rec1, rec2;
double cir, area;
//系统编写
Console.WriteLine("--------------------几何图形周长、面积计算-----------------");
while (true)
{
Console.WriteLine("请选择图形样式:");
Console.WriteLine(" 1.三角形 2.矩形 3.退出 ");
Console.WriteLine("请输入对应序号:");
//这里不知道什么原因。需要回车两次才能继续。
i = int.Parse(Console.ReadLine());
switch (i)
{
//三角形算法
case 1:
Console.WriteLine("请输入所求三角形的第一条边的长度:");
tri1 = float.Parse(Console.ReadLine());
Console.WriteLine("请输入所求三角形的第二条边的长度:");
tri2 = float.Parse(Console.ReadLine());
Console.WriteLine("请输入所求三角形的第三条边的长度:");
tri3 = float.Parse(Console.ReadLine());
cir = tri1 + tri2 + tri3;//周长
area = Math.Sqrt(cir / 2 * (cir / 2 - tri1) * (cir / 2 - tri2) * (cir / 2 - tri3));
//无法将double隐式转换为float,之前用的float类型的边长等,sqrt函数返回为double
Console.WriteLine("该三角形的周长为:{0}", cir);
Console.WriteLine("该三角形的面积为:{0}", area);
break;
case 2:
Console.WriteLine("请输入所求矩形的一条边的长度:");//用户依次输入三个边长
rec1 = float.Parse(Console.ReadLine());
Console.WriteLine("请输入所求矩形的另一条边的长度:");
rec2 = float.Parse(Console.ReadLine());
cir = 2 * (rec1 + rec2); //长方形周长及面积
area = rec1 * rec2;
Console.WriteLine("该矩形的周长为:{0}", cir);
Console.WriteLine("该矩形的面积为:{0}", area);
break;
case 3:
Console.WriteLine("正在退出.....");
Console.WriteLine("退出成功!");
break;
default:
Console.WriteLine("输入有误,请输入1或2或3!!!");
break;
}
//判断是否退出系统
if (i == 3)
break;
}
}
程序运行截图
2. 编写一个控制台应用程序,可根据输入的月份判断所在季节。
主函数代码
static void Main1_2(string[] ab)
{
//定义输入的月份
int i;
//系统编写
Console.WriteLine("---------季节判断系统----------");
while(true)
{
Console.WriteLine("请输入要查询的月份:(输入0,退出系统)");
i = int.Parse(Console.ReadLine());
switch(i)
{
case 3:
case 4:
case 5:
Console.WriteLine("{0}月在春季。 ", i);
break;
case 6:
case 7:
case 8:
Console.WriteLine("{0}月在夏季。", i);
break;
case 9:
case 10:
case 11:
Console.WriteLine("{0}月在秋季。", i);
break;
case 12:
case 1:
case 2:
Console.WriteLine("{0}月在冬季。", i);
break;
case 0:
Console.WriteLine("正在退出.....");
Console.WriteLine("退出成功!");
break;
default:
Console.WriteLine("您的输入有误,请核实后输入!!!");
break;
}
if (i == 0)
break;
}
}
程序运行截图
3. 编写程序,用 while 循环语句实现下列功能:有一篮鸡蛋,不止一个,有人两个两
个数,多余一个,三个三个数,多余一个,再四个四个地数,也多余一个,请问这篮鸡蛋至
少有多少个。
主函数代码
static void Main1_3(string[] ac)
{
int sum = 2;
bool flag = false;
while (sum < int.MaxValue && flag == false)
{
if (sum % 2 == 1 && sum % 3 == 1 && sum % 4 == 1)
{
Console.WriteLine("这筐鸡蛋至少有{0}个.", sum);
flag = true;
}
else
sum++;
}
}
程序运行截图
4. 编写程序,计算数组中奇数之和和偶数之和。
主函数代码
static void Main1_4(string[] ad)
{
//定义数组,及奇数偶数之和
List<string> str = new List<string>();
int lenth = 0;
int jssum = 0;
int ossum = 0;
//输入数组
Console.WriteLine("输出数组元素,回车按q结束录入(最后一个数字后不要加空格)");
while(true)
{
string input = Console.ReadLine();
if (input.Equals("q") == false)
str.Insert(lenth++, input);
else
break;
}
//交叉数组,
string[][] every = new string[lenth][];
for(int i = 0; i < lenth; i++)
{
every[i] = str[i].Split();//C#对空格的分割方式之一
}
for (int i = 0; i < lenth; i++)
{
for(int j=0;j<every[i].Length;j++)
{
int aa;
aa = int.Parse(every[i][j]);
if((aa%2)==1)
{
jssum += aa;
}
else
{
ossum += aa;
}
}
}
Console.WriteLine("该数组中奇数之和为:{0}", jssum);
Console.WriteLine("该数组中偶数之和为:{0}", ossum);
Console.ReadKey();
}
程序运行截图
5. 编写程序,找一找一个二维数组中的鞍点(即该位置上的元素值在行中最大,在该
列上最小。有可能数组没有鞍点)。要求:
u 二维数组的大小、数组元素的值在运行时输入;
u 程序有友好的提示信息。
主函数代码
static void Main1_5(string[] ae)
{
int[,] nos = new int[3, 4];
int xMaxIndex = 0;
bool isFind = false;
for (int i = 0; i < nos.Rank; i++)
{
for (int j = 1; j < nos.Length / (nos.Rank + 1); j++)
{
if (nos[i, j] > nos[i, j - 1])
xMaxIndex = j;
}
bool isMin = true;
for (int k = 0; k < nos.Rank; k++)
{
if (k == i)
continue;
if (nos[k, xMaxIndex] < nos[i, xMaxIndex])
isMin = false;
}
if (isMin)
{
Console.Write("[{0},{1}]={2} 是鞍点!", i, xMaxIndex,nos[i,xMaxIndex]);
isFind = true;
}
}
if (!isFind)
Console.Write("Not Find(没有找到鞍点)!");
}
程序运行截图
四、实验总结
通过本次实验报告,以及对应实验代码的编写以及运行工作,我初步认识到C#语言控制台应用的编写技巧,C#与C++,C以及JAVA都有类似的地方,语法方面有相互印证的地方,有了C/C++,Java的编程经历,对C#的开发比较顺利,这几个习题练习了C#,对于整型,双精度型数据的定义,赋值,以及while,for,if循环结构,还有终端的输入输出,以及二维数组的定义等方面,都有涉及,很好的培养了C#的开发习惯。而且C#在VS里的开发过程异常顺利,几乎没有遇到什么问题。对于题目中的一些瑕疵,我没有做深入的研究,通过注释将相关注意事项记下。最后一题感觉和题目有所出入。希望指正。