快捷搜索:  汽车  科技

c数组元素的正确用法(C-)

c数组元素的正确用法(C-)//将示例1修改为使用Length属性 //声明数组为下面格式 //通过cd.Length得到当前数组的长度 char[] cd ={ '夏' '商' '周' '秦' '汉' '晋' '隋' '唐' '宋' '元' '明' '清' }; //因为数组 cd的元素总个数为 12 //因此 cd.Length的值 等于 12 for (int i = 0; i < cd.Length; i ) //相当于 for (int i = 0; i < 12; i ) { Console.WriteLine("中国历史各个朝代的名称为: {0}朝

操作数组

主要是通过循环遍历数组(一般使用for循环结构)

c数组元素的正确用法(C-)(1)

数组下标与循环变量的规律

数组nums的长度为5 下标为0-4; for循环中也是0-4 因此将for循环的循环变量放入数组的下标中实现对数组的循环遍历

示例1:打印给出的中国历史数组中的朝代名字(夏 商 周 秦 汉 晋 隋 唐 宋 元 明 清)

c数组元素的正确用法(C-)(2)

打印各朝代名称

//也可以声明为字符串数组 char[] cd = new char[12]{ '夏' '商' '周' '秦' '汉' '晋' '隋' '唐' '宋' '元' '明' '清' }; for (int i = 0; i < 12; i ) { Console.WriteLine("中国历史各个朝代的名称为: {0}朝 i的值为{1}" cd[i] i); } Console.ReadKey();数组的Length属性

每个数组都有该属性 是一个只读属性即只能获取或使用该属性的值 不能修改其值

c数组元素的正确用法(C-)(3)

Length是只读属性

Length属性的作用:返回当前数组的长度即数组元素的总个数;因为该属性的值可以随元素个数变动 因此推荐以后使用此属性 更便于使用循环遍历数组

//将示例1修改为使用Length属性 //声明数组为下面格式 //通过cd.Length得到当前数组的长度 char[] cd ={ '夏' '商' '周' '秦' '汉' '晋' '隋' '唐' '宋' '元' '明' '清' }; //因为数组 cd的元素总个数为 12 //因此 cd.Length的值 等于 12 for (int i = 0; i < cd.Length; i ) //相当于 for (int i = 0; i < 12; i ) { Console.WriteLine("中国历史各个朝代的名称为: {0}朝 i的值为{1}" cd[i] i); } //int[] nums={1 2 3};//数组中有3个元素 //因此 nums.Length 的值就等于 3 Console.ReadKey();操作数组元素

主要是对元素的赋值 修改 比较其值大小 求和与平均值 求最大与最小值 排序

1 对数组中的元素进行赋值;各个元素的值可以一样

示例2:输入5个学生的成绩并打印输出

c数组元素的正确用法(C-)(4)

输入成绩 打印输出

//以下各条代码含义之前都说过 不再解释 int[] scores = new int[5]; for (int i = 0; i < scores.Length; i ) { Console.WriteLine("请输入第 {0} 个学生的成绩" i 1); int result = Convert.ToInt32(Console.ReadLine()); scores[i] = result; } Console.WriteLine("打印输出"); for (int i = 1; i <= scores.Length; i ) { Console.WriteLine("第{0}个人的成绩为 {1}" i scores[i - 1]); } Console.ReadKey();

拓展:让用户决定输入多少个人的成绩

c数组元素的正确用法(C-)(5)

使用初始化数组方式且使用变量作为数组长度时 必须声明为常量 防止用户修改数组长度

2 通过下标修改数组元素的值 修改元素的值会改变原数组该元素的值

c数组元素的正确用法(C-)(6)

修改元素的值

//修改元素的值 int[] nums = { 1 2 3 1 5 }; for (int i = 0; i < nums.Length; i ) { //元素原值 Console.Write("{0}\t" nums[i]); } Console.WriteLine(""); nums[3] = 4;//将第四个元素值改为4 //修改其他元素值的操作以此类推 for (int i = 0; i < nums.Length; i ) { //元素修改后的值 Console.Write("{0}\t" nums[i]); } Console.ReadKey();

3 比较数组元素的大小; 就是比较元素值的大小(只以数值类型为例 其他类型以后再说)

c数组元素的正确用法(C-)(7)

比较数值类型的大小

4 求数组中元素值的和与平均数

c数组元素的正确用法(C-)(8)

求和与平均值

int[] nums = { 31 89 53 31 35 }; int sum = 0; double avg = 0; for (int i = 0; i < nums.Length; i ) { sum = nums[i];//加的是当前下标元素中的值 } avg = sum / nums.Length; Console.WriteLine("和为 {0} 平均值为 {1:0.00}" sum avg);

5 求其最大值与最小值;假设第一个元素是最大值或最小值 让其他元素与其进行比较

c数组元素的正确用法(C-)(9)

求最大值与最小值

int[] nums = { 31 89 53 31 35 }; //方式1 //假设最大/小值为数组的第一个元素 int max = nums[0] min = nums[0]; //从第二个元素开始比较 for (int i = 1; i < nums.Length; i ) { //如果当前下标元素的值比假设元素的值还大 if (nums[i] > max) { // nums[i]>max //nums[1]>nums[0]; 89>31 为真 max=89 替换原值 31 //nums[2]>nums[0]; 53>89 为假 max=89 还是原值 89 //nums[3]>nums[0]; 31>89 为假 max=89 还是原值 89 //nums[4]>nums[0]; 35>89 为假 max=89 还是原值 89 max = nums[i]; //将当前下标元素的值赋值给变量max } //如果当前下标元素的值比假设元素的值还小 if (nums[i] < min) { //与最大值比较过程类似 min = nums[i]; } } Console.WriteLine("数组中元素的最大值为 {0} 最小值为 {1}" max min); //================================================ //方式2 从0开始 int max=0 min=0; for (int i = 0; i < nums.Length; i ) { if (nums[i] > max) { max = nums[i]; } if (nums[i] < min) { min = nums[i]; } } Console.ReadKey();

拓展:不仅打印出最大/小值 还要打印出最大小值的下标

错误判断最小值的代码

for (int i = 1; i < nums.Length; i ) { if (nums[i] > max) { max = nums[i]; } else { min = nums[i]; } }

max与min不是同一变量 因此不能使用else判断最小值

c数组元素的正确用法(C-)(10)

错误代码

6 对数组元素进行排序(暂时使用方法)

c数组元素的正确用法(C-)(11)

对元素排序

7 上面的求和 平均值 最大/小值都可以使用数组的快捷方法得到

c数组元素的正确用法(C-)(12)

快捷方法

//需要添加一个命名空间 using System.Linq; //使用数组的方法排序 int[] nums = { 31 89 53 31 35 }; Array.Sort(nums);//排序(升序) 由小到大 for (int i = 0; i < nums.Length; i ) { Console.Write("{0}\t" nums[i]); } Console.WriteLine(""); //反转排序(与sort排序结果相反) 由大到小 Array.Reverse(nums); for (int i = 0; i < nums.Length; i ) { Console.Write("{0}\t" nums[i]); } Console.ReadKey(); //以下方法在using System.Linq;命名空间下 //继承IEnumerable接口的方法 nums.Sum();//总和 239 nums.Average();//平均值 47.8 nums.Max();//最大值 89 nums.Min();//最小值 31

示例3:将字符串数组元素使用符号&连接打印输出如:张三&李四&王五

c数组元素的正确用法(C-)(13)

与要求不符 最后一个符号 & 不再输出; 发挥聪明的大脑自己解决

拓展:使用用户指定的其他字符或字符串进行连接(最后不再出现该符号)

c数组元素的正确用法(C-)(14)

以指定字符连接 最后不再出现该符号

Console.Title = "使用&符号连接元素打印输出"; string[] strs = {"数据类型" "分支结构" "循环结构" "枚举" "结构" "数组" }; for (int i = 0; i < strs.Length; i ) { Console.Write(strs[i] " & "); } Console.ReadKey();

示例:录入班级学生姓名 性别 年龄 语文 数学 历史考试成绩的基本信息 最后打印输出基本信息加个人成绩的总分与平均分

编程思路(仅供参考)

1)没说有多少人 需要用户确定人数 2)一个人就需要8个变量 考虑使用枚举或者结构 变量类型不同且存在关系 选择使用结构 3)需要录入多人基本信息使用for循环结构 4)需要打印班级多人信息使用数组便于打印输出

c数组元素的正确用法(C-)(15)

打印各个学生的信息

//定义结构及其字段 struct Student { public string _name; public string _gender; public int _age; public int _chinese; public int _math; public int _history; public int _sum; public double _avg; } Console.WriteLine("请输入班级人数"); int count = Convert.ToInt32(Console.ReadLine()); //声明Student结构类型的数组 Student[] stus = new Student[count]; for (int i = 0; i < stus.Length; i ) { //跨步大了一些 应该可以理解 Console.WriteLine("请输入第 {0} 个人的姓名" i 1); stus[i]._name = Console.ReadLine(); Console.WriteLine("请输入 {0} 的性别" stus[i]._name); stus[i]._gender = Console.ReadLine(); Console.WriteLine("请输入 {0} 的年龄" stus[i]._name); stus[i]._age = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入 {0} 的语文成绩" stus[i]._name); stus[i]._chinese = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入 {0} 的数学成绩" stus[i]._name); stus[i]._math = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入 {0} 的历史成绩" stus[i]._name); stus[i]._history = Convert.ToInt32(Console.ReadLine()); stus[i]._sum = stus[i]._chinese stus[i]._math stus[i]._history; stus[i]._avg = stus[i]._sum / 3; } Console.WriteLine("====== 打印输出学生信息 ======"); Console.WriteLine(""); for (int i = 0; i < stus.Length; i ) { Console.WriteLine("姓名:{0} 性别:{1} 年龄:{2} 语文:{3} 数学:{4} 历史:{5} 总分:{6} 平均分:{7}" stus[i]._name stus[i]._gender stus[i]._age stus[i]._chinese stus[i]._math stus[i]._history stus[i]._sum stus[i]._avg); } Console.ReadKey();

猜您喜欢: