zoukankan      html  css  js  c++  java
  • ●自定义函数

    函数

      优势:1、代码可以重用;2、代码相对独立;3、便于分工

      编程尽量做到:高内聚,低耦合(程序的各个部分尽量相对独立,减少交叉)

      函数的定义及调用。例:

     1         //定义一个求最大值函数
     2         static int Max(int a, int b)    //a,b为形参(形式参数),函数的输入
     3         {
     4             if (a >= b)
     5             {
     6                 return a;    //如果a>=b,那么返回值为a
     7             }
     8             else
     9                 return b;    //如果a<b,那么返回值为b
    10         }
    11 
    12         static void Main(string[] arge)
    13         {
    14             //调用函数
    15             int a = 3, b = 6, c = 1, d = 4;
    16             int z = Max(Max(Max(a, b), c), d);    //a,b,c,d为实参(实际参数)
    17             Console.WriteLine(z);
    18 
    19         }
            //static int JieCheng(int n)    //定义的函数返回整数值
            static void JieCheng(int n)    // 定义的函数不返回值
            {
                int jc = 1;
                for (int i = 1; i <= n; i++)
                {
                    jc = jc * i;
                }
                //return jc;
                Console.WriteLine(jc);
            }
    
            static void Main(string[] args)
            {
                int m = 7;
                //int jg = JieCheng(m);    //返回值的函数的调用
                //Console.WriteLine("结果为:"+jc);
                JieCheng(m);    //不返回值的函数的调用
            }

    运行结果如下

    传值与传址

      1、传值。实参将数值传给形参,实参不受影响。整型、浮点型、字符型、布尔型、结构体都是用传值。

      例:

     1         static void Add(int n)
     2         {
     3             Console.WriteLine("add1," + n);
     4             n = n + 10;
     5             Console.WriteLine("add2," + n);
     6         }
     7         static void Main(string[] args)
     8         {
     9             int x = 3;
    10             Console.WriteLine("main1,"+x);
    11             Add(x);
    12             Console.WriteLine("main2,"+x);
    13         }

    显示结果如下

      2、传址。形参根据所传地址使用实参数值。数组、字符串使用的是传址。如果整型等使用传址,方法是在定义形参前加ref,不推荐整型等使用传址。

      例:

            static void Add(ref int n)    //定义形参前加ref,此方法为传址。
            {
                Console.WriteLine("add1," + n);
                n = n + 10;
                Console.WriteLine("add2," + n);
            }
            static void Main(string[] args)
            {
                int x = 3;
                Console.WriteLine("main1,"+x);
                Add(ref x);    //调用函数时,也需要在实参前加ref
                Console.WriteLine("main2,"+x);
            }

    显示结果如下

      当定义函数,需要的返回值不止一个的时候,可以用out

     1         static int Add(int a,int b,out int c,out int d)    //当需要不止一个返回值时,用out,out可以用多个
     2         {
     3             c = a + 5;
     4             d = b + 3;
     5             int sum = a + b;
     6             return sum;
     7         }
     8         static void Main(string[] args)
     9         {
    10             int i = 12, j = 11;
    11             int x = 0;    //定义一个整型接收返回值
    12             int y = 0, z = 0;    //定义两个变量,用来接收out返回值
    13             x = Add(i, j, out y,out z);    //变量前面也要加out
    14             Console.WriteLine(x + "	" + y + "	" + z);15         }

        显示结果如下

      简化数组输入(用params

     1         static int[] PaiXu(params int[] a)
     2         {
     3             for (int i = 0; i < a.Length; i++)    //按升序排序
     4             {
     5                 for (int j = 1; j < a.Length; j++)
     6                     if (a[j] < a[j - 1])
     7                     {
     8                         int c = a[j];
     9                         a[j] = a[j - 1];
    10                         a[j - 1] = c;
    11                     }
    12             }
    13             return a;    //返回数组a
    14         }
    15 
    16         static void Main(string[] args)
    17         {
    18             int[] x = new int[5];    //定义一个数组,用来接收返回数组
    19             x = PaiXu(4, 7, 1, 8, 3);    //函数定义的时候用了params,所以()内可以直接输入数值
    20             //输出
    21             for (int i = 0; i < 5; i++)
    22             {
    23                 Console.Write(x[i] + "	");
    24             }
    25 
    26         }

        显示结果如下

  • 相关阅读:
    zoj-1610线段树刷题
    poj-3268最短路
    poj-2528线段树练习
    线段树-最小逆序数hdu1394
    线段树延迟更新
    hdu-4027线段树练习
    RMQ_第一弹_Sparse Table
    字符串hash与字典树
    背包问题
    网络流
  • 原文地址:https://www.cnblogs.com/phantom-k/p/3945839.html
Copyright © 2011-2022 走看看