1.聲明兩個變數:int n1 = 10, n2 = 20;要求將兩個變數交換,最後輸出n1為20,n2為10。(很多種寫法)int tmp = n1;n1 = n2;n2 = tmp; n1 = n1 + n2;n2 = n1 - n2;n1 = n1 - n2; n1 = n1 ^ n2;n2 ...
1.聲明兩個變數:int n1 = 10, n2 = 20;要求將兩個變數交換,最後輸出n1為20,n2為10。(很多種寫法)
int tmp = n1;n1 = n2;n2 = tmp;
n1 = n1 + n2;n2 = n1 - n2;n1 = n1 - n2;
n1 = n1 ^ n2;n2 = n1 ^ n2;n1 = n1 ^ n2;
n2 = n1 + (n1 = n2) * 0;
2.交換兩個變數,封裝成方法。(值類型和引用類型的區別)
void Swap(ref int n1,ref int n2)
{
int tmp = n1;
n1 = n2;
n2 = tmp;
}
3.通過編程計算1+2-3+4-5+6-7+......100的值。
int iSum = 0;
//迴圈1-100的每一個數字
for (int i = 1; i <= 100; i++)
{
if(i == 1 || i % 2 == 0)
{
iSum += i;
}
else
{
//奇數
iSum += (-i);
}
}
4.請用戶輸入一個字元串,計算字元串中的字元個數,並輸出
string msg = "你好a!中國 123";
//字元串的Length屬性表示字元串中字元的個數,無論是中文字元還是英文字元,一個字元就是一個字元,不是位元組數
Console.WriteLine("字元串的個數是:{0}", msg.Length);
5.定義方法來實現:計算兩個數的最大值。提示:方法有幾個參數?返回值是什麼?【思考】:計算任意多個數間的最大值(提示:params)。
private static int GetMaxValue(int n1,int n2)
{
return n1 > n2 ? n1 : n2;
}
private static int GetMaxValue(params int[] arr)
{
int max = arr[0];
for (int i = 1; i < arr.Length; i++)
{
if(max < arr[i])
{
max = arr[i];
}
}
return max;
}
6.計算1-100之間的所有整數的和
int iSum = 0;
for (int i = 1; i <= 100; i++)
{
iSum += i;
}
7.計算1-100之間的所有奇數的和。
int iSum = 0;
for (int i = 1; i <= 100; i++)
{
if (i % 2 != 0)
{
iSum += i;
}
}
8.定義方法來實現:判斷一個給定的整數是否為“質數”。Prime Number
private static bool IsPrimeNumber(int n)
{
if (n > 1)
{
for (int i = 2; i < n; i++)
{
if(n % i == 0)
{
return false;
}
}
return true;
}
else
{
throw new ArgumentException("數字小於1不是質數");
}
}
9.計算1-100之間的所有質數(素數)的和。
int iSum = 0;
for (int i = 2; i <= 100; i++)
{
//對於每個數字判斷是否是一個質數
if (IsPrimeNumber(i))
{
iSum += i;
}
}
10.定義方法來實現:有一個整數數組:{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 },找出其中最大值,並輸出。不能調用數組自身的Max()方法,自己定義一個方法。
private static int GetMaxValueFromArray(int[] arr)
{
int max = arr[0];
for (int i = 1; i < arr.Length; i++)
{
if(max < arr[i])
{
max = arr[i];
}
}
return max;
}
11.定義方法來實現:有一個字元串數組:{ "馬龍", "邁克爾喬丹", "雷吉米勒", "蒂姆鄧肯", "科比布萊恩特" },請輸出字元數最多的字元串。
private static string GetLongName(string[] msg)
{
string longName = msg[0];
for (int i = 1; i < msg.Length; i++)
{
if(longName.Length < msg.Length)
{
longName = msg[i];
}
}
return longName;
}
12.定義方法來實現:請計算出一個整型數組的平均值。{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }。要求:計算結果如果有小數,則顯示小數點後兩位(四捨五入)。Math.Round()
private static double GetAvgFromArray(int[] arr)
{
int iSum = 0;
for (int i = 0; i < arr.Length; i++)
{
iSum += arr[i];
}
return Math.Round((iSum * 1.0) / arr.Length,2);
}
13.請通過冒泡排序法對整數數組{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }實現升序排序。
//冒泡排序,這個排序方法無需返回值,因為數組本身就是引用類型,引用類型在方法中修改以後,外面的變數可以獲得修改後的值,所以不需要返回值
private static void MySort(int[] arr)
{
for (int i = 0; i < arr.Length - 1; i++)
{
for (int j = arr.Length - 1; j > i; j--)
{
if(arr[j] < arr[j-1])
{
int tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
}
}
}
}
14.請輸入一個十進位數字,計算出對應的二進位數字,以字元串方式輸出。如:十進位數字120,輸出結果為"1111000"。
private static string GetBinaryNumber(int num)
{
List<string> list = new List<string>();
while (num >= 2)
{
int shang = num / 2;
int yushu = num % 2;
list.Add(yushu.ToString());
num = shang;
}
list.Add(num.ToString());
list.Reverse();
return String.Join("",list.ToArray());
}
15.請用戶輸入一個年份,判斷該年份是否為閏年。判斷閏年條件:1>能被4整除但不能被100整除2>能被400整除的
private static bool IsLeapYear(int year)
{
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
return true;
}
else
{
return false;
}
}
16.在控制台輸出如下顯示的“乘法口訣表”。
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
Console.Write("{0}*{1}={2}\t",j,i,j*j);
}
Console.WriteLine();
}
17.自己編寫一個函數,實現類似.net中Trim()函數的功能:去掉字元串兩端的空格。
private static string MyTrim(string msg)
{
int start = 0;
int end = msg.Length - 1;
while(start < msg.Length)
{
if(!char.IsWhiteSpace(msg[start]))
{
break;
}
start++;
}
while(end >= start)
{
if(!char.IsWhiteSpace(msg[end]))
{
break;
}
end--;
}
return msg.Substring(start,end-start+1);
}
18.隨機生成10個1-100之間的不重覆的偶數,填充到List<int>集合中。
List<int> list = new List<int>();
Random random = new Random();
int index = 0;
while(list.Count < 10)
{
//隨機生成一個1-100之間的數字
int num = random.Next(1,101);
if(num % 2 == 0 && !list.Contains(num))
{
list.Add(num);
}
index++;
}
foreach (int item in list)
{
Console.WriteLine(item);
}
Console.WriteLine("============");
Console.WriteLine(index);
19.有如下字元串:【"患者:“大夫,我咳嗽得很重。” 大夫:“你多大年記?” 患者:“七十五歲。” 大夫:“二十歲咳嗽嗎”患者:“不咳嗽。” 大夫:“四十歲時咳嗽嗎?” 患者:“也不咳嗽。” 大夫:“那現在不咳嗽,還要等到什麼時咳嗽?”"】。需求:①請統計出該字元中“咳嗽”一詞的出現次數,以及每次“咳嗽”出現的索引位置。②擴展(*):統計出每個字元的出現次數。
string msg = "患者:“大夫,我咳嗽得很重。” 大夫:“你多大年記?” 患者:“七十五歲。” 大夫:“二十歲咳嗽嗎”患者:“不咳嗽。” 大夫:“四十歲時咳嗽嗎?” 患者:“也不咳嗽。” 大夫:“那現在不咳嗽,還要等到什麼時咳嗽?”";
string word = "咳嗽";
int index = 0;
int count = 1;
//使用IndexOf(),該方法返回在整個字元串中,指定的字元或字元串第一次出現的索引位置,如果沒有找到指定的字元或者字元串則返回-1
while((index = msg.IndexOf(word,index)) != -1)
{
Console.WriteLine("第{0}次出現【咳嗽】,出現的索引位置是:{1}",count,index);
index = index + word.Length;
count++;
}
20.將字元串" hello world,你 好 世界 ! "兩端空格去掉,並且將其中的所有其他空格都替換成一個空格,輸出結果為:"hello world,你 好 世界 !"。
string msg = " hello world,你 好 世界 ! ";
msg = msg.Trim();
string[] result = msg.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries);
string str = String.Join(" ",result);
Console.WriteLine(str);
21.請統計出數組:{1,2,3,4,5,6,7,8,9,1,2,3,79,23,45,64,9,3,2,4}中的不重覆的數字的個數。【思考】如果題目要求變更為去除重覆數字放到一個新數組中,如何實現?
統計不重覆的元素的個數
int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 79, 23, 45, 64, 9, 3, 2, 4, 1, 1, 1, 1, 1, 1 };
int count = 0;
for (int i = 0; i < arr.Length; i++)
{
bool b = true;
for (int j = 0; j < arr.Length; j++)
{
if(arr[i] == arr[j] && i != j)
{
b = false;
break;
}
}
if(b)
{
count++;
}
}
Console.WriteLine("不重覆的元素的個數是:{0}",count);
去除重覆
int[] arr = { 1, 2, 3, 4, 79, 79, 5, 6, 7, 8, 9, 1, 2, 3, 79, 23, 45, 64, 9, 3, 2, 4, 1, 1, 1, 1, 1, 1, 79, 79 };//1,1,1,1,1,2,2,2,3,4,5,6
Array.Sort(arr);
List<int> list = new List<int>();
for (int i = 0; i < arr.Length - 1; i++)
{
if(arr[i] != arr[i+1])
{
list.Add(arr[i]);
}
}
list.Add(arr[arr.Length-1]);
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
22.製作一個控制台小程式。要求:用戶可以在控制台錄入每個學生的姓名,當用戶輸入quit(不區分大小寫)時,程式停止接受用戶的輸入,並且顯示出用戶輸入的學生的個數,以及每個學生的姓名。
List<string> list = new List<string>();
string userName = string.Empty;
int count = 0;
do
{
Console.WriteLine("請輸入姓名:");
userName = Console.ReadLine();
if (userName.IndexOf('王') == 0)
{
count++;
}
list.Add(userName);
}while(userName.ToLower() != "quit");
list.RemoveAt(list.Count - 1);
Console.WriteLine("共輸入了:{0}個學生,每個學生信息是:", list.Count);
foreach (string name in list)
{
Console.WriteLine(name);
}
Console.WriteLine("姓王的同學的個數是:{0}", count);
23.將普通日期格式:“2011年6月4日” 轉換成漢字日期格式:“二零一一年六月四日”。暫時不考慮10日、13日、23日等“帶十”的問題。
private static string ConvertDate(string date)
{
//不能直接修改字元串,比如date[0]='零',字元串具有不可變性。
//先根據字元串date,生成一個char數組(字元數組)
char[] chs = date.ToCharArray();
for (int i = 0; i < date.Length; i++)
{
switch (chs[i])
{
case '0':
chs[i] = '零';
break;
case '1':
chs[i] = '一';
break;
case '2':
chs[i] = '二';
break;
case '3':
chs[i] = '三';
break;
case '4':
chs[i] = '四';
break;
case '5':
chs[i] = '五';
break;
case '6':
chs[i] = '六';
break;
case '7':
chs[i] = '七';
break;
case '8':
chs[i] = '八';
break;
case '9':
chs[i] = '九';
break;
}
}
//return date;
//把char數組變成string類型
return new string(chs);
}