您的位置:首页 > 编程语言 > C#

C# 函数-传址

2016-03-16 09:40 531 查看
传值,只将这个变量的值给拿走,不返还,除非return赋值。

将a的值传入函数,无论这个值在函数中如何变化,不会影响main中的a

out传址,将这个变量的值拿走运算,完成后好是得返还回来(不用return)

将a的值传入函数,函数中这个值如何变化,main中的a也会跟着变化

相当于:函数中的这个值,是main中这个a的快捷方式

练习

一元二次方程求解

方法一

/// <summary>
/// 一元二次方程求解。传址
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="c"></param>
/// <param name="x1"></param>
/// <param name="x2"></param>
public void fangcheng(double a, double b, double c,out double x1,out double x2)
{
x1=(-b+Math.Sqrt(b*b-4*a*c))/(2*a);
x2=(-b+Math.Sqrt(b*b-4*a*c))/(2*a);
}


static void Main(string[] args)
{
//一元二次方程
Console.WriteLine("求方程ax*x+bx+c=0的解");
Console.Write("a=");
double a = double.Parse(Console.ReadLine());
Console.Write("b=");
double b = double.Parse(Console.ReadLine());
Console.Write("c=");
double c = double.Parse(Console.ReadLine());
double jie = b * b - 4 * a * c;
if (a == 0)
{
Console.WriteLine("不是一元二次方程");
}
else
{
if (jie >= 0)
{
double x1;
double x2;
Program fangcheng = new Program();
fangcheng.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);
}
}
else
{
Console.WriteLine("该方程无解");
}
}
}


方法二

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);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: