场景

定义一个学生类,包含字段(学号,姓名,语文成绩,数学成绩,英语成绩)、属性(总成绩)、三个方法分别为(求平均分、数学平均分、语文平均分)。

要求:在main()方法中,定义一个学生类型的数组,保存全班所有同学的信息,并通过控制台为每个同学输入字段(学号,姓名,语文成绩,数学成绩,英语成绩)的值,最后,控制台输出班级一共有多少个学生,各科及总分平均分分别为多少。

实验方法

1.        在控制台应用程序程序中编写代码,项目名为student。

2.        分析类的成员。

3.        编写类声明语句,包括字段、、属性、方法声明。

实验结果

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Student
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入班级中学生人数:");
int num = int.Parse(Console.ReadLine());
Student[] stu = new Student[num];
for (int i = 0; i < stu.Length; i++)
{
stu[i] = new Student();//必须分别开辟空间
	    }
int count=0;
int sumShuxue=0;
int sumYuwen=0;
int sumYingyu=0;
int sumScore=0;
int avgShuxue,avgYuwen, avgYingyu, avgScore;
for (int i = 0; i < stu.Length; i++)
{
Console.WriteLine("请输入第{0}个学生的学号:", i+1);
stu[i].Num = string.Format(Console.ReadLine());
Console.WriteLine("请输入第{0}个学生的姓名:", i + 1);
stu[i].Name = string.Format(Console.ReadLine());
Console.WriteLine("请输入第{0}个学生的语文成绩:", i + 1);
stu[i].Yuwen = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第{0}个学生的数学成绩:", i + 1);
stu[i].Shuxue = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第{0}个学生的英语成绩:", i + 1);
stu[i].Yingyu = int.Parse(Console.ReadLine());
count++;
}
for (int j = 0; j < stu.Length; j++)
{
sumYuwen = sumYuwen + stu[j].Yuwen;
sumShuxue = sumShuxue + stu[j].Shuxue;
sumYingyu = sumYingyu + stu[j].Yingyu;
sumScore = sumScore + stu[j].Score;
}
avgYuwen = sumYuwen / count;
avgShuxue = sumShuxue / count;
avgYingyu = sumYingyu / count;
avgScore = sumScore / count ;
Console.WriteLine("一共有{0}名学生,班级语文平均分为{1},数学平均分为{2},班级英语成绩分为{3},总分平均分为{4}",count,avgYuwen,avgShuxue,avgYingyu,avgScore);
Console.ReadLine();
}
}
class Student
{
public string num; public string Num
{
get { return num; }
set { num = value; }
}
string name; public string Name
{
get { return name; }
set { name = value; }
}
int yuwen; public int Yuwen
{
get { return yuwen; }
set { yuwen = value; }
}
int shuxue; public int Shuxue
{
get { return shuxue; }
set { shuxue = value; }
}
int yingyu; public int Yingyu
{
get { return yingyu; }
set { yingyu = value; }
}
public int Score
{
get { return yingyu + shuxue + yuwen; }
} } }

对象数组空指针异常说明——C#中使用对象数组必须分别为其开辟空间的更多相关文章

  1. 根据数组下标在MongoDB中修改数组元素

    如下图这样的数据: 即文档中某个字段是一个数组,而每个数组元素又是一个对象,现在需求是对每个对象中的content字段值作情感分析后,把情感分析得到的结果增加到这个对象中去. 如上图中第1个元素,修改 ...

  2. 在thinkphp框架中使用后台传值过来的数组,在hightcart中使用数组

    js的数组是和php里面数组是不一样的,所以模板文件需要先接受,然后利用Js代码转化之后再使用,接受后台的数组有几种办法 1.后台传过来的json数组,利用Js是可以接受的,然后将json数据利用js ...

  3. PHP中的数组方法及访问方法总结

    一.数组操作的基本函数 数组的键名和值 array_values($arr);获得数组的值 array_keys($arr);获得数组的键名 array_flip($arr);数组中的值与键名互换(如 ...

  4. javascript中稀疏数组和密集数组

    密集数组 数组是一片连续的存储空间,有着固定的长度.加入数组其实位置是address,长度为n,那么占用的存储空间是address[0],address[1],address[2].......add ...

  5. C++中若类中没有默认构造函数,如何使用对象数组

    前言: 如果定义一个类,有其默认的构造函数,则使用new动态实例化一个对象数组,不是件难事,如下代码: #include <memory> #include <iostream> ...

  6. JS对象 JavaScript 中的所有事物都是对象,如:字符串、数值、数组、函数等,每个对象带有属性和方法。

    什么是对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方法: ...

  7. struts2:遍历自定义字符串数组,遍历Action实例所引用对象中的数组

    在struts2:OGNL表达式,遍历List.Map集合:投影的使用一文中已经讲述了OGNL遍历List.Map集合等功能. 本文简单写一个遍历数组的示范程序. 1. 遍历自定义字符串数组 < ...

  8. JavaScript 中有关数组对象的方法

    JS 处理数组多种方法 js 中的数据类型分为两大类:原始类型和对象类型. 原始类型包括:数值.字符串.布尔值.null.undefined 对象类型包括:对象即是属性的集合,当然这里又两个特殊的对象 ...

  9. js中的数组对象排序(方法sort()详细介绍)

    定义和用法 sort() 方法用于对数组的元素进行排序. 语法    arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意 ...

随机推荐

  1. 【Mac + Appium + Python3.6学习(二)】之Android自动化测试,appium-desktop配置和简易自动化测试脚本

    上一篇文章介绍安装appium测试环境,这一片研究介绍如何测试Android自动化. 上一篇地址:<[Mac + Appium学习(一)]之安装Appium环境> 这一篇参考:<Ma ...

  2. 接入qq登录功能出现的问题

    在调用qq授权的接口时,出现以上错误. 原因是: 打包的应用签名和第一次上传包的签名不一致造成的 解决方法: 第一种方法:用上次打包apk的keystore重新打包apk,使签名一致. 第二种方法:联 ...

  3. 集合映射Set(使用xml文件)

    如果持久类具有Set对象,可以在映射文件中使用set元素映射Set集合. set元素不需要索引元素. List和Set之间的区别是: Set只存储唯一的值. 我们来看看我们如何在映射文件中实现集合: ...

  4. eclipse 查看源代码

    文地址:http://blog.csdn.net/sushengmiyan/article/details/18798473 本文作者:sushengmiyan 我们在使用Eclipse的时候,经常是 ...

  5. CImg的使用,入门

    CImg的使用: const char *imageIN="image.jpg" const char *imageOUT="imgeout.jpg" CImg ...

  6. 2205 Problem B

    问题 B: [高精度]简单高精度加法 时间限制: 1 Sec  内存限制: 64 MB 提交: 77  解决: 25 [提交][状态][讨论版] 题目描述 修罗王解决了计算机的内存限制问题,终于可以使 ...

  7. 服务器之ipmitool

    一般命令 raw #发送一个原始的IPMI请求,并且打印回复信息. Lan #配置网络(lan)信道(channel) chassis #查看底盘的状态和设置电源 event #向BMC发送一个已经定 ...

  8. mysql的体系架构和存储引擎

    定义数据库和实例 数据库:物理操作系统的文件或其他形式文件类型的集合.在mysql数据库中,数据库文件可以是frm.MYD.MYI.ibd结尾的文件. 实例:MySQL数据库由后台线程以及一个共享内存 ...

  9. PHP实现对短信验证码发送次数的限制(防机刷验证码)

    PHP实现对短信验证码发送限制(防止机刷验证码) 对用户获取短信验证码的手机号.ip.和浏览器(使用唯一标识)进行限制.本文介绍的方法是对用户每天只能通过同一浏览器或同一ip地址获取验证码10次或者同 ...

  10. Assertion (software development) -- 断言

    Wiki: In computer programming, an assertion is a predicate (a true–false statement) placed in a prog ...