A. 重载方法的练习
在Main函数所在的类,实现两个方法用于计算成绩的平均值,小数点后1位。
public static double AvgGrade(int[] gra)
//数值型成绩的平均值。得分1~5之间。课程数无限制。
public static double AvgGrade(string[] sgra)
//成绩分为“good”和“ok”两个等级。good等价于4分,ok等价于1分。
在Main方法中,分别调用两种方法,均能输出平均成绩。输入用空格分开。
【注:】
- 四舍五入的区别请大家了解https://www.cnblogs.com/fanyong/archive/2013/05/30/chinese_round.html
大家选取“传统意义上的四舍五入”的定义方法。
- 保留*位小数的方法请参考
https://blog.csdn.net/qq_40985921/article/details/85414484
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
| using System;
namespace CSharp_Week5_A { static class InputConvert { public static int[] ToInputArray(params string[] instr) { int[] invar = new int[instr.Length]; for (int i = 0; i < invar.Length; ++i) invar[i] = Convert.ToInt32(instr[i]); return invar; } } class Program { public static double AvgGrade(params int[] gra) { double ans = 0; foreach (int sg in gra) ans += sg; ans /= gra.Length; return ans; } public static double AvgGrade(params string[] sgra) { int[] gra = new int[sgra.Length]; for (int i = 0; i < sgra.Length; ++i) gra[i] = sgra[i] == "good" ? 4 : 1; return AvgGrade(gra); } static void Main(string[] args) { string[] ip = Console.ReadLine().Split(' '); double ans; if (ip[0][0] >= '0' && ip[0][0] <= '9') ans = AvgGrade(InputConvert.ToInputArray(ip)); else ans = AvgGrade(ip); Console.WriteLine("{0:0.0}", ans); } } }
|
B. 时间类
定义一个时间类。
成员有3个属性(包括对应的私有字段)年、月、日。属性要判断
年>0、12>=月份>0、日>0并要在所在月份天数之内。
一个构造方法,在构造方法中给属性赋值。
在program类中,定义一个方法,方法的两个参数就是时间类的对象。
方法的作用是,比较第一个参数(时间)和第二个参数(时间)的早晚,如果第一个时间早,返回1,相等返回0,小于返回-1。
在主函数main()中调用该方法。
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| using System;
namespace CSharp_Week5_B { static class InputConvert { public static int[] ToInputArray(params string[] instr) { int[] invar = new int[instr.Length]; for (int i = 0; i < invar.Length; ++i) invar[i] = Convert.ToInt32(instr[i]); return invar; } } class Date { const int datelen = 3; private int year = -1, month = -1, day = -1; int[] data = new int[datelen]; public bool Vaild { get; private set; } public int Year { get { return year; } private set { if (value > 0) year = value; else Vaild = false; } } public int Month { get { return month; } private set { if (value > 0 && value <= 12) month = value; else Vaild = false; } } int DayLimit() { switch (Month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 4: case 6: case 9: case 11: return 30; case 2: if (Year % 400 == 0) return 29; else if (Year % 100 == 0) return 28; else if (Year % 4 == 0) return 29; else return 28; default: return -1; } } public int Day { get { return day; } private set { if (value > 0 && value <= DayLimit()) day = value; else Vaild = false; } } void Update(params int[] ip) { Vaild = true; for (int i = 0; i < datelen && i < ip.Length; ++i) data[i] = ip[i]; Year = data[0]; Month = data[1]; Day = data[2]; } void Update(params string[] sip) { Update(InputConvert.ToInputArray(sip)); } void Update(string date, char soperator) { Update(date.Split(soperator)); } public Date(params int[] ip) { Update(ip); } public Date(params string[] sip) { Update(sip); } public Date(string date, char soperator = '/') { Update(date, soperator); } public int CompareTo(Date b) { for (int i = 0; i < datelen; ++i) { if (data[i] < b.data[i]) return -1; if (data[i] > b.data[i]) return 1; } return 0; } } class Program { static void Main(string[] args) { string[] line = Console.ReadLine().Split(' '); Date[] cmp = new Date[line.Length]; for (int i = 0; i < line.Length; ++i) cmp[i] = new Date(line[i]); Console.WriteLine(-cmp[0].CompareTo(cmp[1])); } } }
|
C. 控制台交互式小程序练习
开发计算机辅助教学程序,教小学生学乘法。程序功能:
(1)程序开始时让用户选择“年级”为1或2。一年级使只用1位数乘法;二年级使用2位数乘法。
(2)用Random对象产生两个1位或2位正整数,然后输出以下问题,例如:
How much is 6 times 7?
然后学生输入答案,程序检查学生的答案。如果正确,则打印“Very
good!”,然后提出另一个乘法问题。如果不正确,则打印“No,Please try
again.”,然后让学生重复回答这个问题,直到答对。
(3)答对3道题后程序结束。
(4)每个新的问题要求使用一个单独方法产生,
这个方法在程序开始时和每次用户答对时调用。
【注:】此程序无测试用例,编译通过即可。
偷懒了,没写。
最后更新时间:
纰漏之处, 还望海涵, 请您联系作者, 我会尽快改正错误!