• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
学习笔记
Misaka的学习笔记
博客园    首页    新随笔    联系   管理    订阅  订阅
c#面试编程题

3个可乐瓶可以换⼀瓶可乐,现在有364瓶可乐,问⼀共可以喝多少瓶可乐,剩下⼏个空瓶。

int pingNumber = 364; int heNumber = 364; while (pingNumber > 2) { heNumber += pingNumber / 3; pingNumber = (pingNumber / 3) + (pingNumber % 3); } Console.Write("一共可以喝" + heNumber + ",剩下" + pingNumber);

 编写⼀个应⽤程序⽤来输⼊的字符串进⾏加密

,对于字⺟字符串加密规则如下: ‘a’→’d’ ‘b’→’e’ ‘w’→’z’ …… ‘x’→’a’ ‘y’→’b’ ‘z’→’c’‘A’→’D’ ‘B’→’E’ ‘W’→’Z’ …… ‘X’→’A’ ‘Y’→’B’ Unity 1142 C#编程-第⼀季-编程基础-宇宙最简单2021最新版 54 ‘Z’→’C’?对于其他字符,不进⾏加密。

  String str = Console.ReadLine();
            char[] strArray = str.ToCharArray();
            for (int i = 0; i < strArray.Length; i++)
            {
                if ((strArray[i] >= 'a' && strArray[i] <= 'z') || (strArray[i] >= 'A' && strArray[i] <= 'Z'))
                {
                    strArray[i] = (char)(strArray[i] + 3);// 'a'+3    97+3  = 100  = 'd'
                    if (strArray[i] > 'z' && strArray[i] < 'z' + 4)//xyz
                    {
                        strArray[i] = (char)(strArray[i] - 26);
                    }
                    if (strArray[i] > 'Z' && strArray[i] < 'Z' + 4)//XYZ
                    {
                        strArray[i] = (char)(strArray[i] - 26);
                    }
                }
            }

            foreach (char temp in strArray)
            {
                Console.Write(temp);
            }

 

编写⼀个控制台程序,

要求⽤户输⼊⼀组数字⽤空格间隔,对⽤户输⼊的数字从⼩到⼤输出。 (Array.Sort⽅法和冒泡排序)

string str = Console.ReadLine();
            string[] strArray = str.Split(" ");
            int[] intArray = new int[strArray.Length];
            for (int i = 0; i < strArray.Length; i++)
            {
                int number = Convert.ToInt32(strArray[i]);
                intArray[i] = number;
            }
            //
            Array.Sort(intArray);
            foreach (int temp in intArray)
            {
                Console.Write(temp + " ");
            }
string str=Console.ReadLine();
            string[] strarr = str.Split(',');
            int[] intarr= new int[strarr.Length];
            for (int i = 0; i < strarr.Length; i++)
            {
                intarr[i] = Convert.ToInt32(strarr[i]);
            }
            for(int i = 0;i<intarr.Length-1; i++)// 外层循环控制循环次数
            {
                for(int j = 0;j<intarr.Length-1-i; j++)//内层循环用于交换相邻要素
                {
                    int temp;
                    // if (split[j] < split[j + 1])倒序排列
                    if (intarr[j] > intarr[j + 1])
                    {
                        temp = intarr[j + 1];
                        intarr[j + 1] = intarr[j];
                        intarr[j] = temp;
                    }
                }
            }
            string result = "";
            foreach(int i in intarr)
            {
                result += i + ",";
            }
            Console.WriteLine(result);
            Console.ReadLine();

有n(n<=100)个整数,已经按照从⼩到⼤顺序排列好,现在另外给⼀个整数x,请将该数插⼊到 序列中,并使新的序列仍然有序。 输出新的序列

using System;

namespace _032_编程题
{
    class Program
    {
        static void Main(string[] args)
        {
            //得到一个有序的数组
            string str = Console.ReadLine();
            string[] strArray = str.Split(" ");
            int[] intArray = new int[strArray.Length];
            for (int i = 0; i < strArray.Length; i++)
            {
                int number = Convert.ToInt32(strArray[i]);
                intArray[i] = number;
            }
            int x = Convert.ToInt32(Console.ReadLine());
            int m = intArray.Length - 1; 
            //bool find = false;//是否找到满足条件的索引位置,这个索引位置满足条件 m<=x<=m+1
            for (int i = 0; i < intArray.Length-1; i++)
            {
                if(x>=intArray[i] && x <= intArray[i + 1])
                {
                    m = i;
                    //find = true;
                    break;
                }
            }
            if (x < intArray[0])
            {
                m = -1;
            }
            //if (find == false)
            //{
            //    m = intArray.Length - 1;
            //}
            //
            int[] intArrayNew = new int[intArray.Length + 1];
            //0-m = 0~-1    
            for (int i = 0; i < m+1; i++)
            {
                intArrayNew[i] = intArray[i];
            }
            intArrayNew[m + 1] = x;
            //m+1~length-1
            for(int i = m + 1; i < intArray.Length; i++)
            {
                intArrayNew[i+1] = intArray[i];
            }
            foreach(int temp in intArrayNew)
            {
                Console.Write(temp + " ");
            }
        }
    }
}

输⼊⼀个字符串,判断其是否是C#的合法标识符。

// 判断 数字 字母 _
            // 数字开头
            bool isRight = true;
            for (int i = 0; i < str.Length; i++)
            {
                if ((str[i] < '0' || str[i] > '9') && (str[i] < 'a' || str[i] > 'z') && (str[i] < 'A' || str[i] > 'Z') && (str[i] != '_'))
                {
                    isRight = false;
                    break;
                }
            }
            if (str[0] >= '0' && str[0] <= '9')
            {
                isRight = false;
            }
            if (isRight)
            {
                Console.WriteLine("是合法标识符");
            }
            else
            {
                Console.WriteLine("不是合法标识符");
            }

“回⽂串”是⼀个正读和反读都⼀样的字符串,⽐如“level”或者“noon”等等就是回⽂串。请写⼀个 程序判断读⼊的字符串是否是“回⽂”。

string str = Console.ReadLine();
            // 8  8/2=4  0-3
            // 7  7/2=3  0-2
            // 7
            // 0 - 6  1-5  2-4    i ~ length-1-i
            bool isHui = true;
            for (int i = 0; i < str.Length / 2; i++)
            {
                // i  length-1-i
                if (str[i] != str[str.Length - 1 - i])
                {
                    isHui = false;
                    break;
                }
            }
            if (isHui)
            {
                Console.WriteLine("是回文串");
            }
            else
            {
                Console.WriteLine("不是回文串");
            }

最近张三开始研究天⽓的变化。历经千⾟万苦,他收集了连续N(1<N<1000000)天的最⾼⽓温数据。现在他想知道⽓温⼀直上升的最⻓连续天数。样例输⼊1 3 5 2 3 5 7 8 6 9样例输出5

string str = Console.ReadLine();
            string[] strArray = str.Split(" ");
            int[] intArray = new int[strArray.Length];
            for (int i = 0; i < strArray.Length; i++)
            {
                int number = Convert.ToInt32(strArray[i]);
                intArray[i] = number;
            }
            int maxDays = 1;//记录最高 气温连续升高的天数
            int count = 1;//记录气温连续升高的天数
            for (int i = 0; i < intArray.Length - 1; i++)
            {
                if (intArray[i] < intArray[i + 1])
                {
                    count++;
                }
                else
                {
                    if (count > maxDays)
                    {
                        maxDays = count;
                    }
                    count = 1;
                }
            }
            if (count > maxDays)
            {
                maxDays = count;
            }
            Console.WriteLine("气温连续升高的最长天数" + maxDays);

输⼊是个不相等的正整数,输出这10个正整数中的第⼆⼤的数。 样例输⼊ 3 5 7 2 9 5 3 10 3 8 样例输出 9

string str = Console.ReadLine();
            string[] strArray = str.Split(" ");
            int[] intArray = new int[strArray.Length];
            for (int i = 0; i < strArray.Length; i++)
            {
                int number = Convert.ToInt32(strArray[i]);
                intArray[i] = number;
            }

            int max1 = 0;int 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("第一大值是" + max1 + " 第二大值是" + max2);

描述给定⼀个只包含⼩写字⺟的字符串,请你找出第⼀个仅出现⼀次的字符。如果没有,输出 no。

//时间  空间
            string str = Console.ReadLine();
            int[] countArray = new int[26];//计数,保存每个字符出现的个数
            for (int i = 0; i < str.Length; i++)
            {
                countArray[str[i] - 'a'] = countArray[str[i] - 'a'] + 1;
            }

            bool isFind = false;
            char c = ' ';
            for (int i = 0; i < str.Length; i++)
            {
                if (countArray[str[i] - 'a'] == 1)
                {
                    isFind = true;
                    c = str[i];
                    break;
                }
            }
            if (isFind == false)
            {
                Console.WriteLine("no");
            }
            else
            {
                Console.WriteLine(c);
            }

⼤⼩写字⺟互换 把⼀个字符串中所有出现的⼤写字⺟都替换成⼩写字⺟,同时把⼩写字⺟替换成⼤写字⺟。

string str = Console.ReadLine();
            //a-z  A-Z
            int cha = 'A' - 'a';

            for (int i = 0; i < str.Length; i++)
            {
                if (str[i] >= 'a' && str[i] <= 'z')
                {
                    char c = (char)(str[i] + cha);
                    Console.Write(c);
                }
                else if (str[i] >= 'A' && str[i] <= 'Z')
                {
                    char c = (char)(str[i] - cha);
                    Console.Write(c);
                }
                else
                {
                    Console.Write(str[i]);
                }
            }

在⼀个数组中查找⼀个给定的值,输出第⼀次出现的位置(从1开始) 输⼊第⼀⾏是数组中的元素 第⼆⾏是要查找的数 输出输出第⼀次出现的位置 输⼊ 3 8 23 45 2 5 23 输出3

string str = Console.ReadLine();
            string[] strArray = str.Split(" ");
            int[] intArray = new int[strArray.Length];
            for (int i = 0; i < strArray.Length; i++)
            {
                int n = Convert.ToInt32(strArray[i]);
                intArray[i] = n;
            }

            int number = Convert.ToInt32(Console.ReadLine());
            int location = -1;
            for(int i = 0; i < intArray.Length; i++)
            {
                if (number == intArray[i])
                {
                    location = i + 1;
                    break;
                }
            }
            Console.WriteLine(location);

张三总爱乱花钱。

每个⽉的⽉初妈妈给张三300元钱 ,张三会预算这个⽉的花销,并且能做到实 际的花销和预算相同。为了让张三学会对⾦钱的管理,妈妈提出,张三可以随时把整百的前存在 她那⾥,到了12⽉31⽇,他会加上20%还给张三,也就是说,张三给妈妈的每⼀个100元,到年 底都会变成120元!因此张三制定了⼀个存储计划:每个⽉的⽉初,在得到妈妈给的零花钱后, 如果他预计到这个⽉的⽉末⼿中还会有多于100元或恰好100元,他就会把整百的钱存在妈妈那 ⾥,剩余的钱存在⾃⼰⼿⾥。⽐如11⽉初张三⼿中还有83元,妈妈留了张三300元。张三预计11 ⽉的花销是180元,那么他就会在妈妈那⾥存200元,⾃⼰留下183元。到了11⽉⽉末,张三⼿ 中会剩下3元钱。 张三发现这个存储计划的主要⻛险是,存在妈妈那⾥的钱在年末之前不能取出。有可能在某个⽉ 的⽉初,张三⼿中的钱加上这个⽉妈妈给的钱,不够这个⽉的预算。如果出现这种情况,张三将 不得不在这个⽉省吃简⽤,压缩预算。 现在请你根据2019年1⽉到12⽉每个⽉张三的预算,判断会不会出现这种情况。如果储蓄计划实 施过程中会出现某个⽉钱不够⽤的情况,输出-x,x表⽰出现这种情况的第⼀个⽉;如果不会,计 算到2019年12⽉31⽇,妈妈将张三平时存的钱加上20%还给张三后,张三⼿⾥会有多少钱。 样例输⼊ 240 280 200 300 120 350 80 50 270 260 样例输出 -7 样例输⼊ 290 230 280 200 300 170 130 50 90 80 200 300 样例输出 1520

using System;

namespace _035_模拟法_张三的零花钱
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = Console.ReadLine();
            string[] strArray = str.Split(" ");
            int[] budget = new int[strArray.Length];
            for (int j = 0; j < strArray.Length; j++)
            {
                int n = Convert.ToInt32(strArray[j]);
                budget[j] = n;
            }
            int self = 0;
            int mom = 0;
            int i = 0;
            int tmp = 0;

            for (i = 0; i < 12; i++)//0-11  i+1
            {
                //本月一共有多少300+self
                //预算budget[i]
                tmp = 300 + self - budget[i];//剩余的钱  280/100 = 2*100 =200
                if (tmp < 0)
                {
                    //i+1
                    break;
                }
                //整百的
                mom += (tmp / 100)*100;
                self = tmp % 100;
            }
            //
            if (tmp < 0)
            {
                Console.WriteLine("-" + (i + 1));
            }
            else
            {
                self = self + (int)(mom * 1.2);
                Console.WriteLine(self);
            }

        }
    }
}

输出9x9乘法表

for (int i = 1; i <= 9; i++)
            {
                //i 右乘数  左乘数1-i
                for (int j = 1; j <= i; j++)
                {
                    Console.Write("{0}x{1}={2} ", j, i, i * j);
                }
                Console.WriteLine();
            }

由系统⽣成⼀个随机数(1-100),让玩家猜数字,如果猜的数字⽐随机数⼩,输出猜⼩了,如 果猜的数字⽐随机数⼤,输出猜⼤了,猜中的话,输出猜中了,并结束游戏,没有猜中的话,就 让玩家⼀直猜。

using System;

namespace _027_猜数字
{
    class Program
    {
        static void Main(string[] args)
        {
            //随机数的生成Random
            Random rd = new Random();
            //伪随机 
            //Console.WriteLine(rd.Next(1, 10)); 

            int number = rd.Next(1, 101);

            while (true)
            {
                Console.WriteLine("猜猜我的数字是多少:");
                int numberUser = Convert.ToInt32(Console.ReadLine());
                if (numberUser > number)
                {
                    Console.WriteLine("你猜大了");
                }else if (numberUser < number)
                {
                    Console.WriteLine("你猜小了");
                }
                else
                {
                    Console.WriteLine("你猜中了");
                    break;
                }
            }

        }
    }
}

假设有个隧道,隧道以字符 ‘#’ 结束,挖矿的过程中,会遇到钻⽯ ‘*’ 和美⾦ ‘1’ ~ ‘9’ ,让矿⼯ ⼩六挖到隧道的尽头,假设每个钻⽯价值500美⾦,统计⼩六挖到了价值多少美⾦的收获? 样例输⼊ ka4d*s6kkl8s*d9fyo# 样例输出 102

char c;// '0' --  55  '9'    -- 
            int sum = 0;
            do
            {
                c = (char)Console.Read();
                if (c >= '0' && c <= '9')
                {
                    //
                    int number = c - '0';
                    sum += number;
                }
                else if (c == '*')
                {
                    sum += 500;
                }
            } while (c != '#');
            Console.Write(sum);

数字和字符混合在⼀起了,作为⼀个优秀的挖掘⼈员,把输⼊的数字挖出来,并计算这些数字的 和,并输出。输⼊以@作为结束。 样例输⼊ 23a34b34@ 样例输出 19

char c = (char)Console.Read();
            Console.WriteLine(c);
            char c;// '0' --  55  '9'    -- 
            int sum = 0;
            do
            {
                c = (char)Console.Read();
                if (c >= '0' && c <= '9')
                {
                    //
                    int number = c - '0';
                    sum += number;
                }
            } while (c != '@');
            Console.Write(sum);

编写⼀个程序,打印出所有的“⽔仙花数”,所谓“⽔仙花数”是指⼀个三位数,其各位数字⽴⽅等 于该数本⾝。例如153=1*1*1+5*5*5+3*3*3,所以153是“⽔仙花数”。

for (int i = 100; i <= 999; i++) { int ge = i % 10; int shi = (i / 10) % 10; int bai = i / 100; if (i == ge * ge * ge + shi * shi * shi + bai * bai * bai) { Console.WriteLine(i); } }

班上有若⼲名学⽣,输⼊学⽣的个数,然后输⼊每⼀个学⽣的年龄,计算出来平均年龄,保留到 ⼩数点后两位,输出平均年龄。 样例输⼊: 2 20 19 样例输出 19.5

int n = Convert.ToInt32(Console.ReadLine());

            int sum = 0;
            int cheng = 1;// 1 10 100 1000
            while (n != 0)
            {
                int i = n % 10;//i就是遍历各个位上的数字

                if (i != 0)
                {
                    i *= cheng;// ge  1*
                    sum += i;
                    cheng *= 10;
                }


                n = n / 10;
            }
            Console.WriteLine(sum);

已知:Sn = 1 + 1/2 + 1/3 + ... + 1/n。 显然对于任意⼀个整数k,当n⾜够⼤的时候,Sn⼤于K。 现输⼊⼀个整数K(1≤K≤15),要求计算出⼀个最⼩的n,使得Sn>K。 输⼊⼀个整数K,输出⼀个整数n。 样例输⼊1,样例输出2

 int n = Convert.ToInt32(Console.ReadLine());
            //标志位,标志是否达到了某个条件
            bool yudao = false;// 默认还没有遇到第一个非0
            while (n != 0)//从低位到高位遍历
            {
                int i = n % 10;//23407800   i = 0 0 8 7 0 4 3 2
                //判断是否遇到了第一个非0数字
                //已经遇到了第一个非0数字
                //不需要去掉0了
                //还没有遇到第一个非0数字
                //去掉
                if (yudao == false)//还没有遇到第一个非0数字
                {
                    if (i != 0)//i=8
                    {
                        Console.Write(i);
                        yudao = true;
                    }
                }
                else //i=7
                {
                    Console.Write(i);
                }

                //if (i != 0)
                //{
                //    Console.Write(i);
                //}
                n = n / 10;
            }

 

 
 
 
 
 
 
posted on 2023-08-05 20:16  我们打工人  阅读(172)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3