C#学习之路,学习笔记 第六章 函数

这篇博客探讨了C#的学习,重点在第六章关于函数的内容。文章强调了在程序块中定义的变量仅限于该块内有效,阐述了变量作用域的概念。
摘要由CSDN通过智能技术生成

<span style="font-size:14px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//函数的命名方式:.NET推荐采用PascalCasing形式为函数名,即所有单词首字母大写

//6.4.1值传递



namespace _6函数
{
    class Program
    {
        //主函数部分//
        static void Main(string[] args)
        {
            //6.4.1值传递
            double a = Convert.ToDouble(Console.ReadLine());
            double b = Convert.ToDouble(Console.ReadLine());
            double result = Bigger(a, b);
            Console.WriteLine("最大值是:{0}", result);
            Console.ReadLine();

            //6.4.1值传递
            int[] numbers = { 1, 2, 3, 4, 5 };
            //输出原数组numbers
            Console.Write("Before:");
            foreach (int element in numbers)
                Console.Write("\t" + element);
            //调用函数
            Doubling(numbers);
            //输出变换后的数组numbers
            Console.Write("\nAfter:");
            foreach (int element in numbers)
                Console.Write("\t" + element);
            Console.ReadLine();

            //6.4.3引用型参数
            //使用引用型参数,关键字ref,可以在改变形参的时候同时改变实参
            int a1 = Convert.ToInt32(Console.ReadLine());
            int b1 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("交换前:a1 = {0},b1 = {1}",a1,b1);
            Swap(ref a1, ref b1);
            Console.WriteLine("交换后:a1 = {0},b1 = {1}",a1,b1);
            Console.ReadLine();

            //6.4.4输出型参数(out)
            Console.Write("半径:");
            double radius = Convert.ToDouble(Console.ReadLine());
            double circumference;
            double area = CalculateCircle(radius, out circumference);
            Console.WriteLine("周长:{0}", circumference);
            Console.WriteLine("面积:{0}", area);
            Console.ReadLine();

            //6.5递归调用
            int result1 = Fac(5);
            Console.WriteLine("5! = {0}", result1);
            Console.ReadLine();
            //递归调用深化练习,计算斐波那契数列的第n项
            Console.Write("您要输出多少项?");
            int n = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Fibonacci:");
            for(int i =1;i< n;++i)
            {
                //输出斐波那契数列的第i项
                Console.Write("{0}\t",Fibonacci(i));
                //每输出5项换行
                if ((i % 5) == 0)
                    Console.WriteLine();
            }
            Console.ReadLine();

            //6.6变量的作用域
            //需要注意的是在程序块中定义的变量,只在该程序块中有效
            //如:下图
        }


        //函数声明部分//
        //6.4.1值传递
        static double Bigger(double x, double y)
        {
            double maxValue = (x > y) ? x : y;
            return maxValue;
        }

        //6.4.2地址传递
        static void Doubling(int[] array)
        {
            for(int i=0; i<array.Length; ++i)
            {
                array[i] = 2 * array[i];
            }
        }

        //6.4.3引用型参数
        //使用引用型参数,关键字ref,可以在改变形参的时候同时改变实参
        static void Swap(ref int x, ref int y)
        {
            int temp = x;
            x = y;
            y = temp;
        }

        //6.4.4输出型参数(out)
        //一个函数可能产生多个有价值的计算结果,而使用return语句只能返回一个数据。
        //如果希望返回更多的数据,除了使用引用型参数ref之外,还可以使用输出型参数(out)
        //二者使用方法基本一致,但也要注意二者的区别:
        //1、ref型参数使用前必须赋值;
        //2、out型参数使用前不能赋值,即使赋了值也会被忽略。
        //所以out型参数只能用来从函数返回结果,二而不能用来向函数传递数据。
        static double CalculateCircle(double r,out double c)
        {
            c = 2 * Math.PI * r;
            double S = Math.PI * r * r;
            return S;
        }

        //6.5递归调用
        static int Fac(int n)
        {
            if (n <= 1)
                return 1;
            else
                return n * Fac(n - 1);
        }
        //递归调用深化练习,计算斐波那契数列的第n项
        static int Fibonacci(int n)
        {
            if (n == 1 || n == 2)
                return 1;
            else
                return (Fibonacci(n - 1) + Fibonacci(n - 2));
        }


    }

}
</span>
部分运行结果如下:




//6.6变量的作用域
            //需要注意的是在程序块中定义的变量,只在该程序块中有效
            //如:下图







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值