C# 基礎編程題集錦

来源:https://www.cnblogs.com/BoiledYakult/archive/2023/05/01/17366864.html
-Advertisement-
Play Games

簡單字元串加密 編寫一個應用程式用來輸入的字元串進行加密,對於字母字元串加密規則如下: 'a→d’ ‘b'→’e’ ‘w’→z' ...... x'→’a’ ‘y'→b' ‘z→c’ ‘A’→’D’ ‘B'→’E’ ‘W’→’Z’ ‘X’→’A’ ‘Y’→’B’ ‘Z’→’C’ ?對於其他字元,不進 ...


簡單字元串加密

編寫一個應用程式用來輸入的字元串進行加密,對於字母字元串加密規則如下:
'a→d’ ‘b'→’e’ ‘w’→z' ...... x'→’a’ ‘y'→b' ‘z→c’ ‘A’→’D’ ‘B'→’E’ ‘W’→’Z’ ‘X’→’A’ ‘Y’→’B’ ‘Z’→’C’ ?對於其他字元,不進行加密。

 static void Main(string[] args)
 {
     string str = Console.ReadLine();
     Char[] chars = str.ToCharArray();
     for (int i = 0; i < chars.Length; i++)
     {
         if ((chars[i] >= 'a' && chars[i] <= 'z') || (chars[i] >= 'A' && chars[i] <= 'Z'))
         {
             chars[i] = (char)(chars[i] + 3);
             if ((chars[i] > 'z' && chars[i] <= 'z' + 3)||(chars[i] > 'Z' && chars[i] <= 'Z' + 3))
             {
                 chars[i] = (char)(chars[i] -26);
             }
         }
     }
     foreach (char c in chars)
     {
         Console.Write(c);
     }
     Console.ReadKey();
 }

找到最小值

輸入(n<100)個數,找出其中最小的數,將它與最前面的數交換後輸出這些數。

【假設輸入的數字以空格字元隔開,例:23 15 45 78 】

  static void Main(string[] args)
        {
            string str = Console.ReadLine();
            string[] strArray = str.Split(' ');
            int[] intArray = new int[strArray.Length];
            for (int i = 0; i < intArray.Length; i++)
            {
                intArray[i] = int.Parse(strArray[i]);
            }
            int min = intArray[0];
            int minIndex = 0;
            for (int i = 1; i < intArray.Length; i++)
            {
                if (intArray[i] < min)
                {
                    min = intArray[i];
                    minIndex = i;
                }
            }
            intArray[minIndex] = intArray[0];
            intArray[0] = min;
            foreach (var item in intArray)
            {
                Console.Write(item + " ");
            }
            Console.ReadKey();
        }

在適當位置插入

有 n (n<=100) 個整數,已經按照從小到大順序排列好,現在另外給一個整數 x ,請將該數插入到序列
中,並使新的序列仍然有序。

 static void Main(string[] args)
        {
            int[] array = { 2, 3, 5, 10, 89 };
            int target = int.Parse(Console.ReadLine());
            int index = 0;
            bool isFound = false;
            for (int i = 0; i < array.Length - 1; i++)
            {
                if (target >= array[i] && target <= array[i + 1])
                {
                    index = i;
                    isFound = true;
                    break;
                }
            }
            List<int> list = array.ToList();
            if (isFound)
            {
                list.Insert(index + 1, target);
            }
            else
            {
                if (target < list[0])
                {
                    list.Insert(0, target);
                }
                else
                {
                    list.Add(target);
                }
            }
            array = list.ToArray();
            for (int i = 0; i < array.Length; i++)
            {
                Console.Write(array[i] + " ");
            }
            Console.ReadKey();
        }

排序

編寫一個控制台程式,要求用戶輸入一組數字用空格間隔,對用戶輸入的數字從小到大輸出。
(Array.Sort()方法和冒泡排序)

Array.Sort

static void Main(string[] args)
        {
            string[] strArray = Console.ReadLine().Split(' ');
            int[] intArray = new int[strArray.Length];
            for (int i = 0; i < intArray.Length; i++)
            {
                intArray[i] = int.Parse(strArray[i]);
            }
            Array.Sort(intArray);
            for (int i = 0;i < intArray.Length; i++)
            {
                Console.Write(intArray[i]+" ");
            }
            Console.ReadKey();
        }

冒泡排序

static void Main(string[] args)
        {
            string[] strArray = Console.ReadLine().Split(' ');
            int[] intArray = new int[strArray.Length];
            for (int i = 0; i < intArray.Length; i++)
            {
                intArray[i] = int.Parse(strArray[i]);
            }
            for (int i = 0; i < intArray.Length-1; i++)
            {
                for (int y = 0; y < intArray.Length-1; y++)
                {
                    if (intArray[y] > intArray[y+1])
                    {
                        int temp = intArray[y];
                        intArray[y]= intArray[y+1];
                        intArray[y+1]= temp;
                    }
                }
            }
            foreach (var item in intArray)
            {
                Console.Write(item+" ");
            }
            Console.ReadKey();
        }

判斷合法標識符

輸入一個字元串,判斷其是否是C#合法標識符。

【合法標識符即合法命名】 - 字母、數字、下劃線

static void Main(string[] args)
        {
            char[] chars = Console.ReadLine().ToCharArray();
            bool isLeagal = true;
            if ((chars[0] >= '0' && chars[0] <= '9'))
            {
                isLeagal = false;
            }
            else
            {
                foreach (char c in chars)
                {
                    if (!((c>='0'&&c<='9')||(c>='a'&&c<='z')||(c>='A'&&c<='Z')||c=='_'))
                    {
                        isLeagal=false;
                        break;
                    }
                }
                
            }
            if (isLeagal)
            {
                Console.WriteLine("字元串合法");
            }
            else { Console.WriteLine("字元串不合法"); }
            Console.ReadKey();
        }

迴文串

迴文串"是一個正讀和反讀都一樣的字元串,比如level或者noon等等就是迴文串。請寫一個
程式判斷讀入的字元串是否是“迴文串”。

 static void Main(string[] args)
        {
            char[] chars = Console.ReadLine().ToCharArray();
            bool isHui = true;
            for (int i = 0; i < chars.Length / 2; i++)
            {
                if (chars[i] != chars[chars.Length - 1 - i])
                {
                    isHui = false;
                    break;
                }
            }
            if (isHui)
            {

                Console.WriteLine("是迴文串");
            }
            else
            {
                Console.WriteLine("不是迴文串");
            }

            Console.ReadKey();
        }

判斷第二大值

輸入是個不相等的正整數,輸出這10個正整數中的第二大的數。
樣例輸入
3729531038
樣例輸出
9

static void Main(string[] args)
        {
            string[] strArray = Console.ReadLine().Split(' ');
            int[] intArray = new int[strArray.Length];
            for (int i = 0; i < intArray.Length; i++)
            {
                intArray[i] = int.Parse(strArray[i]);
            }
            int max1 = 0, max2 = 0;
            for (int i = 0; i < intArray.Length; i++)
            {
                if (intArray[i]>max1)
                {
                    max2 = max1;
                    max1 = intArray[i];
                }
                else
                {
                    if (intArray[i]>max2)
                    {
                        max2 = intArray[i];
                    }
                }
            }
            Console.WriteLine($"第二大值 {max2}");
            Console.ReadKey();
        }

真素數

區間內的真素數
找出正整數M和N之間(N不小於M)的所有真素數。

真素數的定義:如果一個正整數P為素數,且其反序也為素數,那麼P就為真素數。

例如,11,13均為真素數,因為11的反序還是為14,13的反序為31也為素數。

輸入格式:輸入兩個數M和N,空格間隔,1<=M<=N<=100000。

輸出格式:按從小到大輸出M和N之間(包括M和N)的真素數,逗號間隔。如果之間沒有真素數,則輸出N0。

輸入樣例:1035

輸出樣例:11.13,17,31

 static void Main(string[] args)
        {
            string[] strArray = Console.ReadLine().Split(' ');
            int[] intArray = new int[strArray.Length];
            for (int i = 0; i < intArray.Length; i++)   // m n
            {
                intArray[i] = int.Parse(strArray[i]);
            }
            int m = intArray[0];
            int n = intArray[1];
            for (int i = m; i < n + 1; i++)
            {
                bool isSu = true;
                for (int j = 2; j < i; j++)
                {
                    if (i % j == 0)
                    {
                        isSu = false;
                    }
                }
                if (isSu)
                {
                    // 取反
                    int temp = i;
                    int number = 0;
                    while (temp % 10 != 0)
                    {
                        number = number * 10 + temp % 10;
                        temp = temp / 10;
                    }
                    bool isSu2 = true;
                    for (int j = 2; j < number; j++)
                    {
                        if (number % j == 0)
                        {
                            isSu2 = false;
                            break;
                        }
                    }
                    if (isSu2)
                    {
                        Console.Write(i + " ");
                    }
                }
            }
            Console.ReadKey();
        }

遞歸函數類

f( n )=f(n-1)+ f(n-2) ,f(0)=2 ,f(1) = 3 , 用程式求得 f(40)

迴圈

 static void Main(string[] args)
        {
            // fn = fn1 + fn2 f0=2 f1=3
            int n1 = 2; // f0
            int n2 = 3; // f1
            int n40 = 0;
            for (int i = 2; i < 41; i++)
            {
                n40 = n1 + n2;
                n1 = n2;
                n2 = n40;
            }
            Console.WriteLine(n40);
            Console.ReadKey();
        }

遞歸函數

 static void Main(string[] args)
        {
            // fn = fn1 + fn2 f0=2 f1=3
            int n40 = F(40);
            Console.WriteLine(n40);
            Console.ReadKey();
        }
        static int F(int n)
        {
            if (n == 0) { return 2; }
            if (n == 1) { return 3; }
            int res = F(n - 1) + F(n - 2);
            return res;
        }

image-20230501183034162

階乘

利用遞歸函數取得10!

迴圈

 static void Main(string[] args)
        {
            // n! = n*(n-1)*(n-2)*...*(n-(n-1))
            // 5! = 5*4*3*2*1
            int result = 10;
            for (int i = 9; i > 0; i--)
            {
                result = result * i;
            }
            Console.WriteLine(result);
            Console.ReadKey();
        }

遞歸函數

static void Main(string[] args)
        {
            // n! = n*(n-1)*(n-2)*...*(n-(n-1)) = n*(n-1)!
            // 5! = 5*4*3*2*1
            Console.WriteLine(F(10));
            Console.ReadKey();
        }
        static int F(int n)
        {
            if (n == 1) { return 1; }
            int res = n * F(n - 1);
            return res;
        }

找規律!!!

階乘變種

1+2!+3!+4!+..+10!

利用多個方法計算結果

 static void Main(string[] args)
        {
            // n! = n*(n-1)*(n-2)*...*(n-(n-1)) = n*(n-1)!
            // 5! = 5*4*3*2*1
            Console.WriteLine(S(10));
            Console.ReadKey();
        }
        static int F(int n)
        {
            if (n == 1) { return 1; }
            int res = n * F(n - 1);
            return res;
        }
        static int S(int n)
        {
            if(n==1) { return 1; }
            int res=F(n) + S(n - 1);
            return res;
        }

遞歸練習

有關係式1 x 1+2 x 2+3 x 3+..+ k x k<2000,編一個程式,求出滿足此關係式的k的最大值

利用遞歸和迴圈解決這個問題

static void Main(string[] args)
        {
            // 不清楚迴圈何時結束 - while
            int k = 1;
            while (true)
            {
                int res = F(k);
                if (res >= 2000)
                {
                    break;
                }
                k++;
            }
            Console.WriteLine(k - 1);
            Console.ReadKey();
        }
        static int F(int n)
        {
            if (n == 1) { return 1; }
            int res = n * n + F(n - 1);
            return res;
        }

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

-Advertisement-
Play Games
更多相關文章
  • 1. 消滅NULL 1.1. NULL惹人討厭的原因 1.1.1. 進行SQL編碼時,必須考慮違反人類直覺的三值邏輯 1.1.2. 指定IS NULL、IS NOT NULL的時候,不會用到索引,SQL語句執行起來性能低下 1.1.2.1. 1 + NULL = NULL 2- NULL = NUL ...
  • 前言 地址:https://www.cnblogs.com/FReQuenter5156/p/setblog.html/ 如題,使用的是 Simple Memory 主題。 Github 連接:https://github.com/BNDong/Cnblogs-Theme-SimpleMemory。 ...
  • 嘿嘿嘿、嘿嘿,俺又回來了! github代碼地址 https://github.com/Tom-shushu/work-study 介面文檔有道雲 https://note.youdao.com/s/GShGsYE8 介面文檔離線版本 https://files.cnblogs.com/files/ ...
  • FactoryBean 和 BeanFactory 是兩個不同的概念。前者是一個介面,我們可以在實現該介面時通過調用 getObject 方法來返回實例,同時 FactoryBean 本身也是一個實例。後者是 Spring 容器的工廠,通過其中的 bean 定義 Map 一個一個地實例化我們通過註解... ...
  • Springboot的優點 內置servlet容器,不需要在伺服器部署 tomcat。只需要將項目打成 jar 包,使用 java -jar xxx.jar一鍵式啟動項目 SpringBoot提供了starter,把常用庫聚合在一起,簡化複雜的環境配置,快速搭建spring應用環境 可以快速創建獨立 ...
  • 列印 print("hello world") 註釋 單行註釋 多行註釋 -- 這是單行註釋 --[[ 這是多行註釋 ]] 賦值 s="Hello World" -- 多重賦值 a,b="String a","String b" -- 交換值,類似python a,b="String a","Str ...
  • Redis連環40問,絕對夠全! Redis是什麼? Redis(Remote Dictionary Server)是一個使用 C 語言編寫的,高性能非關係型的鍵值對資料庫。與傳統資料庫不同的是,Redis 的數據是存在記憶體中的,所以讀寫速度非常快,被廣泛應用於緩存方向。Redis可以將數據寫入磁碟 ...
  • Spring的Bean定義環節是Spring IoC容器中的核心流程之一。在這個過程中,Spring會掃描指定的包路徑,找到符合條件的Bean,並將其轉換為Bean定義。在這個過程中,Spring使用了ASM技術來解析類的註解信息,判斷當前類是否符合要求。然後,Spring將符合條件的Bean定義加... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...