C# 函数-传址
2016-03-16 09:40
531 查看
传值,只将这个变量的值给拿走,不返还,除非return赋值。
将a的值传入函数,无论这个值在函数中如何变化,不会影响main中的a
out传址,将这个变量的值拿走运算,完成后好是得返还回来(不用return)
将a的值传入函数,函数中这个值如何变化,main中的a也会跟着变化
相当于:函数中的这个值,是main中这个a的快捷方式
练习
一元二次方程求解
方法一
方法二
将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); } } } }
相关文章推荐
- C# Lock关键字
- C#-using用法详解
- JNI 调用,C++ invoke C# dll return to java(见git代码)
- halcon与C#混合编程(一)打开一张图片
- C#中??操作符和?操作符
- C#高级编程 (第六版) 学习 第四章:继承
- C#开源项目大全
- C#机房重构——DataGridView控件
- C# 泛型约束
- C#机房重构——万事开头难(二)
- C#中数组、ArrayList和List三者的区别
- 4000 代码行统计工具(C#)
- C# 托管资源和非托管资源
- C#版三层登录
- C#中两个窗口怎么传递参数?或者怎么使用另一个窗口的控件呢?
- c# get{}set{}
- C#基础之反射
- C#知识点-反射
- C#基础
- 简单工厂模式(设计模式02)