31800人加入学习
(85人评价)
C#编程-第一季-编程基础-宇宙最简单2021最新版

制作完成于2021年10月10日,使用Visual Studio 2019

价格 免费

  string str = Console.ReadLine(); //让用户输入一组数字字符串

  string[] strArray = str.Split(" ");//分离用户输入的字符串

  int[] intArray = new int[strArray.Length];//新声明一个整数数组保存用户输入的分离后的字符串  strArray.Length就是数组的长度

  for (int i = 0; i < strArray.Length; i++)//for循环遍历用户输入的数组 也就是strArray数组中的每个数
  {
      int number = Convert.ToInt32(strArray[i]);//将遍历出的数组保存到number中 因为数组的长度是整数  转为int32保存

      intArray[i] = number;//遍历后的number就是组数的长度 赋值回intArray中

      //Console.Write(intArray[i] + " ");//输出
  }
  //假如用户输入n个数  那么需要比较的次数就是n-1
  for (int j = 0; j < intArray.Length - 1; j++)//对用户输入的数进行比较(n-1轮)
  {
      //不管j=多少 i总是要遍历次数为intArray.length-1次
      //因为在第一次比较后  最大的数字已经在最后了
      //不需要多余的比较 而且每次都是 所以可以优化算法intArray.length-1-j次(这里对算法进行第一次优化)

      bool isChange = false;//(这里对算法进行第二次优化)判断是对比是否有变化

      for (int i = 0; i < intArray.Length - 1 - j; i++)
      //外层比较多少轮  内层对输入的数进行比较 Length - 1是因为不需要比较最后一个数  因为它后面没有数

      {
          if (intArray[i] > intArray[i + 1])//比较当前数字是否比自身后面的数字大
          {
              //如果左边大于右边就需要交换
              int temp = intArray[i];//先将当前的数保存

              intArray[i] = intArray[i + 1];//将大于当前的数赋值给当前数

              intArray[i + 1] = temp;//然后将保存好的当前数字赋值回后面的数字完成交换

              isChange = true;//有变化就继续比较说明还不是有序的状态
          }
      }
      if (isChange == false)//如果没有变化 停止 当前已经是有序状态 不需要再执行比较
      {
          break; //写在哪个循环就跳出哪个循环
      }
      //Console.Write(intArray + " ");
  }
  foreach (int k in intArray)//遍历的是最新声明的int数组  intArrary
  {
      Console.Write(k + " ");//遍历输出
  }

[展开全文]

string str = Console.ReadLineo;string[] strArray = str.Split("");
int[] intArray = new int[strArray.Length];for (int i =6; i < strArray.Length; i++){
int number = Convert.ToInt32(strArray[i]);intArray[i]= number;
}
//获得一组数字//19-19-18
for(int j =0; j< intArray.Length - 1; j++)//进行length-1轮比较{

bool ischange = false;
//进行比较
for(int i =0; i < intArray.Length - 1-j;i++){
//左边大于右边,就交换
if (intArray[i] > intArray[i+1])
int temp = intArray[i];
intArray[i] = intArray[i +1];

intArray[i + 1] = temp;

}

if(ischange == false)

{
   break;

}
break跳出离其最近的循环

[展开全文]

优化算法,已经排过序的数不需要再做比较

[展开全文]
 static void test12()
        {
            Console.WriteLine("请输入一个数组:");
            string str = Console.ReadLine();
            string[] strArray = str.Split(' ');
            int[] intArray = new int[strArray.Length];
            bool isChange = false;
            for (int i = 0; i < strArray.Length; i++)
            {
                Console.Write(strArray[i] + " ");
                int num = Convert.ToInt32(strArray[i]);
                intArray[i] = num;
            }
            for (int j = 0; j < intArray.Length-1; j++)//length-1轮比较
            {
                for (int i = 0; i < intArray.Length-1; i++)
                {
                    if (intArray[i]>intArray[i+1])
                    {
                        int temp = intArray[i];
                        intArray[i] = intArray[i + 1];
                        intArray[i + 1] = temp;
                        isChange = true;
                    }
                }
                if (isChange==false)
                {
                    break;
                }
            }
            Console.WriteLine();
            foreach (int temp in intArray)
            {
                Console.Write(temp+" ");
            }
        }

 

[展开全文]

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;

}

获得一组数字

[展开全文]

  for (int i = intArray.Length - 1; i > 0; i--)
            {
                for (int j = 1; j < i + 1; j++)
                {
                    if (intArray[j - 1] > intArray[j])
                    {
                        int temp = intArray[j - 1];
                        intArray[j - 1] = intArray[j];
                        intArray[j] = temp;
                    }
                }
            }
            foreach (int i in intArray)
            {
                Console.Write(i + " ");
            }

[展开全文]

int[] arr=[50,27,13,40,9,35];

for(int j=0;j<arr.length-1;j++){

for(int i=0;i<arr.length-1-j;i++){

 

}

}

[展开全文]

第九十二课  编程题-排序-冒泡排序(手动)

编写一个控制台程序,要求用户输入一组数字并用空格隔开,对用户输入的数字从小到大的顺序输出。(Array.Sort方法和冒泡排列)

string a = Console.ReadLine();
string[] b = a.Split(" ");
int[] c = new int[b.Length];
for (int d = 0; d < b.Length; d++)
{
    int e = Convert.ToInt32(b[d]);
    c[d] = e;
}
for (int f = 0; f < c.Length - 1; f++)
{
    for (int g = 0; g < c.Length - 1-f; g++)
    {
        if (c[g] > c[g + 1])
        {
            int temp = c[g];
            c[g] = c[g + 1];
            c[g + 1] = temp;
        }
    }
}
foreach (int h in c)
{
    Console.Write(h + " ");
}

分析:

1.外层循环for (int f = 0; f < c.Length - 1; f++)

内层循环 for (int g = 0; g < c.Length - 1-f; g++)

其实是一个意思。

外层循环以为f++的增长与c.Length - 1(不变值)而随循环次而减少这次数,也就是他们之间的距离在缩短。

内层循环应为g=0(不变值),每次循环都从0开始,但c.Length - 1-f是每次都减少的,所以他们之间的距离也在缩小。

所以,内层循环和外层循环意思是一样的,但他们都同步。

2. c本来就是一个组,可以放在里面很多数字,所以当它是c[]时,就放心大胆的用foreach。

3. 这道题就是将字符串以空格拆分为一个一个的小字符串保存在字符串组中,在将字符串组中的没个成员分别转换为数字,并存放在数字组中,然后用冒泡排序方法将数字组中的数字从小到大排列,最后输出。

[展开全文]

授课教师

问问题加入A计划,有专门负责答疑的老师哦!!!

课程特色

下载资料(1)
视频(117)
图文(3)