先复习一下:
1.输入两个数比较大小,返回大的
{ public double bijiao() { Console.Write("请输入第一个数"); double a = double.Parse(Console.ReadLine()); Console.Write("请输入第二个数:"); double b = double.Parse(Console.ReadLine()); if (a > b) { return a; } else { return b; } }
2.写一个函数,剪子包袱锤。
public int fenshu=0; public void Caiquan() { for (; ; ) { Console.WriteLine("猜拳游戏:"); Console.WriteLine("1.剪子"); Console.WriteLine("2.包袱"); Console.WriteLine("3.锤"); Console.WriteLine("4.结束"); Console.Write("请出拳(输入选择的号码即可):"); int a = int.Parse(Console.ReadLine()); Random ran = new Random(); int n = ran.Next(1, 4); if (a > 0 && a < 4) { switch (n) { case 1: Console.WriteLine("电脑出拳:剪子"); break; case 2: Console.WriteLine("电脑出拳:包袱"); break; case 3: Console.WriteLine("电脑出拳:锤"); break; } } if (a >= 1 && a <= 3) { if ((a - n) == -1 || (a - n) == 2) { fenshu++; Console.WriteLine("您赢了!请按回车继续!"); } else if ((a - n) == -2 || (a - n) == 1) { fenshu--; Console.WriteLine("您输了!请按回车继续!"); } else { Console.WriteLine("平局!请按回车继续!"); } Console.ReadLine(); } else { if (a == 4) { break; } Console.WriteLine("输入有误,请按回车继续!"); Console.ReadLine(); } } }
out传值(传址):
传值,只将这个变量的值给拿走,不返还,除非return赋值。
将a的值传入函数,无论这个值在函数中如何变化,不会影响main中的a
传址,将这个变量的值拿走运算,完成后还是得返还回来(不用return,用out)
将a的值传入函数,函数中这个值如何变化,main中的a也会跟着变化
相当于:函数中的这个值,是main种这个a的快捷方式
重新做了一下方程求根的题:
public void Fangcheng(double a, double b, double c, out double x1, out double x2) { double de = b * b - 4 * a * c; if (de > 0) { Console.WriteLine("此方程有两个不相同的实数根!"); x1 = (-b + Math.Sqrt(de)) / (a * 2); x2 = (-b - Math.Sqrt(de)) / (a * 2); } else//de==0 { Console.WriteLine("此方程有两个相同的实数根!"); x1 = (-b + Math.Sqrt(de)) / (a * 2); x2 = x1; } } static void Main(string[] args) { double x1; double x2; Console.WriteLine("求解一元二次方程ax^2+bx+c=0的根的情况及结果:"); Console.Write("请输入a="); double a = double.Parse(Console.ReadLine()); if (a == 0) { Console.WriteLine("此方程不是一元二次方程!"); } else { Console.Write("请输入b="); double b = double.Parse(Console.ReadLine()); Console.Write("请输入c="); double c = double.Parse(Console.ReadLine()); double de = b * b - 4 * a * c; if (de < 0) { Console.WriteLine("此方程没有实数根!"); } else//de>=0 { Program pp = new Program(); pp.Fangcheng(a, b, c, out x1, out x2); if (x1 == x2) { Console.WriteLine("x1=x2=" + x1); } else { Console.WriteLine("x1=" + x1); Console.WriteLine("x2=" + x2); } } } Console.ReadLine();