/*
1、求出1—100内的所有質數的和。(質數:隻能被1和本身整除(),1不是質數也不是合數)
*/
public static void Task01()
{
int sum = ;
for (int i = ; i < ; i++)
{
if (IsPrime(i))
{
//Console.WriteLine(i);
sum += i;
}
}
Console.WriteLine("1—100内的所有質數的和為{0}", sum);
//Console.ReadKey();
}
static bool IsPrime(int r)
{
for (int i = ; i <= r / ; i++)
{
if (r % i == )
{
return false;
}
}
return true;
}
/* 2、列印圖形,例如傳入2
輸出
AA
BBBB
傳入4 輸出
AA
BBBB
CCCCCC
DDDDDDDD
*/
public static void Task02()
{
Console.WriteLine("請輸入要列印的行數");
int lines = int.Parse(Console.ReadLine());
for (int i = ; i <= lines; i++)
{
for (int j = ; j < * i; j++)
{
Console.Write((char)('A' + i - ));
}
Console.WriteLine();
}
}
/* 3、寫一個方法把字元串中的大寫字母轉換成小寫,小寫字母轉化成大寫。
*/
public static void Task03()
{
string str = "sffsDdssgCHHJHVJHVJHDDSDFGdg";
Console.WriteLine("大小寫翻轉後為{0}", Conversion(str));
}
static string Conversion(string str)
{
char word;
string words = string.Empty;
for (int i = ; i < str.Length; i++)
{
word = str[i];
if (word >= 'A' && word < 'Z')
{
words += char.ToLower(word);
}
else if (word >= 'a' && word < 'z')
{
words += char.ToUpper(word); ;
}
}
return words;
}
/* 4、合并數組 把兩個數組中索引相同的元素進行相加
例如:
arr1 = {1,2,3,4,5,6}
arr2 = {2,3,4,5,6,7,8}
合并後 {3,5,7,9,11,13,8}
【注意兩個數組的長度不确定 第一個數組的長度可能大于第二個數組的長度】
*/
public static void Task04()
{
Random ran = new Random();
Console.WriteLine("第一個随機數組:");
int[] numberArr1 = new int[ran.Next(, )];
for (int i = ; i < numberArr1.Length; i++)
{
int a = ran.Next(, );
if (!(IsContains(a, numberArr1)))
{
numberArr1[i] = a;
}
}
Show(numberArr1);
Console.WriteLine("第二個随機數組:");
int[] numberArr2 = new int[ran.Next(, )];
for (int i = ; i < numberArr2.Length; i++)
{
int b = ran.Next(, );
if (!(IsContains(b, numberArr2)))
{
numberArr2[i] = b;
}
}
Show(numberArr2);
int bigLength = ;
int smallLength = ;
if (numberArr1.Length > numberArr2.Length)
{
smallLength = numberArr2.Length;
bigLength = numberArr1.Length;
}
else
{
bigLength = numberArr2.Length;
smallLength = numberArr1.Length;
}
int[] resultArr = new int[bigLength];
for (int i = ; i < smallLength; i++)
{
resultArr[i] = numberArr1[i] + numberArr2[i];
}
for (int i = smallLength; i < bigLength; i++)
{
if (numberArr1.Length > numberArr2.Length)
{
resultArr[i] = numberArr1[i];
}
else
{
resultArr[i] = numberArr2[i];
}
}
Console.WriteLine("合并後的結果為:");
Show(resultArr);
}
static bool IsContains(int number, int[] arr)
{
for (int i = ; i < arr.Length; i++)
{
if (arr[i] == number)
{
return true;
}
}
return false;
}
static void Show(int[] arr)
{
for (int i = ; i < arr.Length; i++)
{
Console.Write("{0} ", arr[i]);
}
Console.WriteLine();
}
/*
5、根據規律寫方法
1 1 2 3 5 8 13 21。。。
傳入6
傳回13
傳入7
傳回21
*/
public static void Task05()
{
Console.WriteLine("請輸入一個大于二的整數,Enter鍵得到相應的斐波那契數");
int num = int.Parse(Console.ReadLine());
Console.WriteLine(FabniceNumber(num));
}
static int FabniceNumber(int num)
{
int[] number = new int[num + ];
number[] = ;
number[] = ;
for (int i = ; i < num + ; i++)
{
number[i] = number[i - ] + number[i - ];
}
return number[num];
}
/*
6、列印楊輝三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
*/
public static void Task06()
{
Console.WriteLine("請輸入需要列印的楊輝三角的行數");
int num = int.Parse(Console.ReadLine());
int[,] arr = new int[num, num];
for (int i = ; i < num; i++)
{
for (int j = ; j < num - i; j++)
{
Console.Write(" ");
}
for (int j = ; j <= i; j++)
{
//第一種方法
//if (j == 0 || j == i)
//{
// arr[i, j] = 1;
//}
//else
//{
// arr[i, j] = arr[i - 1, j] + arr[i - 1, j - 1];
//}
//方法二:三目運算
arr[i, j] = j == || j == i ? : arr[i - , j] + arr[i - , j - ];
Console.Write(arr[i, j].ToString() + " ");
}
Console.WriteLine();
}
Console.ReadKey();
}
/*
7、統計字元串中的數字字元,大寫字母,小寫字母的個數 【注 out】
*/
public static void Task07()
{
string str = "afH856";
int numberCount = ;
int bigWordsCount = ;
int smallWordsCount = ;
Count(str, out bigWordsCount, out smallWordsCount,out numberCount);
//方法1
//for (int i = 0; i < str.Length; i++)
//{
// if (str[i] >= 'A' && str[i] < 'Z')
// {
// bigWordsCount++;
// }
// else if (str[i] >= 'a' && str[i] < 'z')
// {
// smallWordsCount++;
// }
// else if ( str[i] >= '0' && str[i] <= '9')
// {
// numberCount++;
// }
//}
Console.WriteLine("{0}中有大寫字母{1}個,小寫字母{2}個,數字{3}個", str, bigWordsCount, smallWordsCount, numberCount);
}
//方法二
static void Count(string str, out int bigWordsCount, out int smallWordsCount ,out int numberCount)
{
numberCount = ;
bigWordsCount = ;
smallWordsCount = ;
for (int i = ; i < str.Length; i++)
{
if (str[i] >= 'A' && str[i] < 'Z')
{
bigWordsCount++;
}
else if (str[i] >= 'a' && str[i] < 'z')
{
smallWordsCount++;
}
else if (str[i] >= '0' && str[i] <= '9')
{
numberCount++;
}
}
}
/*
8、編寫一個學生類:
學生類包括:
字段:名字、年齡、所屬省份、所屬市
測試:
1産生5個學生對象。字段值通過構造器自定義即可。
2根據省份輸出學員中該省份的所有學生資訊。
3根據所屬市輸出學員中該市的所有學生資訊。
*/
public static void Task08()
{
Student[] stu = new Student[];
stu[] = new Student("小明", , "河南省", "鄭州");
stu[] = new Student("小紅", , "河北省", "石家莊");
stu[] = new Student("小張", , "河南省", "開封");
stu[] = new Student("小李", , "山東省", "濟南");
stu[] = new Student("小宋", , "山東省", "聊城");
Console.WriteLine("-----------------------------");
ProvinceShow(stu, "山東省");
ProvinceShow(stu, "河北省");
ProvinceShow(stu, "河南省");
Console.WriteLine("-----------------------------");
CityShow(stu, "開封");
CityShow(stu, "濟南 ");
CityShow(stu, "石家莊");
}
static void ProvinceShow(Student[] arr, string province)
{
for (int i = ; i < arr.Length; i++)
{
if (province == arr[i].Province)
{
arr[i].Show();
}
}
}
static void CityShow(Student[] arr, string city)
{
for (int i = ; i < arr.Length; i++)
{
if (city == arr[i].City)
{
arr[i].Show();
}
}
}
/*
9、編寫一個立體幾何類SolidGeometry,裡面有一個求體積GetVolume的方法,有一個求兩個立體幾何距離的方法
編寫一個Sphere類,字段包含:半徑,x坐标,y坐标,z坐标
1.求一個球體的體積
2.判斷兩個球是否相離
*/
public static void Task09()
{
Sphere s = new Sphere(, , , );
s.GetVolume(s.Radius);
Sphere q = new Sphere(, , , );
s.GetInfo(s, q);
}
/*
10.建立一個玩家類,
字段:類型、名稱、生命值、魔法值、攻擊力、生存狀态
初始化:生命值、魔法值、攻擊力的初值分别為800、100、50;
玩家類有一個攻擊方法:
public void Attack(Player player)。
測試要求:
1.産生兩個玩家對象:野蠻人和魔法師(用類型區分)
2.野蠻人每次攻擊造成的傷害在[攻擊力-10] 到[攻擊力+10]之間(這個傷害值是一個随機值),
3.野蠻人在攻擊時有25%的幾率産生1次暴擊,每次暴擊産生的傷害是原來的3倍;
4.魔法師每次攻擊造成的傷害在攻擊力的80%~100%之間(也是一個随機數),魔法師每次攻擊消耗18點魔法,它會額外減少對方12%的生命值。
5.讓兩個對象進行PK,就是你打我一下,我打你一下,直到有一方死亡為止;野蠻人先攻擊。
*/
public static void Task10()
{
Player player = new Player("亞瑟", "野蠻人", , , , "正常");
Player enemy = new Player("虞姬", "法師", , , , "正常");
Random random = new Random();
int count = ;
while (true)
{
Console.WriteLine("------------第{0}回合---------------", count);
player.PlayerAttack(enemy, random.Next(, ));
enemy.ToString1();
if (enemy._Hp <= )
{
Console.WriteLine("虞姬犧牲了");
break;
}
else
{
Console.WriteLine("虞姬還有{0}血", enemy._Hp);
}
Console.WriteLine("***************");
enemy.EnemyAttack(player);
player.ToString2();
if (player._Hp <= )
{
Console.WriteLine("亞瑟玩完了");
break;
}
else
{
Console.WriteLine("亞瑟還有{0}血", player._Hp);
}
count++;
Console.WriteLine();
Console.WriteLine();
}