C#编程:一维与二维数组应用与城市得分排序

需积分: 0 1 下载量 29 浏览量 更新于2024-07-31 收藏 597KB PPT 举报
在C#的相关练习中,我们首先探讨了一维数组的基础概念。在提供的代码示例中,我们有一个名为`Student`的类,它包含姓名(name)和年龄(age)属性,以及一个构造函数和获取年龄的方法。接着,`Program`类展示了如何创建`Student`对象,并尝试比较两个学生对象的年龄。然而,这段代码存在问题,例如变量未初始化、没有正确引用对象实例和缺少数组长度检查等。 章节目标强调了学习一维数组的定义和使用,包括数组的基本概念,如数组是一组具有相同数据类型的元素集合,它们共享同一名称。在C#中,一维数组的声明可以预先指定长度并赋初值,如`int[] city = new int[6];`,也可以动态初始化,如通过循环读取用户输入并填充数组。 针对具体问题,题目提出要对10个城市的得分进行排序,这涉及到数组的应用,尤其是数组排序算法(如冒泡排序、插入排序或快速排序)。在C#中,可以使用`Array.Sort()`方法对整数数组进行排序,或者自定义排序逻辑来实现这个功能。如果需要根据条件输出“第一名的城市是city1”,需要遍历数组,找到最高分对应的城市名。 解决这个问题的一般步骤如下: 1. 定义一个城市得分数组,比如`int[] cityScores = { city1, city2, ..., city10 };` 2. 使用`Array.Sort()`方法对`cityScores`进行排序,或者编写自定义排序函数: ```csharp Array.Sort(cityScores); ``` 3. 找到最高分索引: ```csharp int firstPlaceIndex = Array.IndexOf(cityScores, cityScores.Max()); ``` 4. 输出结果: ```csharp Console.WriteLine("第一名的城市是:city" + (firstPlaceIndex + 1)); ``` 此外,代码中的`intageOfS1, ageOfS2`未初始化,应当改为先声明并赋值。`Students1`对象应该传递姓名参数,且`s1`和`s2`需要正确引用对应的对象。完整的`Main`方法可能如下所示: ```csharp static void Main(string[] args) { string nameOfS1 = "张三"; int ageOfS1 = Students1.GetAge(); // 假设Students1已初始化 Student Students2 = new Student(); // 初始化为无名对象 if (ageOfS1 > Students2.GetAge()) // 使用对象而非变量名 Console.WriteLine($"'{nameOfS1}'比{Students2.name}大"); // 排序和输出城市得分部分 int[] cityScores = { city1, city2, ... }; Array.Sort(cityScores); int firstCityIndex = Array.IndexOf(cityScores, cityScores.Max()); Console.WriteLine($"第一名的城市是:city{firstCityIndex + 1}"); } ``` 通过这些修改,这段代码将能够演示一维数组的基础操作和解决题目中给出的问题。在实际编程中,记得不断实践和理解数组操作,以便更好地掌握C#编程。