求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的半径。其中测试程序与输出结果如下:

请思考为什么程序的运行结果是这样?
展开
 我来答
mi_new
2013-04-16 · TA获得超过6328个赞
知道小有建树答主
回答量:547
采纳率:0%
帮助的人:294万
展开全部
static void Main(string[] args)
{
// RollDice();
//TestEquation();
DoubleCircle();
Console.ReadLine();
}

以上为主程序调用的方法,我分别将你的题目写在上面的方法里.

题目一:

private static void RollDice()
{
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());
}
Dice类如下:

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);
}
}
playsenlin
2013-04-16 · TA获得超过101个赞
知道小有建树答主
回答量:438
采纳率:0%
帮助的人:240万
展开全部
这太扣了。五分。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式