C#面向对象--练习题
public class Program
{
//用户自定义:我们自己定义这种数据类型
public struct jiegouti// 结构体前面加上public, 可供外界访问
{
public int Code;//成员变量
public string Name;//成员
public double Degree;//成员
}
static void Main(string[] args)
{
#region==结构体变量定义==
jiegouti jgt = new jiegouti();//根据jiegouti类型,定义一个结构体变量。
jgt.Code = ;
jgt.Name = "张三";
jgt.Degree = ;
#endregion
练习:输入学生人数,输入学生学号、姓名、分数
根据分数由高到低进行排序并打印。(利用结构体和集合结合应用)
//主函数:一个程序有且只有一个
static void Main(string[] args)
{
//1、输入学生信息
Console.Write("请输入学生人数:");
int renshu = int.Parse(Console.ReadLine());
jiegouti[] shuzu=new jiegouti[renshu];//根据人数来定义数组容器长度
for (int i = ; i < renshu; i++)//根据人数去循环输入学生信息
{
//jiegouti jgt = new jiegouti();//声明一个jiegouti的类型
Console.Write("请输入第{0}个学生的学号:",i+);//
shuzu[i].Code=int.Parse(Console.ReadLine());
Console.Write("请输入第{0}个学生的姓名:",i+);
shuzu[i].Name=Console.ReadLine();
Console.Write("请输入第{0}个学生的分数:",i+);
shuzu[i].Degree=double.Parse(Console.ReadLine()); //将输入的信息,存进数组里
}
//2、排序
for (int i = ; i < renshu-; i++)
{
for (int j = i+; j < renshu ;j++ )
{
if (shuzu[i].Degree < shuzu[j].Degree)
//等量代换
{
jiegouti zhong = new jiegouti();
zhong = shuzu[i];
shuzu[i] = shuzu[j];
shuzu[j] = zhong;
}
}
}//3、输出
Console.WriteLine("************成绩如下************");
Console.WriteLine(" 学号 姓名 分数");
foreach(jiegouti jgt in shuzu)
{
Console.Write(" ");
Console.Write(jgt.Code);
Console.Write(" ");
Console.Write(jgt.Name);
Console.Write(" ");
Console.Write(jgt.Degree);
Console.Write("\n");
} Console.ReadLine();
}

冒泡排序写成带返回的函数:
public class Program
{
//用户自定义:我们自己定义这种数据类型
public struct jiegouti// 结构体前面加上public, 可供外界访问
{
public int Code;//成员变量
public string Name;//成员
public double Degree;//成员
}
//冒泡排序:输入参数;形参
public jiegouti[] paixu(jiegouti[] shuzu)
{
for (int i = ; i < shuzu.Length - ; i++)
{
for (int j = i + ; j < shuzu.Length; j++)
{
if (shuzu[i].Degree < shuzu[j].Degree)
{//等量代换
jiegouti zhong = new jiegouti();
zhong = shuzu[i];
shuzu[i] = shuzu[j];
shuzu[j] = zhong;
}
}
}
return shuzu;
}
//2、排序
shuzu = new Program().paixu(shuzu);// shuzu是数组变量,Program是一个类(可以换成其他名的类)

新建一个类,用类的方法
新建一个Student类

在main函数下输入,因为使用类,每次要对数组里的值初始化才能使用
static void Main(string[] args)
{
//面向对象 必须初始化
Student s = new Student();//s是Student类型造出来的变量叫做对象 面向对象思想
s.Code = ;
s.Name = "张三";
s.Degree = ; Console.Write(s.Name); Console.ReadLine();
Console.Write("请输入学生的人数:");
int renshu = int.Parse(Console.ReadLine());
ArrayList shuzu = new ArrayList();//根据人数定义数组容器
for (int i = ; i < renshu; i++)//根据人数去循环输入学生信息
{
Student s = new Student();//这里的student改成新建的Student 类;声明一个Student类型
Console.Write("请输入第{0}个学生的学号:", i + );
s.Code = int.Parse(Console.ReadLine());
Console.Write("请输入第{0}个学生的姓名:", i + );
s.Name = Console.ReadLine();
Console.Write("请输入第{0}个学生的分数:", i + );
s.Degree = double.Parse(Console.ReadLine()); //输入信息,存入数组里
shuzu.Add(s);//添加进集合里
}
//2.排序
shuzu = new Program().paixu(shuzu);
//3.输出
Console.WriteLine("***********成绩如下***********");
Console.WriteLine(" 学号 姓名 分数");
foreach (Student s in shuzu)//队列集合,执行一遍定义结构体变量的数组
{
Console.Write(" ");
Console.Write(s.Code);
Console.Write(" ");
Console.Write(s.Name);
Console.Write(" ");
Console.Write(s.Degree);
Console.Write("\n");
}
Console.ReadLine();
}
//进行冒泡排序
public ArrayList paixu(ArrayList shuzu)//在这改为使用ArrayList集合,使用时要把集合里的参数强制转换成Student类型,才能进行
{
for (int i = ; i < shuzu.Count - ; i++)
{
for (int j = i + ; i < shuzu.Count; j++)
{
if (((Student)shuzu[i]).Degree < ((Student)shuzu[j]).Degree)//
{//等量代换
Student zhong = new Student();//这里的student改成新建的Student 类
zhong = (Student)shuzu[i];
shuzu[i] = shuzu[j];//是object类型
shuzu[j] = zhong;
}
}
}
return shuzu;
}
C#面向对象--练习题的更多相关文章
- Java面向对象练习题
1.猜数字游戏: 一个类A有两个成员变量v.num,v有一个初值100. 定义一个方法guess,对A类的成员变量v,用num进行猜. 如果大了则提示大了,小了则提示小了.等于则提示猜测成功. 在ma ...
- Python面向对象练习题
1.模拟栈操作原理 先进后出 1.初始化(创建一个存储数据的列表) 2.进栈使用列表保存数据 3.出栈 使用列表删除数据 4.查看栈顶元素 切片获取列表最后一位数据 5.判断是否为空栈 6 ...
- Java【第八篇】面向对象之高级类特性
static 关键字 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用.我们有 ...
- 【第一期百题计划进行中,快来打卡学习】吃透java、细化到知识点的练习题及笔试题,助你轻松搞定java
[快来免费打卡学习]参与方式 本期百题计划开始时间:2022-02-09,今日打卡题已在文中标红. 0.本文文末评论区打卡,需要登录才可以打卡以及查看其他人的打卡记录 1.以下练习题,请用对应的知识点 ...
- 战争热诚的python全栈开发之路
从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链接,一方面是为了自己找的话方便,一方 ...
- python全栈开发之路
一.Python基础 python简介 python数据类型(数字\字符串\列表) python数据类型(元组\字典) python数据类型(集合) python占位符%s,%d,%r,%f prin ...
- python基础---递归函数真题解析
方法一.有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中. 即: {'k ...
- jmeter & 性能测试:从0到实战(实操易用、面试造火箭、升职加薪必备)
[性能基础] 性能测试概念.术语:https://www.cnblogs.com/uncleyong/p/10706519.html 性能测试流程(新):https://www.cnblogs.com ...
- python面向对象之练习题2
练习题 需求: 士兵 可以 花钱买一个AK47 士兵 可以 用开开火 士兵 可以 买弹夹 士兵 可以 上子弹 士兵 可以 给 枪 添加子弹 枪 需要弹夹和有子弹的情况下,借助士兵扣动扳机 才能开火 枪 ...
随机推荐
- 阿里云出手SaaS生态,中国SaaS市场小而不强有望破解
企业服务SaaS市场还有很大的增长空间.SaaS的鼻祖Salesforces今年5月迈上了千亿美元市值的门槛,再一次为ToB市场注入了兴奋剂.单单一个SaaS CRM,目前全球的市场规模就超过400亿 ...
- 洛谷3128 [USACO15DEC]最大流Max Flow——树上差分
题目:https://www.luogu.org/problemnew/show/P3128 树上差分.用离线lca,邻接表存好方便. #include<iostream> #includ ...
- R语言基础画图/绘图/作图
R语言基础画图/绘图/作图 R语言基础画图 R语言免费且开源,其强大和自由的画图功能,深受广大学生和可视化工作人员喜爱,这篇文章对如何使用R语言作基本的图形,如直方图,点图,饼状图以及箱线图进行简单介 ...
- 【51nod1563】坐标轴上的最大团 贪心
题面 坐标轴上有n个点,每个点有一个权值.第i个点的坐标是 xi ,权值是 wi .现在对这些点建图.对于点对 (i,j) ,如果 \(|xi−xj|≥wi+wj\) ,那么就给第i个点和第j个点之间 ...
- kubernetes1.4新特性:增加新的节点健康状况类型DiskPressure
背景资料 在Kubernetes架构图中可以看到,节点(Node)是一个由管理节点委托运行任务的worker. 它能运行一个或多个Pods,节点(Node)提供了运行容器环境所需要的所有必要条件,在K ...
- 【JZOJ4910】【NOIP2017模拟12.3】子串
题目描述 数据范围 =w= 暴力: 从前往后枚举一个i,再从前往后枚举一个j: 如果s[i]不是s[j]的子串,更新答案,继续枚举: 如果s[i]是s[j]的子串,停止枚举. 因为对于s[k] (k& ...
- oracle如何看审计的结果
1)数据库初始化参数文件中AUDIT_TRAIL=OS时,审计记录存在操作系统的文件中. UNIX系统的话,默认存在“$oracle_home/rdbms/audit/” 目录下. If you ha ...
- Effective C++: 07模板与泛型编程
C++ template机制自身是一部完整的图灵机(Turing-complete):它可以被用来计算任何可计算的值.于是导出了模板元编程(TMP, template metaprogramming) ...
- 【JZOJ4876】【NOIP2016提高A组集训第10场11.8】基因突变
题目描述 邪恶的707刚刚从白垩纪穿越回来,心中产生了一个念头:我要统治人类! 但是统治人类是很庞大且复杂的一个工程,707尝试了洗脑,催眠,以及武装镇压都没能成功地统治人类,于是她决定从科学上对人类 ...
- poj 3280【区间dp】
poj 3280 题意:给定一个字符串和每个字符删去和增加的代价,求使字符串变成回文串操作所需的最小代价. 题解:哇!开心!终于亲自做对了!做完这两题这个就回了.uva10739 uva 10453 ...