c# 结构体 集合 复习
添加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# 结构体 集合 复习的更多相关文章
- C# 结构体集合元素属性不可修改疑惑
背景:用C#的人都知道结构体在C#中是值类型的,由于这个原因出现了一个有趣的问题,那就是结构体集合通过数字索引修改对应属性的值能不能影响到集合中的结构体呢?答案很多人可能会说不能,因为结构体是值类型的 ...
- iOS 阶段学习第十天笔记(结构体)
iOS学习(C语言)知识点整理 一.数据结构 1)概念:数据结构是指计算机程序中所操作的对象——数据以及数据元素之间的相互关系和运算. 2)结构体必须有struct 关键字修饰. 实例代码: stru ...
- [C#参考]Struct结构体
结构体是一种简单的用户自定义类型,也是类的一种轻量级的替代品. 相似之处:他们都有构造函数.属性.方法.字段.操作符.嵌套类型和索引器. 差异之处:类是一种引用类型,而结构体是一种值类型.因此结构体一 ...
- 4-17疑难点 c语言之【结构体对齐】
今天学习了结构体这一章节,了解到了结构体在分配内存的时候采取的是对齐的方式 例如: #include<stdio.h> struct test1 { int a; char b; shor ...
- 例题:超市买东西的程序。输入商品信息,计算价格,价格满多少元打折。这道题用到结构体,集合,for循环,if else语句
知识要点: 集合和数组的区别:数组是连续的,同一类型的一块区域,而集合可以是不连续的,多种数据类型的. 集合属性:.count 方法:.Add() 将对象添加到ArrayList中实际包含的元素数 ...
- c#---部分;把数组或者结构体存入集合里,然后再从集合中取出之后,输出;foreach既可以用到提取数组重点额数据,也可以提取集合中的数据(前提是集合中的元素是相同数据类型)
1.输入班级人数,统计每个人的姓名,性别,年龄:集合与数组 //Console.Write("请输入班级人数:"); //int a = int.Parse(Console.Rea ...
- c# 课堂总结6 --集合与结构体
一.集合 使用时必须添加 System.Collections 集合与数组的区别: 1:数组声明了它容纳的元素的类型,而集合不声明.这是由于集合以object形式来存储它们的元素.初始化时集合无需定义 ...
- 【2017-03-02】C#集合,结构体,枚举
集合 集合与数组的区别 数组:同一类型,固定长度 集合:不同类型,不固定长度 使用集合前需要: 引用命名空间:using System.Collections; 1.普通集合 定义: Arra ...
- 数据结构复习之C语言指针与结构体
数据结构指针复习: #include <stdio.h> void main() { ] = {, , , , }; // a[3] == *(3+a) printf(+a)); // a ...
随机推荐
- oracle 导入excel
方法二.利用PLSQL Developer使用PLSQL Developer工具,这个可是大名鼎鼎的Oracle DBA最常使用的工具.在单个文件不大的情况下(少于100000行),并且目的表结构已经 ...
- ML(4.1): R C4.5
决策树模型中最为流行的是C4.5算法, 该类算法70年代末,J Ross Quinlan提出ID3算法,此算法的目的在于减少树的深度.但是忽略了叶子数目的研究.1993年,Quinlan本人以ID3 ...
- Eclipse引入jar包的三种方式
引用自 http://chenxu.wo.blog.163.com/blog/static/50239687201162310620634/ 使用Eclipse开发应用程序,少不了使用第三方jar包, ...
- ios之mknetworkkit笔记
asi没法用了,蛋疼了,在af和mk之间纠结,感觉af不适合我的口味,解析和网络耦合相对似乎重了点 mk似乎默认的不支持下载的断点续传,这里参考网上的代码处理了下,0修改mk的库,下面是实现的代码 / ...
- debian之apt源
美国的 deb http://ftp.us.debian.org/debian stable main contrib non-freedeb-src http://ftp.us.debian.org ...
- C# 正则表达式入门
转自:http://www.cnblogs.com/KissKnife/archive/2008/03/23/1118423.html 另外推荐一篇学正则表达式的文章:http://www.unibe ...
- 获取 user-agents
user-agent "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0. ...
- idea远程调试jar包
1 服务器启动jar包 (监听端口5005) java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y -j ...
- [转]SendKeys.Send 方法
SendKeys.Send 方法 向活动应用程序发送击键. 转载自: https://msdn.microsoft.com/zh-cn/library/system.windows.forms.sen ...
- js原生态函数中使用jQuery中的 $(this)无效的解决方法
原文地址:http://www.jb51.net/article/27238.htm 今天遇到一个听郁闷的问题,正如title所说 js中原生态函数在jQuery 中使用 $(this) 被解析成un ...