- A+
简单字符串加密
编写一个应用程序用来输入的字符串进行加密,对于字母字符串加密规则如下:
'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; }
阶乘
利用递归函数取得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; }