结构体:

结构体类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数、常数、字段、方法、属性、索引器、运算符、事件和嵌套类型的值类型。

结构体在几个方面不同于类:结构体为值类型而不是引用类型,并且结构体不支持继承。(继承:他爸爸有的他也有)

用结构的主要思想是用于创建小型的对象,如Point和FileInfo等等。这可以节省内存,因为没有如类对象所需的那样有额外的引用产生。

结构体是一个变量组,将一组变量放在一起,其实就是一个自定义的集合,里面可以包含各种类型的数据,用法和集合一样。

结构体一般定义在Main函数上面,位于Class下面,作为一个类,一般情况Struct定义在Main函数前面,Main函数里面的地方都可以使用,参数前面加上public代表公用变量。

格式:

struct 结构体名称

{

public int+变量名:

public string+变量名:

public int+变量名:

}

练习:输入人数,输入学号、姓名、性别、总分,并打印

//请输入班级人数,输入每个人的学号,姓名,和语文分数、数学分数和英语分数(要求使用结构体)
//求班级里两个语文分数是最高分的学生的所有信息;数学分数是最高分的两个学生的所有信息;英语平均分。 using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 练习
{
class Program
{
struct xinxi
{
public string xh;
public string name;
public Score fenshu;
}
struct Score
{
public double yufen;
public double shufen;
public double yingfen;
} static void Main(string[] args)
{
ArrayList al = new ArrayList();
Console.Write("请输入班级人数:");
int s = int.Parse(Console.ReadLine());
for (int i = ; i < s; i++)
{
xinxi xx = new xinxi();
Console.Write("请输入第{0}个人的学号:", i + );
xx.xh = Console.ReadLine();
Console.Write("请输入第{0}个人的姓名:", i + );
xx.name = Console.ReadLine();
Console.Write("请输入第{0}个人的语文分数:", i + );
xx.fenshu.yufen = int.Parse(Console.ReadLine());
Console.Write("请输入第{0}个人的数学分数:", i + );
xx.fenshu.shufen = int.Parse(Console.ReadLine());
Console.Write("请输入第{0}个人的英语分数:", i + );
xx.fenshu.yingfen = int.Parse(Console.ReadLine());
al.Add(xx);
}
xinxi xyx = new xinxi();
xyx.xh = "";
xyx.name = "零";
xyx.fenshu.yufen=;
xyx.fenshu.shufen=;
xyx.fenshu.yingfen=;
al.Add(xyx);
Console.WriteLine("输入完毕,按回车键继续");
Console.ReadLine();
//
Console.WriteLine();
Console.WriteLine("语文分数最高分的两个学生的信息是:");
for (int i = ; i < s - ; i += )
{
xinxi xx1 = (xinxi)al[i];
for (int j = i + ; j < s; j += )
{
xinxi xx2 = (xinxi)al[j];
if (xx1.fenshu.yufen < xx2.fenshu.yufen)
{
al[s] = al[i];
al[i] = al[j];
al[j] = al[s];
}
}
}
for (int i = ; i <= ; i++)
{
xinxi xxx = (xinxi)al[i];
Console.WriteLine("学号{0},姓名{1},语文{2}分,数学{3}分,英语{4}分。", xxx.xh, xxx.name, xxx.fenshu.yufen, xxx.fenshu.shufen, xxx.fenshu.yingfen);
} //
Console.WriteLine();
Console.WriteLine("数学分数最高分的两个学生的信息是:");
for (int i = ; i < s - ; i += )
{
xinxi xx1 = (xinxi)al[i];
for (int j = i + ; j < s; j += )
{
xinxi xx2 = (xinxi)al[j];
if (xx1.fenshu.shufen < xx2.fenshu.shufen)
{
al[s] = al[i];
al[i] = al[j];
al[j] = al[s];
}
}
}
for (int i = ; i <= ; i++)
{
xinxi xxx = (xinxi)al[i];
Console.WriteLine("学号{0},姓名{1},语文{2}分,数学{3}分,英语{4}分。", xxx.xh, xxx.name, xxx.fenshu.yufen, xxx.fenshu.shufen, xxx.fenshu.yingfen);
}
//
Console.WriteLine();
double sum = ;
for (int i = ; i < s;i++ )
{
xinxi yysum=(xinxi)al[i];
sum += yysum.fenshu.yingfen;
}
double avg = sum / s;
Console.WriteLine("英语平均分为:"+avg);
Console.ReadLine();
}
}
}

结构体练习

C#-★结构体★的更多相关文章

  1. Go结构体实现类似成员函数机制

    Go语言结构体成员能否是函数,从而实现类似类的成员函数的机制呢?答案是肯定的. package main import "fmt" type stru struct { testf ...

  2. C#基础回顾(二)—页面值传递、重载与重写、类与结构体、装箱与拆箱

    一.前言 -孤独的路上有梦想作伴,乘风破浪- 二.页面值传递 (1)C#各页面之间可以进行数据的交换和传递,页面之间可根据获取的数据,进行各自的操作(跳转.计算等操作).为了实现多种方式的数据传递,C ...

  3. go语言结构体

    定义: 是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体. 成员: 每个值称为结构体的成员. 示例: 用结构体的经典案例处理公司的员工信息,每个员工信息包含一个唯一的员工编号.员工的名字. ...

  4. C语言中的结构体

    用户自己建立自己的结构体类型 1.  定义和使用结构体变量 (1).结构体的定义 C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体. (2).声明一个结构体类型的一般形式为: ...

  5. C++_系列自学课程_第_12_课_结构体

    #include <iostream> #include <string> using namespace std; struct CDAccount { double bal ...

  6. java socket传送一个结构体给用C++编写的服务器解析的问题

    另一端是Java写客户端程序,两者之间需要通信.c++/c接收和发送的都是结构体,而Java是直接发送的字节流或者byte 数组.解决方法:c++/c socket 在发送结构体的时候其实发送的也是字 ...

  7. swift学习笔记3——类、结构体、枚举

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  8. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  9. C语言结构体对齐

    1.结构体变量中的元素如何访问? (1)数组中元素的访问方式:表面上有2种方式(数组下标方式和指针方式):实质上都是指针方式访问.(2)结构体变量中的元素访问方式:只有一种,用.或者->的方式来 ...

  10. C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用

    类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...

随机推荐

  1. 钉钉开发笔记(三)MySQL的配置

    最近在编写web的过程中,经常需要与后台工作人员互动.由于比较麻烦.没有效率. 就果断的请教了,公司的后台大牛,学习下数据库的一些简单操作,现在就把利用MySQL连接服务器, 进行可视化操作的简单步骤 ...

  2. 801. Minimum Swaps To Make Sequences Increasing 为使两个数组严格递增,所需要的最小交换次数

    [抄题]: We have two integer sequences A and B of the same non-zero length. We are allowed to swap elem ...

  3. php static 变量声明

    <?phpfunction test($key){ static $array = array();  /* 静态变量是只存在于函数作用域中的变量,注释:执行后这种变量不会丢失(下次调用这个函数 ...

  4. Tomcat内存溢出及大小调整

    一.在使用Java程序从数据库中查询大量的数据或是应用服务器(如tomcat.jboss,weblogic)加载jar包时会出现java.lang.OutOfMemoryError异常.这主要是由于应 ...

  5. spark reduceByKey

    reduce(binary_function) reduce将RDD中元素前两个传给输入函数,产生一个新的return值,新产生的return值与RDD中下一个元素(第三个元素)组成两个元素,再被传给 ...

  6. DWR 3.0 入门示例教程

    DWR(Direct Web Remoting) DWR is a Java library that enables Java on the server and JavaScript in a b ...

  7. 关于更新vs2017后发布的问题 命令“bower install”已退出,代码为 9009

    更新vs2017 尝试发布 出现  命令“bower install”已退出,代码为 9009 然后我点工具测试了一下nodejs 出现下图弹窗  百度了一下 没找到对策,有没有大侠知道怎么解决 解决 ...

  8. LWIP协议栈2-

    ->->->

  9. python str, list,tuple, dir

    Python3 字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello ...

  10. STL之erase用法

    vector::erase():从指定容器删除指定位置的元素或某段范围内的元素 vector::erase()方法有两种重载形式 如下: 1.iterator erase(iterator _Wher ...