實驗一 語言基礎
一、實驗目的
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里的開發過程異常順利,幾乎沒有遇到什么問題。對於題目中的一些瑕疵,我沒有做深入的研究,通過注釋將相關注意事項記下。最后一題感覺和題目有所出入。希望指正。