添加5个学生的信息到集合中,
每个学生都有:学号,姓名,成绩,3个内容,
添加完毕后将学生的分数从高到低排列并打印出来,使用结构体

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Collections;
  7. namespace ConsoleApplication1
  8. {
  9. class Program
  10. {
  11. struct xuesheng //创建一个名为学生的结构体,结构体固定格式前面struct 后面加名字
  12. {
  13. public int code;//设置一个整数类型的变量,名为code
  14. public string name;//设置一个字符串类型的变量,名为name
  15. public double fenshu;//设置一个小数类型的变量,
  16. public int m;//设置一个整数类型变量,此变量用于接收学生一次循环第几个学生
  17. }
  18. static void Main(string[] args)
  19. {
    //1.打印接收学生信息,放在集合中
  20.  
  21. ArrayList bb = new ArrayList();//实例化一下
  22. for (int i = ; i < ; i++) //此处循环打印接收5个学生信息
  23. {
  24. xuesheng xs = new xuesheng();//实例化,以便量xs
  25.  
  26. Console.Write("请输入第"+i+"个学生姓名:");
  27. xs.name = Console.ReadLine();//用变量xs直接点出结构体中的属性并接收输入的信息
  28. Console.Write("请输入第1个学生学号:");
  29. xs.code = int.Parse(Console.ReadLine());
  30. Console.Write("请输入第1个学生分数:");
  31. xs.fenshu = double.Parse(Console.ReadLine());
  32.  
  33. xs.m = i;//每循环一次接收第几个学生到变量m中
  34. bb.Add(xs);//把每次循环的学生信息打包放进集合bb中,xs共接收三个属性值
  35. Console.WriteLine("================================");
  36. }
  37. Console.WriteLine("----------------------学生数据展示----------------------");
  38. //2.进行排序
  39. for (int i = ; i < bb.Count-; i++) //冒泡排序,嵌套循环,外循环是集合的第一个元素,也就是0号索引
  40. {
  41. for (int j = i+; j < bb.Count; j++) //内循环是集合第二个元素,也就是1号索引
  42. {
  43. xuesheng a= (xuesheng)bb[i];//因为集合中接收到的是三个属性打包的元素,需要强制转换一下到一个变量中
  44. xuesheng b= (xuesheng)bb[j];//
  45. if(a.fenshu<b.fenshu)//用变量中接收到的直接点出结构体中的属性所填写的值进行比较,此处用分数排序,点出分数
  46. { //因为是从大到小排序,需要前面的比后面小时,用冒泡排序把后面一个拿过来
  47. object zhong = bb[i];//冒泡排序,先定义一个中间变量,把第一个元素值放进去,为避免数值类型冲突,直接用一个大范围的数值类型object来定义
  48. bb[i] = bb[j];//外部条件是前面数小于后面数时执行排序,把后面索引的元素放进前面去
  49. bb[j] = zhong;//再把刚刚放进中间变量的元素值放到下一个元素中,实行了前后调换
  50. }
  51. }
  52. }
  53.  
  54. //3.打印集合
  55. foreach (object n in bb) //遍历集合,打印集合的一种方式,定义一个变量n ,把集合bb接收在其中
  56. {
  57. xuesheng s = (xuesheng)n;//把n强制转换一下在变量s中
  58. Console.WriteLine("第"+s.m+"个学生的学号:"+s.code+",姓名:"+s.name+",成绩:"+s.fenshu+"。");
  59. }//s就可以直接点出集合中排好序的每个打包元素里面的属性
  60.  
  61. Console.ReadLine();
  62. }
  63. }
  64. }

c# 结构体 集合 复习的更多相关文章

  1. C# 结构体集合元素属性不可修改疑惑

    背景:用C#的人都知道结构体在C#中是值类型的,由于这个原因出现了一个有趣的问题,那就是结构体集合通过数字索引修改对应属性的值能不能影响到集合中的结构体呢?答案很多人可能会说不能,因为结构体是值类型的 ...

  2. iOS 阶段学习第十天笔记(结构体)

    iOS学习(C语言)知识点整理 一.数据结构 1)概念:数据结构是指计算机程序中所操作的对象——数据以及数据元素之间的相互关系和运算. 2)结构体必须有struct 关键字修饰. 实例代码: stru ...

  3. [C#参考]Struct结构体

    结构体是一种简单的用户自定义类型,也是类的一种轻量级的替代品. 相似之处:他们都有构造函数.属性.方法.字段.操作符.嵌套类型和索引器. 差异之处:类是一种引用类型,而结构体是一种值类型.因此结构体一 ...

  4. 4-17疑难点 c语言之【结构体对齐】

    今天学习了结构体这一章节,了解到了结构体在分配内存的时候采取的是对齐的方式 例如: #include<stdio.h> struct test1 { int a; char b; shor ...

  5. 例题:超市买东西的程序。输入商品信息,计算价格,价格满多少元打折。这道题用到结构体,集合,for循环,if else语句

    知识要点: 集合和数组的区别:数组是连续的,同一类型的一块区域,而集合可以是不连续的,多种数据类型的. 集合属性:.count 方法:.Add()  将对象添加到ArrayList中实际包含的元素数 ...

  6. c#---部分;把数组或者结构体存入集合里,然后再从集合中取出之后,输出;foreach既可以用到提取数组重点额数据,也可以提取集合中的数据(前提是集合中的元素是相同数据类型)

    1.输入班级人数,统计每个人的姓名,性别,年龄:集合与数组 //Console.Write("请输入班级人数:"); //int a = int.Parse(Console.Rea ...

  7. c# 课堂总结6 --集合与结构体

    一.集合 使用时必须添加 System.Collections 集合与数组的区别: 1:数组声明了它容纳的元素的类型,而集合不声明.这是由于集合以object形式来存储它们的元素.初始化时集合无需定义 ...

  8. 【2017-03-02】C#集合,结构体,枚举

    集合 集合与数组的区别 数组:同一类型,固定长度 集合:不同类型,不固定长度 使用集合前需要:     引用命名空间:using System.Collections; 1.普通集合 定义: Arra ...

  9. 数据结构复习之C语言指针与结构体

    数据结构指针复习: #include <stdio.h> void main() { ] = {, , , , }; // a[3] == *(3+a) printf(+a)); // a ...

随机推荐

  1. [C++ Primer] : 第15章: 面向对象程序设计

    OOP: 概述 面向对象程序设计的核心思想是数据抽象, 继承和动态绑定. 通过数据抽象, 我们可以实现类的接口与实现的分离; 使用继承, 可以定义相似的类型并对其相似关系建模; 使用动态绑定, 可以在 ...

  2. bootstrap导航条等样例持续更新》。。

    1.导航条 <!-- 导航条 --> <nav class="navbar navbar-static-top navbar-inverse"> <d ...

  3. 针对IE6浏览器下,zoom:1的问题

    一.css代码如下: .message .con .word {font-size:14px;color:#333333; border-radius:3px; padding:10px;border ...

  4. Oracle 11g trace events

    oracle的events,是我们在做自己的软件系统时可以借鉴的 Oracle 11g trace eventsORA-10001: control file crash event1ORA-1000 ...

  5. 批处理框架-spring Batch

    并发处理业务 数据量大,并发度高,要支持事物,回滚,并发机制.事务.并发.监控.执行等,并不提供相应的调度功能.因此,如果我们希望批处理任务定期执行,可结合 Quartz 等成熟的调度框架实现. 业务 ...

  6. CSS 背景background实例

    css背景background用于设置html标签元素的背景颜色.背景图片已经其他背景属性.本文章向码农介绍CSS 背景background使用方法和基本的使用实例.需要的码农可以参考一下. 一.Cs ...

  7. python_基础算法

    本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序,计数排序.希望大家回顾知识的时候也能从我的这篇文章得到帮助. 概述 十种常见排序算法可以分为两 ...

  8. redis存储对象

      redis主要存储类型最常用的五种数据类型: String Hash List Set Sorted set redis存储对象序列化和反序列化 首先来了解一下为什么要实现序列化 为什么要实现序列 ...

  9. linux操作系统2 linux常用命令

    知识内容: 1.目录及文件操作 2.用户.群组与权限 3.重定向.管道 4.磁盘存储管理 5.系统命令 6.其他命令 参考: http://man.linuxde.net/ Linux命令规则:目录名 ...

  10. .NET MVC ToList() 转Json

    #region 方法一 #region ToList()转json /// <summary> /// 通过类别 Id 获相应产品 /// </summary> /// < ...