求C#大神 编写下列程序,用VS2010
1.编写一个骰子类(Dice),其中有一个私有字段faceValue(骰子的正面值),有两个方法一个是roll()表示滚动骰子以使骰子有一个1-6之间的一个随机数作为正面...
1. 编写一个骰子类(Dice),其中有一个私有字段faceValue(骰子的正面值),有两个方法一个是roll()表示滚动骰子以使骰子有一个1-6之间的一个随机数作为正面值,第二个方法是getFaceValue()作用是获得骰子的正面值,另外这个类还有一个构造方法,用于初始化正面值为1。以下为控制台测试代码。
2. 编写一个一元二次方程类(Equation),具有类型为double的三个私有字段a, b, c分别代表方程的三个系数,通过构造方法给三个系数设置值,并用getFirstRoot()方法和getSecondRoot()方法得到两个实根。请另编写一个控制台程序,用于测试Equation类的各项功能,a,b,c由控制台输入,并保证a != 0, b * b – 4 * a * c > 0。
3. 编写两个类Helper和Circle,其中Helper有两个重载的公有方法public void doubleMe(int x)和public void doubleMe(Circle c),功能分别:是把参数x(值类型)的值增加一倍并在控制台输出x的值和把参数c(引用类型)所代表的圆对象的半径增加一倍并在控制台输出c的半径。其中测试程序与输出结果如下:
请思考为什么程序的运行结果是这样? 展开
2. 编写一个一元二次方程类(Equation),具有类型为double的三个私有字段a, b, c分别代表方程的三个系数,通过构造方法给三个系数设置值,并用getFirstRoot()方法和getSecondRoot()方法得到两个实根。请另编写一个控制台程序,用于测试Equation类的各项功能,a,b,c由控制台输入,并保证a != 0, b * b – 4 * a * c > 0。
3. 编写两个类Helper和Circle,其中Helper有两个重载的公有方法public void doubleMe(int x)和public void doubleMe(Circle c),功能分别:是把参数x(值类型)的值增加一倍并在控制台输出x的值和把参数c(引用类型)所代表的圆对象的半径增加一倍并在控制台输出c的半径。其中测试程序与输出结果如下:
请思考为什么程序的运行结果是这样? 展开
2个回答
展开全部
static void Main(string[] args)
{
// RollDice();
//TestEquation();
DoubleCircle();
Console.ReadLine();
}
以上为主程序调用的方法,我分别将你的题目写在上面的方法里.
题目一:
private static void RollDice()Dice类如下:
{
Dice dice = new Dice();
Console.WriteLine("初始化的值{0}", dice.GetFaceValue());
dice.Roll();
Console.WriteLine("滚动骰子后的值{0}", dice.GetFaceValue());
dice = new Dice(6);
Console.WriteLine("初始化的值{0}", dice.GetFaceValue());
dice.Roll();
Console.WriteLine("滚动骰子后的值{0}", dice.GetFaceValue());
}
public class Dice
{
private int faceValue;
private Random random = new Random();
public Dice()
{
}
public Dice(int p)
{
this.faceValue = p;
}
public int GetFaceValue()
{
return faceValue;
}
public void Roll()
{
//这个可以注释,为了使随机数延时生成不同的的数字
System.Threading.Thread.Sleep(10);
faceValue = random.Next(1, 6);
}
}
题目2:
private static void TestEquation()
{
string strInput = string.Empty;
double a = 0, b = 0, c = 0;
while (!TestInputNum(strInput, ref a, ref b, ref c))
{
Console.WriteLine("请输入三个数字 a b c,保证 a != 0, b * b – 4 * a * c > 0,用空格分开:");
strInput = Console.ReadLine();
}
Equation qu = new Equation(a, b, c);
Console.WriteLine("第一个根:{0}", qu.GetFirstRoot());
Console.WriteLine("第二个根:{0}", qu.GetSecondRoot());
}
TestInputNum方法:
private static bool TestInputNum(string strInput, ref double a, ref double b, ref double c)
{
if (!string.IsNullOrEmpty(strInput) && strInput.Split(' ').Length == 3)
{
string[] strs = strInput.Split(' ');
//条件
if (double.TryParse(strs[0], out a) &&
double.TryParse(strs[1], out b) &&
double.TryParse(strs[2], out c))
{
if (a != 0 && b * b - 4 * a * c > 0)
{
return true;
}
else
Console.WriteLine("无根");
}
else
Console.WriteLine("输入不是数字");
}
return false;
}
Equation:
public class Equation
{
private double a;
private double b;
private double c;
private double del;
public Equation()
{
}
public Equation(double a, double b, double c)
{
this.a = a;
this.b = b;
this.c = c;
this.del = b * b - 4 * a * c;
}
public double GetFirstRoot()
{
return (-b + Math.Sqrt(del)) / (2 * a);
}
public double GetSecondRoot()
{
return (-b - Math.Sqrt(del)) / (2 * a);
}
}
题目三(这个问题有漏洞,需求和你截图的输出结果不一样,我是按照你需求来写的):
private static void DoubleCircle()
{
int x = 3;
Circle c = new Circle();
c.Radius = 5;
Helper h = new Helper();
x = h.DoubleMe(x);
c.Radius = h.DoubleMe(c);
Console.WriteLine("Out doubleMe:x={0}", x);
Console.WriteLine("Out doubleMe:半径={0}", c.Radius);
}
Circle类:
public class Circle
{
public int Radius { get; set; }
}
Helper类(自己再加工下):
public class Helper
{
/// <summary>
/// 是把参数x(值类型)的值增加一倍
/// </summary>
/// <param name="x"></param>
public int DoubleMe(int x)
{
return x * 2;
}
/// <summary>
/// 把参数c(引用类型)所代表的圆对象的半径增加一倍
/// </summary>
/// <param name="c"></param>
public int DoubleMe(Circle c)
{
return DoubleMe(c.Radius);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询