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{.. ...
随机推荐
- PythonQt第一例
pythonQt第一例源码如下,主要介绍了简单的使用方式,需要注意的是应用程序的debug版本和release版本必须使用同类型的PythonQt库不可交叉使用. 源码地址:http://files. ...
- 面向对象的JavaScript-007-Function.prototype.bind() 的4种作用
1. // Function.prototype.bind() 的作用 // 1.Creating a bound function this.x = 9; var module = { x: 81, ...
- Openssl base64命令
一.简介 对文件件进行base64的编码与解码 二.语法 openssl base64 [-in filename] [-out filename] 三.实例 1.二进制文件与base64编码互转 o ...
- (转)C#中的 Interfaces (For 初学者们)
http://blog.sina.com.cn/s/blog_574c993d0100d59n.html
- linux ubuntu 各目录大小
/home 45k /bin 8.7M /lib 370M /mnt 4.1k /run 36k /sbin 11M /tmp 41k /usr/share 770M
- JavaScript 与JQuery 常用方法比较
http://drupalchina.cn/content/javascript-yu-jquery-chang-yong-fang-fa-bi-jiao 1.加载DOM区别 JavaScript: ...
- javascript总结36:DOM-点击按钮切换图片案例
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...
- CodeForces 682A Alyona and Numbers (水题,数学)
题意:给定两个数 m,n,问你在从1到 n,和从 1到 m中任选两个数加起来是5的倍数,问你有多少个. 析:先计算 m 和 n中有多少个取模5是从0到4的,然后根据排列组合,相乘就得到了小于等于 m ...
- 使用火蜘蛛采集器Firespider采集天猫商品数据并上传到微店
有很多朋友都需要把天猫的商品迁移到微店上去.可在天猫上的商品数据非常复杂,淘宝开放接口禁止向外提供数据,一般的采集器对ajax数据采集的支持又不太好. 还有现在有了火蜘蛛采集器,经过一定的配置,终于把 ...
- spark介绍2
上述结果是 map 1 filter 1 map 2 filter 2 map 3 filter 3 map 4 filter 4 即说明是并行,且互不干扰,每个task运行到最后