c#基礎之一

来源:https://www.cnblogs.com/zhoupp/archive/2018/09/18/9669409.html
-Advertisement-
Play Games

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);
}


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • var list1 = new List<int> { 1, 3, 5, 7, 9, 11, 13, 15 }; var list2 = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; // List1:1 3 5 7 9 11 13 15 Console. ...
  • 一、前言 1、本文主要內容 Visual Studio Code 開發環境配置 使用 ASP.NET Core 構建Web應用 ASP.NET Core Web 應用啟動類說明 ASP.NET Core Web 項目結構說明 2、本教程環境信息 3、前置知識 你可能需要的前置知識 VS Code + ...
  • C# GetHashCode、Equals函數和鍵值對集合的關係 說明 HashCode:Hash碼。特性:兩個值,相同的的值生成的Hash肯定相同,但是不同的值生成的Hash很大程式上會不同。作用:求Hash值效率比引用類型判斷是否相等的函數Equals更快,所以被用來輔助判斷鍵值對集合的鍵值是否 ...
  • EF中的FluentApi作用是通過配置領域類來覆蓋預設的約定。在EF中,我們通過DbModelBuilder類來使用FluentApi,它的功能比數據註釋屬性更強大。 使用FluentApi時,我們在context類的OnModelCreating()方法中重寫配置項,一個慄子: 我們可以把Flu ...
  • 作為一個優秀的開源調度框架,Quartz 具有以下特點: 另外,作為 Spring 預設的調度框架,Quartz 很容易與 Spring 集成實現靈活可配置的調度功能。 quartz調度核心元素: 我這裡簡單記錄使用過程及代碼: 1:首先引用Quartz組件 2:using Quartz;using ...
  • WPF總體來說還是比較方便的,其中變化最大的主要是Listview和Treeview控制項,而且TreeView似乎在WPF是一個備受指責的控制項,很多人說他不好用。我這個demo主要是在wpf中使用TreeView控制項實現圖片查看功能,簡單的Grid佈局、TreeView控制項添加圖標、TreeView ...
  • 前言   由於是第一次寫博客,如果您看到此文章,希望大家抱著找錯誤、批判的心態來看。 sky! 何為中間件? 在 ASP.NET Framework 中應該都知道請求管道。可參考: "淺談 ASP.NET 的內部機制" 系列,個人感覺超詳細。 _題外話: 說到請求管道,就想以前還 ...
  • 一.流程 1. //獲得二維碼的qrsig,cookie標誌 2. //登錄二維碼獲得二維碼的狀態,及最新的url 3. //登錄此網址,獲得Cookies 4.//cookies,篩選出skey信息,獲得post的參數 5. 提交POST 二. 代碼 /// <summary> /// 獲得QQ群 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...