A. Circle类的继承
定义圆类Circle,包含半径r,属性R能判断半径r的合理性(r>0),计算圆面积的方法double
Area()。
从Circle类派生出圆柱体类Cylinder类。该类新增圆柱体的高h,属性H能判断高h的合理性(h>0),新增计算圆柱体体积的方法double
Volume()。
如果半径、高不合法,就设置其值为0。
在Main方法中,创建一个Cylinder对象,输入半径和高(两行输入),并输出该对象的底面半径,高,底面积以及体积(面积和体积用double
Math.round(doulbe b, int digit) digit取1。
(要求:不使用构造方法,并且类中的字段为私有,方法为公有)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| using System;
namespace CSharp_Week6_A { class Circle { private double r; public double R { get { return r; } set { r = value > 0 ? value : 0; } } public double Area() { return Math.PI * R * R; } } class Cylinder : Circle { private double h; public double H { get { return h; } set { h = value > 0 ? value : 0; } } public double Volume() { return Area() * H; } } static class OutputConvert { public static void OutputString(string sop, params double[] opv) { string[] ops = new string[4]; for (int i = 0; i < 4; ++i) { opv[i] = Math.Round(opv[i], 1); ops[i] = Convert.ToString(opv[i]); } Console.WriteLine(string.Join(" ", ops)); } } class Program { static void Main(string[] args) { Cylinder ans = new Cylinder(); ans.R = Convert.ToDouble(Console.ReadLine()); ans.H = Convert.ToDouble(Console.ReadLine()); OutputConvert.OutputString(" ", ans.R, ans.H, ans.Area(), ans.Volume()); } } }
|
B.
Circle类的继承——带参构造方法
定义圆类Circle,包含半径r,属性R能判断半径r的合理性(r>0),计算圆面积的方法double
Area()。
从Circle类派生出圆柱体类Cylinder类。该类新增圆柱体的高h,属性H能判断高h的合理性(h>0),新增计算圆柱体体积的方法double
Volume()。
如果半径、高不合法,就设置其值为0。
在Main方法中,创建一个Cylinder对象,输入半径和高(两行输入),并输出该对象的底面积、体积。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| using System;
namespace CSharp_Week6_B { class Circle { private double r; public double R { get { return r; } set { r = value > 0 ? value : 0; } } public double Area() { return Math.PI * R * R; } } class Cylinder : Circle { private double h; public double H { get { return h; } set { h = value > 0 ? value : 0; } } public double Volume() { return Area() * H; } } static class OutputConvert { public static void OutputString(string sop, params double[] opv) { string[] ops = new string[opv.Length]; for (int i = 0; i < opv.Length; ++i) { opv[i] = Math.Round(opv[i], 1); ops[i] = Convert.ToString(opv[i]); } Console.WriteLine(string.Join(" ", ops)); } } class Program { static void Main(string[] args) { Cylinder ans = new Cylinder(); ans.R = Convert.ToDouble(Console.ReadLine()); ans.H = Convert.ToDouble(Console.ReadLine()); OutputConvert.OutputString(" ", ans.Area(), ans.Volume()); } } }
|
C. 点线类练习
从点类(Point):包含:带可选参数的构造方法Point(int x=0, int
y=0),
输出坐标点的方法ShowPoint以及读写坐标x、y的属性方法。
派生类(Line):计算线段的长度。Line类中新增表示线段终点的字段EndPoint,起点字段StartPoint。
计算线段距离的方法Distance以及输出线段起点和终点的方法ShowLine。
在主函数中,创建两个点对象,输出线段的距离。
【注:】本题编译通过即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| using System;
namespace CSharp_Week6_C { class Point { public const int dim = 2; private int[] xs = new int[dim]; public int X { get { return xs[0]; } set { xs[0] = value; } } public int Y { get { return xs[1]; } set { xs[1] = value; } } public int At(int x) { return x < dim ? xs[x] : 0; } public Point(int x = 0, int y = 0) { X = x; Y = y; } public void ShowPoint() { Console.WriteLine("({0}, {1})", X, Y); } } class Line { Point StartPoint, EndPoint; public Line(Point sp, Point ep) { StartPoint = sp; EndPoint = ep; } public void ShowLine() { Console.Write("StartPoint:"); StartPoint.ShowPoint(); Console.Write("EndPoint:"); EndPoint.ShowPoint(); } Func<int, int> sq = x => x * x; public double Distance() { int sqd = 0; for (int i = 0; i < Point.dim; ++i) sqd += sq(StartPoint.At(i) - EndPoint.At(i)); return Math.Sqrt(sqd); } public void ShowDistance() { Console.WriteLine(Distance()); } } class Program { static void Main(string[] args) { Point a = new Point(0, 0); Point b = new Point(1, 1); Line ab = new Line(a, b); ab.ShowDistance(); } } }
|
D. Student类的继承练习
实现两个类。
StuGrade类。该类的作用是成绩相关的操作。包括:
私有字段 int[] gra(学生成绩);
构造函数 StuGrade(params int[] stusgra);用于初始化私有字段gra;
公有方法 public double AvgGrade();返回学生成绩的平均值。
Student类。包含:
2个public 自实现属性string Name(学生姓名)、string
StuNum(学号);
1个private字段 string stuClass(学生班级);
1个StuGrade对象 stuG;
1个公有方法public bool IsStuNo(string s,out int
res)。检测学号是否合法。其中s是待检查的学号。学号必须是8位数字,21开头。不是8位数字res置1,非21开头res置2。合法res=学号。
1个公有方法public bool AddStu(string name, string sno, StuGrade stug,
string stuclass=
"数学")。如果学号合法的对象,将姓名、学号、成绩、班级(默认是数学)赋值,返回true。否则,不赋值,返回false。
在Main函数中,新建Student类对象stu,并接收控制台输入的信息.
【样例输入】
姓名,学号
成绩
如果输入学号合法,输出 学号:Success!AverageGrade:平均分
如果输入学号非法,输出 学号:Invalid!Error Code:res的值
例如:
新建对象Student stu1,尝试对stu1设置信息Alex,20812000, 成绩是:1, 2,
3, 4, 5。将按照如下格式输出
20812000:Invalid!Error Code:2
新建Student类对象stu2 ,尝试对stu2设置信息Bob,21812000, 成绩是:1, 2,
3。将按照如下格式输出
21812000:Success!AverageGrade:2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| using System;
namespace CSharp_Week6_D { class StuGrade { private int[] gra; public StuGrade(params int[] stusgra) { gra = stusgra; } public double AvgGrade() { double ans = 0; foreach (int sig in gra) ans += sig; ans /= gra.Length; return ans; } } class Student { public string Name { get; set; } public string StuNum { get; set; } private string stuClass; StuGrade stuG; const int vlen = 8; const string chpre = "21"; public static bool IsStuNo(string s, out int res) { if (s.Length != vlen) { res = 1; return false; } for (int i = 0; i < chpre.Length; ++i) if (s[i] != chpre[i]) { res = 2; return false; } res = Convert.ToInt32(s); return true; } public bool AddStu(string name, string sno, StuGrade stug, string stuclass = "数学") { int nov; if (!IsStuNo(sno, out nov)) return false; Name = name; StuNum = sno; stuG = stug; stuClass = stuclass; return true; } }
public static class InputConvert { public static int[] GetInputArray(char SplitOperator) { string[] instr = Console.ReadLine().Split(SplitOperator); int[] invar = new int[instr.Length]; for (int i = 0; i < invar.Length; ++i) invar[i] = Convert.ToInt32(instr[i]); return invar; } } class Program { static void Main(string[] args) { string[] nameid = Console.ReadLine().Split(','); int res; if (!Student.IsStuNo(nameid[1], out res)) Console.WriteLine("{0}:Invalid!Error Code:{1}", nameid[1], res); else { StuGrade sg = new StuGrade(InputConvert.GetInputArray(',')); Console.WriteLine("{0}:Success!AverageGrade:{1}", nameid[1], sg.AvgGrade()); } } } }
|
最后更新时间:
纰漏之处, 还望海涵, 请您联系作者, 我会尽快改正错误!