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

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

价格 免费
namespace _018_数组练习
{
    internal class Program
    {
        static void Main(string[] args)
        {
           
            //下列代码 是让用户 输入一串数字,电脑会把它当作一个字符串来保存,我们通过两次转换,和一次遍历
            //,来把它保存成一个  整数数组  即  int数组.

            string str = Console.ReadLine();//得到用户的输入,生成一个字符串
            string[] strArray = str.Split(" ");//把字符串用空格分隔,并重新保存为一个字符串数组.
              
            //下列代码意在 把 字符串数组 转换成 整数 int 形式的数组.
            int[] intArray= new int[strArray.Length]; // 先声明一个和 上面字符串数组 长度一样的  int数组.
            for(int i=0;i< strArray.Length;i++)       // 遍历字符串数组的每一个下标
            {
                int number = Convert.ToInt32(strArray[i]);//把每一个遍历的下标里面的值,转换成 int 形式
                intArray[i] = number;//  把 每个 整数 的值 装到   ,整数数组里面(int 数组) 

            }


            int x = Convert.ToInt32(Console.ReadLine());// 再让用户输入一个 整数.我们把它声明为  X
            //int m = 0;// x 要插入上面的数组,要找到一个最接近它且比它小的数.我们把它声明为 m
            int m = intArray.Length - 1;//也可以直接定义m 为原来数组的最大值.这样如果x是最大的,我们也可以找到m的位置.

            //bool find = false;//定义个一个 布尔 变量 来确认 是否可以找到M...或者说 是否可以找到满足条件的索引.
            //条件  为  M <= x  <= M+1 


            for (int i=0; i< intArray.Length-1;i++)//遍历整个整数数组,因为i每次都会自增,所以遍历时要减一位.不然就遍历过头了
            {
                if(x >= intArray[i] && x <= intArray[i+1])//找到比用户输入的X 要小的那一个数.x <= intArray[i+1]  这个感觉可以省略掉
                {
                    m = i;//把 这个值赋值给 M 
                    //find= true;//确认 已经找到 M 的值,返回 真  true.
                    break;// 到这里就可以跳出循环了.
                }
            }

            //下面我们要新建一个数组,把m前的数值  x   和m 之后的数值 都放进去.这个新数组比原来多了一个数,引索+1即可.
            int[] intArrayNew = new int[intArray.Length + 1];

            // 先把原来数组0-m (包括M)的值 放到,新数组里面,还是使用for循环来进行遍历.
            for(int i = 0; i <=(m); i++) 
            {
                intArrayNew[i] = intArray[i];
            }
            //然后把  X  也插入新数组.
            intArrayNew[m + 1] = x;

            //在把 m 之后的数值 放到 新数组里面.
            for(int i =m+1;i< intArray.Length;i++)
            {
                intArrayNew[i + 1] = intArray[i];
            }
            //输入这个新的数组---使用 foreach
            foreach(int temp in intArrayNew)
            {
                Console.WriteLine(temp);
            }


        }
    }
}

 

[展开全文]

           只判断小于的情况代码要更简洁xie

//从小到大的数组插入一个数排序
            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 xIndex = 0;
            for (int i = 0; i < intArray.Length; i++)
            {
                if (intArray[i] >= x)
                {
                    xIndex = i;
                    break;
                }
                else
                {
                    xIndex = intArray.Length;
                }
            }

            int[] newIntArray = new int[intArray.Length + 1];
            for (int i = 0; i < newIntArray.Length; i++)
            {
                if (i < xIndex)
                {
                    newIntArray[i] = intArray[i];
                }
                else if (i == xIndex)
                {
                    newIntArray[i] = x;
                }
                else
                {
                    newIntArray[i] = intArray[i - 1]; //1 3 4 5 
                }
            }
            foreach (int t in newIntArray)
            {
                Console.Write(t + " ");
            }

[展开全文]
 static void test10()
        {
            Console.WriteLine("请输入一个有序的数组:");
            string str = Console.ReadLine();
            string[] strArray = str.Split(' ');
            int[] intArray = new int[strArray.Length];
            for (int i = 0; i < strArray.Length; i++)
            {
                int num = Convert.ToInt32(strArray[i]);
                intArray[i] = num;
            }
            Console.WriteLine("请输入一个整数:");
            int n = Convert.ToInt32(Console.ReadLine());
            int m = intArray.Length-1;
            //bool find = false;//默认是未找到索引位置 m<=x<=x+1
            for (int i = 0; i < intArray.Length-1; i++)
            {                
                if (n>=intArray[i]&&n<=intArray[i+1])
                {
                    m = i;
                    //find = true;
                    break;
                }               
            }
            if (n<intArray[0])
            {
                m = -1;
            }
            int[] intArray1 = new int[intArray.Length + 1];
            for (int i = 0; i < m+1; i++)
            {
                intArray1[i] = intArray[i];
            }
            intArray1[m + 1] = n;
            for (int i = m+1; i < intArray.Length; i++)
            {
                intArray1[i+1] = intArray[i];
            }
            foreach (int temp in intArray1)
            {
                Console.Write(temp+" ");
            }

            //if (find==false)
            //{
            //    m = intArray.Length - 1;
            //}

             
        }

 

[展开全文]

Console.ReadLine(); 键盘输入

[展开全文]

第九十课  编程题-插入

1. 输入(n<=10)个整数,已经按照从小到大顺序排列好,现另外给出一个整数X,请将整数X插入序列中,并使新的序列仍有序排列。

还没做出来。。。。。。没想出来怎么插入到序列里,再容朕想想。

string a = Console.ReadLine();
string b = Console.ReadLine();
string[] c = a.Split(" ");
string[] d = b.Split(" ");
int[] e = new int[c.Length];
int[] w = new int[d.Length];
int j = 0;
for(int f = 0; f < c.Length; f++)
{
    int g =Convert.ToInt32(c[f]);
    e[f] = g;
}
for(int h = 0; h < d.Length; h++)
{
    int z = Convert.ToInt32(d[h]);
    w[h] = z;
}
for(int i=0;i<e.Length;i++)
{
    if(e[i] > w[0])
    {
        j = i;
        break;
    }
}
for (int k = 0; k <= j - 1; k++)
{
    Console.Write(e[k] + " ");
}
Console.Write(w[0] + " ");
for (int l = j; l < e.Length; l++)
{
    Console.Write(e[l] + " ");
}

思路:

①先将字符串转换为以空格划分的字符串组
②再将字符串组中的字符分别转换为数字组
③接下来将数字组中的每个数字分别与输入的那一个数字比较,比较后就看你自己怎么设定if语句中的条件了
④然后利用数字组中每个数字的索引分段输出,你所输入的单独的那个数字也随着插入输出就可以了。

憋了我好几天,学编程真得有个好脑子,头发可能就不需要了。等我脑子清凉点再来听老师怎么将。

听完老师的讲解,我弄明白了这道题,但我的思路还是很难清晰的跟上老师的讲解速度,看来得多听几次了。

[展开全文]

老师可以纠正,我们的写法比较死,有些方法不熟

string a = Convert.ToString(Console.ReadLine());
            string[] b = a.Split(" ");


            int[] d = new int[b.Length];
            for (int i = 0; i < b.Length; i++)
            {

                d[i] = Convert.ToInt32(b[i]);


            }
            for (int x = 0; x < d.Length; x++)
            {
                int suouin = x;
                int NEW = d[x];
                for (int i = x + 1; i < d.Length; i++)
                {

                    if (NEW > d[i])
                    {
                        NEW = d[i];
                        suouin = i;
                    }
                }
                int linfgs = d[x];
                d[x] = d[suouin];
                d[suouin] = linfgs;

            }

            foreach (int f in d)
            {

                Console.Write(f + ",");
            }
            int[] xing = new int[(d.Length )+ 1];
            Console.WriteLine(xing.Length);
            
            Console.WriteLine("请再输入一个数");
            int y = Convert.ToInt32(Console.ReadLine());

            int[] z = new int[d.Length + 1];
            int ysuoy = z.Length - 1;
            for(int i = 0; i < d.Length; i++)
            {
                if (y <= d[i])
                {
                    ysuoy = i;
                    break;
                }
            }
            for(int i = 0; i < z.Length; i++)
            {
                if (i < ysuoy)
                {
                    z[i] = d[i];
                }else if (i == ysuoy)
                {
                    z[i] = y;
                }
                else
                {
                    z[i ] = d[i-1];
                }
            }
            foreach(int f in z)
            {
                Console.Write(f + "/");
            }

[展开全文]