首页 > 编程语言 >C# 基础编程题集锦

C# 基础编程题集锦

时间:2023-05-01 19:33:42浏览次数:38  
标签:Console 集锦 C# 编程 int Length static intArray string

简单字符串加密

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

标签:Console,集锦,C#,编程,int,Length,static,intArray,string
From: https://www.cnblogs.com/BoiledYakult/p/17366864.html

相关文章

  • CentOS 7的下载安装配置教程
    CentOS7的下载安装配置教程  CentOS主流版本有7和8,我们这里选择CentOS7进行安装,因为现在8已经不更新了,CentOS8是一个介于实验性版本和稳定商业版本之间的产物,是最后一个版本,一般情况下,我们更追求稳定性,所以我们选择CentOS7。相关下载:  CentOS7镜像:http://mirrors.......
  • 当前标识(IIS APPPOOL\XX)没有对“C:\Windows\Microsoft.NET\Framework64\4.0.30
    当前标识(IISAPPPOOL\WMS.APP)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\TemporaryASP.NETFiles”的写访问权限。解决此问题为在使用Windows的IIS搭建服务器时,遇到的问题。在网上尝试了各种解决方法后,终于找到了一个可以解决问题的方法,以管理员身份运行命令......
  • c++回调函数
    回调函数本质上也是普通函数,只是调用机制有所区别——首先通过传参的形式将该函数的地址传递给其他函数,然后在其他函数中通过函数指针调用该函数。在其他函数中通过函数指针调用该函数的过程称为回调,而作为被调用的该函数则被称为回调函数。为什么需要回调函数?满足接口兼容性回......
  • recoverydw_v65.exe和PBKiller.exe,recoverydw,PBKiller
    前面是反编译数据窗口的,后面是绿色的是反编译函数,结构体,UO,窗体等。 下载位置:http://powerbuilder.ltd/soft/PBDeCompiler2.rar......
  • 牛客 55994 2023牛客五一集训派对day3 D Points Construction Problem
    D-PointsConstructionProblem_2023牛客五一集训派对day3(nowcoder.com)将图上恰好\(n\)个点染成黑色,使得图上相邻的黑白点对数量恰好为\(m\)考虑\(n\)个黑点如果不相邻,则两个点的贡献互不影响考虑相邻的情况,我们把相邻的点连边,则贡献为每一个连通块的贡献的和,我们用......
  • 判断网卡MAC地址前缀
    我们的电脑上现在可是很多的网卡,因为存在虚拟网卡,Lan口和wifi网卡等等。之前有人给出判断的前缀,但是不够完整。可以从这里下载完整的资料。1)先由GetAdaptersInfo获取所有网卡的基本信息。然后利用网卡名去注册表中查找对应的硬件信息。若是物理网卡,其硬件信息中通常会包含PCI。......
  • 前端进化笔记-JavaScript(二)
    因为作者学过其他类c语言,就不对大家都熟悉的内容进行赘述了。语法JavaScript区分大小写标识符:变量,函数,属性,函数参数的名称第一个字符必须是字母,下划线(_),美元符号($);关键字、保留字、true、false和null不能用作标识符作者在后续阅读的过程中,发现对各种名称不熟悉导致阅读不......
  • juicefs 方便mac 进行utm 虚拟机的文件共享
    以前写过基于sshfs实现共享的,以下是一个基于juicefs的,可以参考参考玩法 简单说明:每个系统都挂载juicefs参考使用创建juicefs依赖资源 version:'3'services:db:image:mysql:5.6environment:-MYSQL_ROOT_PASSWORD=dalon......
  • Codeforces 1229B Kamil and Making a Stream
    \(\gcd\)一个性质:对于正整数\(x\),重复\(x\leftarrow\gcd(x,i)\)(\(i\ge0\))直到\(x=1\),\(x\)出现的值个数上限为\(\log_2(x)+1\)证明:考虑到\(x\)是逐渐变小,则在\(x\)变小的情况下,对于\(x=\prod_{i=1}^kp_i^{c_i}\)(\(p_i\\operatorname{为质数}\))中的\(c_i\)......
  • Codeforces Round 869 (Div. 1)
    C根据初中数学知识,恒成立问题考虑未知数x每一项的系数,然后得到(d+1)个等式,根据前两个就可以推出\(s=\frac{b_{d-1}-a_{d-1}}{da_d}\)且\(a_d=b_d\)但是一直不会用题目给的n个点值求出最高的两项系数(或它们的比值),并且怀疑是否把(d+1)个等式全部用到会更好做,然后两个方向分别搞了......