C# 基础编程题集锦

  • C# 基础编程题集锦已关闭评论
  • 184 次浏览
  • A+
所属分类:.NET技术
摘要

编写一个应用程序用来输入的字符串进行加密,对于字母字符串加密规则如下:
‘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;         } 

C# 基础编程题集锦

阶乘

利用递归函数取得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;         }