首页 > 编程语言 >c#面试编程题

c#面试编程题

时间:2023-08-05 20:24:48浏览次数:53  
标签:Console intArray c# 编程 strArray Length 面试 int str

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

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

 

  1. 编写⼀个应⽤程序⽤来输⼊的字符串进⾏加密,对于字⺟字符串加密规则如下: ‘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’?对于其他字符,不进⾏加密。

    1.   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);
                  }

       

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

    1.  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 + " ");
                  }

       

    2.   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();

       

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

    1. 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 + " ");
                  }
              }
          }
      }

       

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

    1.   // 判断 数字 字母 _
                  // 数字开头
                  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("不是合法标识符");
                  }

       

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

    1.  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("不是回文串");
                  }

       

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

    1.   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);

       

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

    1.    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);

       

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

    1.   //时间  空间
                  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);
                  }

       

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

    1.             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]);
                      }
                  }

       

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

    1.   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);

       

  11. 张三总爱乱花钱。每个⽉的⽉初妈妈给张三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

    1. 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);
                  }
      
              }
          }
      }

       

  12. 输出9x9乘法表

    1.  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();
                  }

       

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

    1. 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;
                      }
                  }
      
              }
          }
      }

       

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

    1.   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);

       

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

    1.  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);

       

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

    1.    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);
                      }
                  }

       

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

    1.    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);

       

  18. 已知: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;
            }

 

   

标签:Console,intArray,c#,编程,strArray,Length,面试,int,str
From: https://www.cnblogs.com/misakayoucn/p/17608542.html

相关文章

  • P9494 「SFCOI-3」进行一个走的行 思考--zhengjun
    平衡树好题。考虑整体直接模拟操作。l-1x\(x\in[1,l]\):不用动;\(x\in(l,2l]\):整体减去\(l\)之后暴力插回去;\(x\in(2l,+\infty)\):整体减\(l\)与第一段合并。lrx:区间加即可复杂度显然是2log的,考虑重新插入一次的时候值会减半。代码#include<bits/stdc++.h......
  • bevy 0.11 camera2d zoom and pan with touchpad on macos
    usebevy::prelude::*;usebevy::{input::mouse::MouseWheel,render::camera::ScalingMode};usebevy::input::touchpad::TouchpadMagnify;usebevy::window::PrimaryWindow;constGRID_SIZE:usize=200;pubstructSimpleCameraPlugin;implPluginforSimpleCam......
  • file input in bootstrap css file 中修改背景颜色和风格
    usethismayhelpyou<divclass="form-group"><divclass="fileUploadbtnbtn-primary"><span>Fileinput</span><inputtype="file"id="exampleInputFile"class="......
  • Codeforces 1843D:Apple Tree
    1843D.AppleTreeDescription:一棵树(\(Tree\)无环无重边)\(n\)个节点,根节点为1(节点编号\(1\)~\(n\)),树上只有2个苹果,每次摇动苹果树时,每个苹果会有如下变化:当前苹果位于节点\(u\):1.若节点\(u\)有子节点,则该苹果移动到此节点(若有多个子节点,则可以到任意一个)。2.......
  • ChatGenTitle:使用百万arXiv论文信息在LLaMA模型上进行微调的论文题目生成模型
    ChatGenTitle:使用百万arXiv论文信息在LLaMA模型上进行微调的论文题目生成模型相关信息1.训练数据集在Cornell-University/arxiv,可以直接使用;2.正式发布LLaMa-Lora-7B-3和LLaMa-Lora-7B-3-new版本的LoRA模型权重,允许本地部署使用;完成了基于alpaca-lora上进行的LLaMa......
  • AC自动机
    AC自动机学习笔记AC自动机简介自动机的一种,著名的多模匹配算法可以理解为Trie+KMP结构建立在字典树的基础上先把所有要匹配的模式串全部塞到一个字典树上面然后在上面添加一种指针类似于KMP中的nxt[]数组,AC自动机中的每个节点有一个叫做fail的指针(失配指针)与KM......
  • Docker网络详解
    Docker是一种轻量级容器化技术,允许通过隔离OS级的虚拟化方式在一个操作系统上运行多个应用。网络是Docker中的一个非常重要的组件,它允许容器之间进行通信和联网访问。本文介绍Docker网络的基础知识,包括网络类型、网络驱动程序和网络配置等方面。一、Docker网络概述Docker网络有......
  • c#学习笔记----------------c#简单算法之排序算法
     排序算法参考文章:https://blog.csdn.net/weixin_61361738/article/details/128794945冒泡排序namespaceConsoleApp1{internalclassProgram{staticvoidMain(string[]args){stringstr=Console.ReadLine();str......
  • sqlalchemy 自动过滤逻辑删除(软删除)记录
     先创建一个基类,用来表示某个类支持逻辑删除classSoftDeleteModel:'''逻辑删除基类用来实现逻辑删除。继承这个基类的子类需要在数据库的列中存在deleted_at列,类型为varchar。'''deleted_at:Mapped[str]=mapped_column(String(50),default=None......
  • DOM编程
    DOM编程介绍DOM编程是指使用JavaScript与HTML文档中的DOM(文档对象模型)进行交互的过程。文档:整个HTML网页文档对象:网页中的每一部分都转换为了对象模型:使用模型表示对象之间的关系DOM是HTML文档的树状结构表示,它允许开发者使用JavaScript来访问、操作和修改HTML元素、......