添加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. HighCharts定时刷新图表

    假设图表容器的id为exChart,如下: <div style="height:450px;" id="chart">   1. 首先在serie ...

  2. MySQL架构设计谈:从开发规范、选型、拆分到减压(转)

    作者介绍 李辉,原新浪爱彩票运维负责人,常用网名:门牙没了.曾主导新浪爱彩票的MySQL运维工作.培训合伙人.资深讲师,中国科学院大学在读研究生(大数据方向),擅长大型项目的关系型数据库运维和管理,现 ...

  3. c#中如何获取本机MAC地址、IP地址、硬盘ID、CPU序列号等系统信息

    我们在利用C#开发桌面程序(Winform)程序的时候,经常需要获取一些跟系统相关的信息,例如用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统名称.物理内存等. 首先需要引入命名空间: us ...

  4. git Push failed: Could not read from remote repository 解决方案

    解决的办法很简单,进入Android Studio配置界面,选择Version Control——>Git,在右边界面切换SSH下拉选项为Native,最后重新提交.如果解决你的问题,记得分享哦 ...

  5. 【Spring学习笔记-MVC-14】Spring MVC对静态资源的访问

    作者:ssslinppp       参考链接: http://www.cnblogs.com/luxh/archive/2013/03/14/2959207.html  http://www.cnb ...

  6. 高可用服务设计之二:Rate limiting 限流与降级

    <高可用服务设计之二:Rate limiting 限流与降级> <nginx限制请求之一:(ngx_http_limit_conn_module)模块> <nginx限制 ...

  7. R语言学习——欧拉计划(11)Largest product in a grid

    Problem 11 In the 20×20 grid below, four numbers along a diagonal line have been marked in red. 08 0 ...

  8. Java Internet

    网络通信: 网络通信三要素: IP 协议 端口 TCP: 建立连接,发送速度慢 三次握手协议 UDP: 不需要建立连接,发送速度快 安全性低 a) 使用UDP实现数据的发送 1 创建Socket端点实 ...

  9. 第4章 文件和目录(5)_贯穿案例2:mini shell(1)

    6. 贯穿案例2:mini shell(1) [阶段性任务]实现cd.pwd和quit命令 //job.h #ifndef __JOB_H__ #define __JOB_H__ //接收命令行参数 ...

  10. python之集合操作

    1.集合的增操作 add(item):增加至集合中 update(set):  若不存在,更新至集合中 2.集合的删操作(五种) pop():  随机删除并返回值 remove(item): 删除va ...