C#-★结构体★
结构体:
结构体类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数、常数、字段、方法、属性、索引器、运算符、事件和嵌套类型的值类型。
结构体在几个方面不同于类:结构体为值类型而不是引用类型,并且结构体不支持继承。(继承:他爸爸有的他也有)
用结构的主要思想是用于创建小型的对象,如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#-★结构体★的更多相关文章
- Go结构体实现类似成员函数机制
Go语言结构体成员能否是函数,从而实现类似类的成员函数的机制呢?答案是肯定的. package main import "fmt" type stru struct { testf ...
- C#基础回顾(二)—页面值传递、重载与重写、类与结构体、装箱与拆箱
一.前言 -孤独的路上有梦想作伴,乘风破浪- 二.页面值传递 (1)C#各页面之间可以进行数据的交换和传递,页面之间可根据获取的数据,进行各自的操作(跳转.计算等操作).为了实现多种方式的数据传递,C ...
- go语言结构体
定义: 是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体. 成员: 每个值称为结构体的成员. 示例: 用结构体的经典案例处理公司的员工信息,每个员工信息包含一个唯一的员工编号.员工的名字. ...
- C语言中的结构体
用户自己建立自己的结构体类型 1. 定义和使用结构体变量 (1).结构体的定义 C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体. (2).声明一个结构体类型的一般形式为: ...
- C++_系列自学课程_第_12_课_结构体
#include <iostream> #include <string> using namespace std; struct CDAccount { double bal ...
- java socket传送一个结构体给用C++编写的服务器解析的问题
另一端是Java写客户端程序,两者之间需要通信.c++/c接收和发送的都是结构体,而Java是直接发送的字节流或者byte 数组.解决方法:c++/c socket 在发送结构体的时候其实发送的也是字 ...
- swift学习笔记3——类、结构体、枚举
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- C语言结构体对齐
1.结构体变量中的元素如何访问? (1)数组中元素的访问方式:表面上有2种方式(数组下标方式和指针方式):实质上都是指针方式访问.(2)结构体变量中的元素访问方式:只有一种,用.或者->的方式来 ...
- C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用
类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...
随机推荐
- 钉钉开发笔记(三)MySQL的配置
最近在编写web的过程中,经常需要与后台工作人员互动.由于比较麻烦.没有效率. 就果断的请教了,公司的后台大牛,学习下数据库的一些简单操作,现在就把利用MySQL连接服务器, 进行可视化操作的简单步骤 ...
- 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 ...
- php static 变量声明
<?phpfunction test($key){ static $array = array(); /* 静态变量是只存在于函数作用域中的变量,注释:执行后这种变量不会丢失(下次调用这个函数 ...
- Tomcat内存溢出及大小调整
一.在使用Java程序从数据库中查询大量的数据或是应用服务器(如tomcat.jboss,weblogic)加载jar包时会出现java.lang.OutOfMemoryError异常.这主要是由于应 ...
- spark reduceByKey
reduce(binary_function) reduce将RDD中元素前两个传给输入函数,产生一个新的return值,新产生的return值与RDD中下一个元素(第三个元素)组成两个元素,再被传给 ...
- DWR 3.0 入门示例教程
DWR(Direct Web Remoting) DWR is a Java library that enables Java on the server and JavaScript in a b ...
- 关于更新vs2017后发布的问题 命令“bower install”已退出,代码为 9009
更新vs2017 尝试发布 出现 命令“bower install”已退出,代码为 9009 然后我点工具测试了一下nodejs 出现下图弹窗 百度了一下 没找到对策,有没有大侠知道怎么解决 解决 ...
- LWIP协议栈2-
->->->
- python str, list,tuple, dir
Python3 字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello ...
- STL之erase用法
vector::erase():从指定容器删除指定位置的元素或某段范围内的元素 vector::erase()方法有两种重载形式 如下: 1.iterator erase(iterator _Wher ...