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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
struct xuesheng //创建一个名为学生的结构体,结构体固定格式前面struct 后面加名字
{
public int code;//设置一个整数类型的变量,名为code
public string name;//设置一个字符串类型的变量,名为name
public double fenshu;//设置一个小数类型的变量,
public int m;//设置一个整数类型变量,此变量用于接收学生一次循环第几个学生
}
static void Main(string[] args)
{
//1.打印接收学生信息,放在集合中 ArrayList bb = new ArrayList();//实例化一下
for (int i = ; i < ; i++) //此处循环打印接收5个学生信息
{
xuesheng xs = new xuesheng();//实例化,以便量xs Console.Write("请输入第"+i+"个学生姓名:");
xs.name = Console.ReadLine();//用变量xs直接点出结构体中的属性并接收输入的信息
Console.Write("请输入第1个学生学号:");
xs.code = int.Parse(Console.ReadLine());
Console.Write("请输入第1个学生分数:");
xs.fenshu = double.Parse(Console.ReadLine()); xs.m = i;//每循环一次接收第几个学生到变量m中
bb.Add(xs);//把每次循环的学生信息打包放进集合bb中,xs共接收三个属性值
Console.WriteLine("================================");
}
Console.WriteLine("----------------------学生数据展示----------------------");
//2.进行排序
for (int i = ; i < bb.Count-; i++) //冒泡排序,嵌套循环,外循环是集合的第一个元素,也就是0号索引
{
for (int j = i+; j < bb.Count; j++) //内循环是集合第二个元素,也就是1号索引
{
xuesheng a= (xuesheng)bb[i];//因为集合中接收到的是三个属性打包的元素,需要强制转换一下到一个变量中
xuesheng b= (xuesheng)bb[j];//
if(a.fenshu<b.fenshu)//用变量中接收到的直接点出结构体中的属性所填写的值进行比较,此处用分数排序,点出分数
{ //因为是从大到小排序,需要前面的比后面小时,用冒泡排序把后面一个拿过来
object zhong = bb[i];//冒泡排序,先定义一个中间变量,把第一个元素值放进去,为避免数值类型冲突,直接用一个大范围的数值类型object来定义
bb[i] = bb[j];//外部条件是前面数小于后面数时执行排序,把后面索引的元素放进前面去
bb[j] = zhong;//再把刚刚放进中间变量的元素值放到下一个元素中,实行了前后调换
}
}
} //3.打印集合
foreach (object n in bb) //遍历集合,打印集合的一种方式,定义一个变量n ,把集合bb接收在其中
{
xuesheng s = (xuesheng)n;//把n强制转换一下在变量s中
Console.WriteLine("第"+s.m+"个学生的学号:"+s.code+",姓名:"+s.name+",成绩:"+s.fenshu+"。");
}//s就可以直接点出集合中排好序的每个打包元素里面的属性 Console.ReadLine();
}
}
}

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. Linux系统Centos安装Python3.7

    Linux下默认系统自带python2.7的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的,所以可以安装py ...

  2. 更新上篇文章 调用三级目录文章内容 dede频道页实现三级栏目嵌套调用文章

    原文:http://www.wuaie.com/?p=66 源码改写 $typeid = $row['id']; if((class_exists('PartView'))) { $pv = new ...

  3. java 装饰设计模式模式

    对已有功能进行增强 示例 已有的类    调用 增强后的类 调用  思考? 为什么要这么做呢? SuperPerson 继承 Person 可以达到同样的效果. 继承的写法,其中MyBuffer... ...

  4. 关于Hibernate Could not obtain transaction-synchronized Session for current thread

    转载自 http://blog.csdn.net/flyjiangs/article/details/51537381 最近几年一直再搞android,最近闲下来了,顺便玩一下web. 整了个最新版本 ...

  5. 学习笔记之IKM C++ 11

    https://github.com/haotang923/interview/tree/master/IKM Q1. If most of the calls to function foo() b ...

  6. 硬盘安装雨林木风Win7旗舰版系统教程

    硬盘安装雨林木风Win7旗舰版系统教程 安装完成,登录后报administrator无权限, F8 进入安全模式,修改administrator的权限.

  7. IE下的Firebug——IE WebDeveloper js debug

    原文地址:http://blog.csdn.net/wangbin1986/article/details/6837285 对于大部分做前端设计者而言应该都使用过Firefox浏览器下一款调试网站的扩 ...

  8. Leetcode 之Simplify Path @ python

    Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", ...

  9. ROS的工作模式和ESXI网卡工作模式的关系

    1.ROS网卡如果工作在桥接模式,那么ESXI网卡的工作模式必须设置为Promiscuous Mode(混杂模式)和Forged Transmits(伪传输)这两个必须都为开启状态,如下: 这种情况, ...

  10. [UE4]GameMode

    GameMode定义了正在玩的游戏规则,积分等方面,游戏中有些数据和逻辑不适合放在某一个对象身上,这些数据在整个游戏运行中腰持续存在的(比如:积分.排名). 每次游戏一启动,GameMode就被创建, ...