zoukankan      html  css  js  c++  java
  • C# 函数-传址

    传值,只将这个变量的值给拿走,不返还,除非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);
                        }
                    }
                }
           }
  • 相关阅读:
    青春三部曲(《且听风吟》,《一九七三年的弹子球》,《寻羊冒险记》)--[日]村上春树
    《假如给我三天光明》--[美]海伦·凯勒
    《老人与海》--[美]欧内斯特·米勒尔·海明威
    《曾国藩发迹史》--汪衍振
    《挪威的森林》--[日]村上春树
    《海边的卡夫卡》--[日]村上春树
    你也可以用java的swing可以做出这么炫的mp3播放器_源码下载
    你用java的swing可以做出这么炫的mp3播放器吗?
    《罗密欧与朱丽叶》--[英]莎士比亚
    《肖申克的救赎》--[美]斯蒂芬·金
  • 原文地址:https://www.cnblogs.com/yy01/p/5282210.html
Copyright © 2011-2022 走看看