<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变量的作用域
//需要注意的是在程序块中定义的变量,只在该程序块中有效
//如:下图