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 士兵 可以 用开开火 士兵 可以 买弹夹 士兵 可以 上子弹 士兵 可以 给 枪 添加子弹 枪 需要弹夹和有子弹的情况下,借助士兵扣动扳机 才能开火 枪 ...
随机推荐
- python之特点
.python区分大小写:2.注释规范:python使用井号#作为单行注释,且注释的位置,一般放在要注释代码的前一行或这代码的右侧:多行注释则可以用连续三个单引号开始一行,并连续三个单引号在要注释的代 ...
- Faster RCNN算法训练代码解析(1)
这周看完faster-rcnn后,应该对其源码进行一个解析,以便后面的使用. 那首先直接先主函数出发py-faster-rcnn/tools/train_faster_rcnn_alt_opt.py ...
- C++多态小结
C++ 多态 多态 多态按字面的意思就是多种形态.当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态. C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数. 多态 ...
- Html5知识点以及兼容性
什么的HTNL5? HTML5 是最新的 HTML 标准. HTML5 是专门为承载丰富的 web 内容而设计的,并且无需额外插件. HTML5 拥有新的语义.图形以及多媒体元素. HTML5 提供的 ...
- C++ fstream文件操作
代码如下: #include "stdafx.h" #include<string> #include<iostream> //是因为要使用cout #in ...
- 构建PaaS的开源平台:CloudFoundry
CloudFoundry的架构: 点评:这是vmware用ruby开发的一个paas,由于对ruby不太熟悉,还是比较难理解. refer to :http://www.oschina.net/que ...
- 使用fast-json-stringify代替JSON.stringify
使用JSON.stringify的思考 使用过JSON对象的程序员最常做的一项工作便是,将JSON对象转化为字符串.该字符串的用途很多,例如可以使用在WEB的URL中,在多个页面间进行传递. cons ...
- typescript+react+antd基础环境搭建
typescript+react+antd基础环境搭建(包含样式定制) tsconfig.json 配置 // 具体配置可以看上面的链接 这里module moduleResolution的配置都会影 ...
- Linux常用命令2 权限管理命令
1.权限管理命令:chmod 上面图片中的ugoa与rwx并不是一个命令,而是不同选项 u 所有者 g 所属组 o 其他人 a 所有人 r 读取权限 w写入权限 x 执行权限 chmod u+x ...
- Valgrind 初次接触
Valgrind 英文的意思是:堆内存 它有很多小工具,作用各不相同 学习于: http://blog.csdn.net/sduliulun/article/details/7732906 http: ...