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 士兵 可以 用开开火 士兵 可以 买弹夹 士兵 可以 上子弹 士兵 可以 给 枪 添加子弹 枪 需要弹夹和有子弹的情况下,借助士兵扣动扳机 才能开火 枪 ...
随机推荐
- R语言的可视化
1. 完整的数据分析流程 定义研究问题 定义理想数据集 确定能够获取什么数据 清理数据 2. 变量的类型: 数值变量(可进行加减乘除运算):连续(可在给定区间取任意数值).离散(给定集合内不连续取值) ...
- OSGi教程:Class Space Consistency
此教程基于OSGi Core Release 7 OSGi类空间的一致性 详细内容上面英文教程有详细解答 下面主要是一些个人见解,若有不当之处,欢迎指出: "Class space cons ...
- VS插件集合
VS的强大不仅仅在于VS本身的强大. 同时,也有很多好用的插件,可以帮助我们更好的编辑代码, 提高效率. https://marketplace.visualstudio.com/search?tar ...
- LintCode 合并二维数组
合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6] 之前想的是用剑指offer里替换空格那种方法 但是把 ...
- 强力Django+杀手级xadmin开发在线教育网站
强力Django+杀手级xadmin开发在线教育网站采用 Python3.7全新开发 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的 ...
- DirectX11笔记(三)--Direct3D初始化2
原文:DirectX11笔记(三)--Direct3D初始化2 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010333737/article/ ...
- HTTP之request请求(注册)
HTTP之request请求 request:请求 作用:获取浏览器发送过来的数据 组成部分:请求行 请求头 请求体 操作请求行 格式: 请求方式 请求资源 协议/版本 常用方法:HttpServle ...
- MySQL用户管理+MySQL权限管理
我们现在默认使用的都是root用户,超级管理员,拥有全部的权限! 但是,一个公司里面的数据库服务器上面可能同时运行着很多个项目的数据库! 所以,我们应该可以根据不同的项目建立不同的用户,分配不同的权限 ...
- Apache Camel,Spring Boot 实现文件复制,转移 (转)
基本框架 Apache Camel Spring Boot Maven 开发过程 1.新建一个POM(quickstart)项目,在POM文件中添加Camel和Spring Boot的依赖 <p ...
- iOS:你App的设置做对了吗?
http://www.cocoachina.com/ios/20151217/14707.html iOS 8及以上版本最不为人知的一个特点是与应用设置的深层链接,用户可以根据APP的需要授权启用位置 ...