你的位置:首页 > ASP.net教程

[ASP.net教程]C# 函数


函数:能够独立完成某项功能的模块。

函数四要素:输入、输出、函数体、函数名

函数定义:
(static/public) 返回类型 函数名(参数类型 参数名,参数类型 参数名)
{
函数体
}

函数的调用:
返回变量类型 变量名 = 函数(实参值)


案例:输入一个数求阶乘(写成函数调用)
/// <summary>
/// 求阶乘
/// </summary>
public void Jie()
{
Console.Write("请输入a=");
int a = int.Parse(Console.ReadLine());
int jie = 1;
for (int i = 1; i <= a; i++)
{
jie *= i;
}
Console.Write("阶乘结果是:" + jie);
Console.ReadLine();
}
static void Main(string[] args)
{
Program hanshu = new Program();
//首先需要将这个类初始化一下
hanshu.Jie();


可写成:带传值的
/// <summary>
/// 求阶乘
/// </summary>
public void Jie(int a)
{
int jie = 1;
for (int i = 1; i <= a; i++)
{
jie *= i;
}
Console.Write("阶乘结果是:" + jie);
Console.ReadLine();
}
static void Main(string[] args)
{
Program hanshu = new Program();
//首先需要将这个类初始化一下
Console.Write("请输入a=");
int a = int.Parse(Console.ReadLine());
hanshu.Jie(a);


可以写成传值加返回值的:
/// <summary>
/// 求阶乘
/// </summary>
public int Jie(int a)
{
int jie = 1;
for (int i = 1; i <= a; i++)
{
jie *= i;
}
return jie;
}
static void Main(string[] args)
{
Program hanshu = new Program();
//首先需要将这个类初始化一下
Console.Write("请输入a=");
int a = int.Parse(Console.ReadLine());

Console.Write("阶乘结果是:" + hanshu.Jie(a));
Console.ReadLine();

可以写成不传值但是带返回值的:
/// <summary>
/// 求阶乘
/// </summary>
public int Jie()
{
Console.Write("请输入a=");
int a = int.Parse(Console.ReadLine());
int jie = 1;
for (int i = 1; i <= a; i++)
{
jie *= i;
}
return jie;
}
static void Main(string[] args)
{
Program hanshu = new Program();
//首先需要将这个类初始化一下
Console.Write("阶乘结果是:" + hanshu.Jie());
Console.ReadLine();


例:写一个返回最大值的函数。调用。
/// <summary>
/// 两个数比较大小返回大的
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public int Max(int a, int b)
{
if (a > b)
{
return a;
}
else
{
return b;
}
}
static void Main(string[] args)
{
Program hanshu = new Program();
//首先需要将这个类初始化一下
Console.WriteLine(hanshu.Max(hanshu.Max(a, b), c));
//函数不仅可以多次使用,还可以嵌套使用

细化

namespace 函数
{
class Program
{
格式1:无参无返
<summary>
累加求和,不需要参数,没有返回值
</summary>
public void LeiJia()
{
累加求和
Console.Write("请输入一个正整数:");
int a = int.Parse(Console.ReadLine());
int sum = 0;
for (int i = 1; i <= a; i++)
{
sum += i;
}
Console.WriteLine(sum);
Console.ReadLine();
}

 

格式2:无参有返
public int LeiJia1()
{
累加求和
Console.Write("请输入一个正整数:");
int a = int.Parse(Console.ReadLine());
int sum = 0;
for (int i = 1; i <= a; i++)
{
sum += i;
}

return sum;
}

 

格式3:有参有返
public int LeiJia2(int a)
{
累加求和
int sum = 0;
for (int i = 1; i <= a; i++)
{
sum += i;
}
return sum;
}


格式4:有参无返
public void LeiJia3(int a)
{
累加求和
int sum = 0;
for (int i = 1; i <= a; i++)
{
sum += i;
}
Console.WriteLine(sum);
Console.ReadLine();
}


有参数表示在函数体中不需要再去接收
有返回值表示,我在下文中还需要使用这个结果
在调用函数的时候需要定义一个相同数据类型的变量接收


函数,比较大小返回大的
public double Max(double a, double b)
{
if (a > b)
{
return a;
}
else//a<=b
{
return b;
}
}
函数可以嵌套使用,但是函数不可以嵌套写

 

public void you()//邮箱,无参无返
{
Console.Write("请输入邮箱:");
string yx = Console.ReadLine();
if(yx.Contains ("@"))
{
int a=yx.IndexOf ("@");
int b=yx.LastIndexOf ("@");
if (a == b)
{
if(!yx.StartsWith ("@"))
{
string c = yx.Substring(a);
if(c.Contains ("."))
{
string d=yx.Substring (a-1,1);
string e = yx.Substring(a, 1);
if(d!="."&&e!=".")
{
if(!yx.EndsWith ("."))
{
Console.WriteLine("您输入的邮箱格式正确");
}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}

}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console .WriteLine ("邮箱输入错误");
}
Console.ReadLine();
}

 

 

public string you2() //无参有返
{
Console.Write("请输入邮箱:");
string yx = Console.ReadLine();
if (yx.Contains("@"))
{
int a = yx.IndexOf("@");
int b = yx.LastIndexOf("@");
if (a == b)
{
if (!yx.StartsWith("@"))
{
string c = yx.Substring(a);
if (c.Contains("."))
{
string d = yx.Substring(a - 1, 1);
string e = yx.Substring(a, 1);
if (d != "." && e != ".")
{
if (!yx.EndsWith("."))
{
Console.WriteLine("您输入的邮箱格式正确");
}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}

}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}

return yx;
}

有参有返
public string you3(string yx)
{
if (yx.Contains("@"))
{
int a = yx.IndexOf("@");
int b = yx.LastIndexOf("@");
if (a == b)
{
if (!yx.StartsWith("@"))
{
string c = yx.Substring(a);
if (c.Contains("."))
{
string d = yx.Substring(a - 1, 1);
string e = yx.Substring(a, 1);
if (d != "." && e != ".")
{
if (!yx.EndsWith("."))
{
Console.WriteLine("您输入的邮箱格式正确");
}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}

}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}
return yx;
}

有参无返


public void you4(string yx)
{
if (yx.Contains("@"))
{
int a = yx.IndexOf("@");
int b = yx.LastIndexOf("@");
if (a == b)
{
if (!yx.StartsWith("@"))
{
string c = yx.Substring(a);
if (c.Contains("."))
{
string d = yx.Substring(a - 1, 1);
string e = yx.Substring(a, 1);
if (d != "." && e != ".")
{
if (!yx.EndsWith("."))
{
Console.WriteLine("您输入的邮箱格式正确");
}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}

}
else
{
Console.WriteLine("邮箱输入错误");
}
}
else
{
Console.WriteLine("邮箱输入错误");
}
Console.ReadLine();
}


加10分,给数组中的
public double[] JiaFen(double[] score)
{
for (int i = 0; i < score.Length; i++)
{
score[i] += 10;
}
return score;
}

public int renzong = 0;
public int dianzong = 0;

public string Cai()
{
Console.Write("请输入您出什么拳(剪刀、石头、布):");
string shu = Console.ReadLine();

if (shu == "剪刀" || shu == "石头" || shu == "布")
{
int ren = 0;
switch (shu)
{
case "剪刀":
ren = 1;
break;
case "石头":
ren = 2;
break;
case "布":
ren = 3;
break;
}
Random ran = new Random();
int dian = ran.Next(1, 4);
switch (dian)
{
case 1:
Console.WriteLine("电脑出剪刀");
break;
case 2:
Console.WriteLine("电脑出石头");
break;
case 3:
Console.WriteLine("电脑出布");
break;
}
int jie = ren - dian;
if (jie == 0)
{
return "本轮平局!";
}
else if (jie == 1 || jie == -2)
{
return "本轮胜出!";
}
else
{
return "本轮失败!";
}
}
else
{
return "输入有误!";
}
}
public void tizhong()
{
Console.Write("请输入性别");
string s = Console.ReadLine();
Console.Write("请输入体重");
double t = double.Parse(Console.ReadLine());
Console.Write("请输入身高");
double g = double.Parse(Console.ReadLine());
if (s == "男")
{
double n = t - g + 100;
if (n > 3 && n <= -3)
{
Console.WriteLine("您是标准体重");
}
else if (n > 3)
{
Console.WriteLine("您的体重偏胖");
}
else
{
Console.WriteLine("您的体重偏瘦");
}
}
else if (s == "女")
{
double n = t - g + 110;
if (n > 3 && n <= -3)
{
Console.WriteLine("您是标准体重");
}
else if (n > 3)
{
Console.WriteLine("您的体重偏胖");
}
else
{
Console.WriteLine("您的体重偏瘦");
}
}
else
{
Console.WriteLine("您的输入有误");
}
Console.ReadLine();
}

 


static void Main(string[] args)
{
要求:写一个函数,计算体重是否标准
函数需要三个输入值,分别为性别、体重kg、身高cm
男:身高-100=体重±3kg
女:身高-110=体重±3kg
Console.Write("请输入性别");
string s = Console.ReadLine();
Console.Write("请输入体重");
double t = double.Parse(Console.ReadLine());
Console.Write("请输入身高");
double g = double.Parse(Console.ReadLine());
if (s == "男")
{
double n = t - g + 100;
if (n > 3 && n <= -3)
{
Console.WriteLine("您是标准体重");
}
else if (n > 3)
{
Console.WriteLine("您的体重偏胖");
}
else
{
Console.WriteLine("您的体重偏瘦");
}
}
else if (s == "女")
{
double n = t - g + 110;
if (n > 3 && n <= -3)
{
Console.WriteLine("您是标准体重");
}
else if (n > 3)
{
Console.WriteLine("您的体重偏胖");
}
else
{
Console.WriteLine("您的体重偏瘦");
}
}
else
{
Console.WriteLine("您的输入有误");
}
Console.ReadLine();
Program hanshu = new Program();
hanshu.tizhong();

 

首先对于所在的类进行初始化
Program hanshu = new Program();
hanshu.LeiJia();
int sum = hanshu.LeiJia1();
在这个数值上再加10分
sum += 10;

int sum= hanshu.LeiJia2(5);

Console.WriteLine(sum);
Console.ReadLine();


hanshu.LeiJia3(5);

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 max = hanshu.Max( hanshu.Max(a,b),c);

Console.WriteLine(max);
Console.ReadLine();


输入邮箱账号,判断是否格式正确
Program han = new Program();
han.you();


string yx = han.you2( );
Console.WriteLine(yx);
Console.ReadLine();

 

Console.WriteLine("请输入邮箱地址");
string yx = han.you3(Console .ReadLine ());
Console.WriteLine(yx);
Console.ReadLine();

Console.WriteLine("请输入邮箱地址");
han.you4(Console .ReadLine ());

 

要求输入班级人数,根据人数输入每个人的分数
由于这个班都是少数民族,所以都需要加10分
加10分的过程需要用到函数
Console.Write("请输入班级人数:");
int a = int.Parse(Console.ReadLine());
double [] score =new double [a];
for (int i = 0; i < a; i++)
{
Console.Write("请输入第{0}个人的分数:",i+1);
score[i] = double.Parse(Console.ReadLine());
}
Console.WriteLine("所有学生分数输入完毕,请按回车键继续!");
Console.ReadLine();
初始化
Program hanshu = new Program();
score = hanshu.JiaFen(score);

foreach (double aa in score)
{
Console.WriteLine(aa);
}
Console.ReadLine();

 

猜拳:
人机对战
剪刀 1
石头 2
包袱 3
人输入:(剪刀、石头、布)
0 平局
1 赢了
-1 输了
-2 赢了
2 输了
Console.Write("请输入您出什么拳(剪刀、石头、布):");
string shu = Console.ReadLine();

if (shu == "剪刀" || shu == "石头" || shu == "布")
{
int ren = 0;
switch (shu)
{
case "剪刀":
ren = 1;
break;
case "石头":
ren = 2;
break;
case "布":
ren = 3;
break;
}
Random ran = new Random();
int dian = ran.Next(1, 4);
switch (dian)
{
case 1:
Console.WriteLine("电脑出剪刀");
break;
case 2:
Console.WriteLine("电脑出石头");
break;
case 3:
Console.WriteLine("电脑出布");
break;
}
int jie = ren - dian;
if (jie == 0)
{
Console.WriteLine("本轮平局!");
}
else if (jie == 1 || jie == -2)
{
Console.WriteLine("本轮胜出!");
}
else
{
Console.WriteLine("本轮失败!");
}
}
else
{
Console.WriteLine("输入有误!");
}

Console.ReadLine();

 


输入过程中若出错
for (int i = 1; i > 0; i++)
{
Console.Write("请输入是或者不是!");
string ss = Console.ReadLine();
if (ss == "是" || ss == "不是")
{
break;
}
else
{
Console.WriteLine("输入有误!请重新输入!");
}
}
输入年月日,查看时间日期格式是否正确

for (int i = 1; i > 0; i++)
{
Console.Write("请输入年份:");
int year = int.Parse(Console.ReadLine());
if (year >= 0 && year <= 9999)
{
for (int a = 1; a > 0; a++)
{
Console.Write("请输入月份:");
int month = int.Parse(Console.ReadLine());
if (month >= 1 && month <= 12)
{
for (int b = 1; b > 0; b++)
{
Console.Write("请输入日期:");
int day = int.Parse(Console.ReadLine());
if (day >= 1 && day <= 31)
{
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
Console.WriteLine("您输入的日期格式正确,您输入的日期是:{0}年{1}月{2}日", year, month, day);
break;
}
else
{
if (month == 4 || month == 6 || month == 9 || month == 11)
{
if (day == 31)
{
Console.WriteLine("您输入的日期错误,请重新输入!");
continue;
}
else
{
Console.WriteLine("您输入的日期格式正确,您输入的日期是:{0}年{1}月{2}日", year, month, day);
break;
}
}
else
{
if (day <= 28)
{
Console.WriteLine("您输入的日期格式正确,您输入的日期是:{0}年{1}月{2}日", year, month, day);
break;
}
else
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
if (day == 29)
{
Console.WriteLine("您输入的日期格式正确,您输入的日期是:{0}年{1}月{2}日", year, month, day);
break;
}
else
{
Console.WriteLine("您输入的日期错误,请重新输入!");
continue;
}
}
else
{
Console.WriteLine("您输入的日期错误,请重新输入!");
continue;
}
}
}
}
}
else
{
Console.WriteLine("您输入的日期错误,请重新输入!");
continue;
}
}
a = -10;
}
else
{
Console.WriteLine("您输入的月份错误,请重新输入!");
continue;
}
}
}
else
{
Console.WriteLine("您输入的年份错误,请重新输入!");
continue;
}
i = -10;
}Console.ReadLine();

 

for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (j == 3)
{
break;//break跳出最近的循环
}
Console.Write("■");

}
Console.WriteLine();
}


Console.ReadLine();


}
}
}