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#面向对象--练习题的更多相关文章

  1. Java面向对象练习题

    1.猜数字游戏: 一个类A有两个成员变量v.num,v有一个初值100. 定义一个方法guess,对A类的成员变量v,用num进行猜. 如果大了则提示大了,小了则提示小了.等于则提示猜测成功. 在ma ...

  2. Python面向对象练习题

    1.模拟栈操作原理 先进后出 ​1.初始化(创建一个存储数据的列表) 2.进栈使用列表保存数据 ​ 3.出栈 使用列表删除数据 ​ 4.查看栈顶元素 切片获取列表最后一位数据 ​5.判断是否为空栈 6 ...

  3. Java【第八篇】面向对象之高级类特性

    static 关键字 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用.我们有 ...

  4. 【第一期百题计划进行中,快来打卡学习】吃透java、细化到知识点的练习题及笔试题,助你轻松搞定java

    [快来免费打卡学习]参与方式 本期百题计划开始时间:2022-02-09,今日打卡题已在文中标红. 0.本文文末评论区打卡,需要登录才可以打卡以及查看其他人的打卡记录 1.以下练习题,请用对应的知识点 ...

  5. 战争热诚的python全栈开发之路

    从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链接,一方面是为了自己找的话方便,一方 ...

  6. python全栈开发之路

    一.Python基础 python简介 python数据类型(数字\字符串\列表) python数据类型(元组\字典) python数据类型(集合) python占位符%s,%d,%r,%f prin ...

  7. python基础---递归函数真题解析

    方法一.有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中. 即: {'k ...

  8. jmeter & 性能测试:从0到实战(实操易用、面试造火箭、升职加薪必备)

    [性能基础] 性能测试概念.术语:https://www.cnblogs.com/uncleyong/p/10706519.html 性能测试流程(新):https://www.cnblogs.com ...

  9. python面向对象之练习题2

    练习题 需求: 士兵 可以 花钱买一个AK47 士兵 可以 用开开火 士兵 可以 买弹夹 士兵 可以 上子弹 士兵 可以 给 枪 添加子弹 枪 需要弹夹和有子弹的情况下,借助士兵扣动扳机 才能开火 枪 ...

随机推荐

  1. c++新特性实验(1)预处理

    1.参考资料 1.1 C++ C++17 标准文档(正式)  :    https://www.iso.org/standard/68564.html C++ 标准文档(草案)      :   ht ...

  2. 使用dos行命令实现文件夹内文件名统计

    1.进入在dos环境下 2.进入需要统计的目录下. 3.使用命令 dir /b>e:1.xls 结果:会在路径(e:\资料\资料整理)下生成一个新的文件(1.xls).1.xls把路径(e:\资 ...

  3. MaxCompute推出面向开发者的专属版本,普惠大数据开发者

    3月20号,阿里云正式对外宣布推出MaxCompute产品的新规格-开发者版.MaxCompute开发者版是阿里云大数据计算服务发布的开发者专属版本.区别于原有的按量付费.按CU预付费规格,开发者版是 ...

  4. Cannot read property 'appendChild' of null

    1.js报错解决办法 这个一般是你获取的节点不存在引起的. 可能出现这种情况的原因:你获取这节点时,节点还没加载,例如:你的JS写在head里面,取body里面的某一节点,这时候是取不到的.这种情况的 ...

  5. No PostCSS Config found解决办法

    npm install报错 Module build failed: Error: No PostCSS Config found 解决办法是同级package.json文件新建postcss.con ...

  6. hdu5437 优先队列 长春网赛

    优先队列做,然后遍历人数. #include <queue> #include <stdio.h> #include <string.h> #define maxn ...

  7. 2019-8-29-dotnet-core-使用-sqlite-部署到-Centos-服务器

    title author date CreateTime categories dotnet core 使用 sqlite 部署到 Centos 服务器 lindexi 2019-08-29 19:1 ...

  8. UVA_10071:Back to High School Physics

    Language:C++ 4.8.2 #include<stdio.h> int main(void) { int v, t; while(scanf("%d%d", ...

  9. 洛谷3067 BZOJ 2679题解(折半搜索)

    传送门 BZOJ传送门(权限题) 看到n小于20,就可以想到搜索 所有的数要么在集合a中,要么在集合b中,要么都不在 可是3^n复杂度会炸,我们考虑优化 可以利用折半搜索,将前面一半的所有可能情况与后 ...

  10. MUI - 关于百度定位

    关于百度定位 这是官方定位的解释:geolocation 地图插件配置 我在问答里面找到了这位童鞋的百度定位,地址变更提醒 *** 不过,童鞋倒是给具体的示例啊,木有~~~~(>_<)~~ ...