复习
数组定义:
int[] intArray = { 0, 1, 2, 3 };
int[] intArray2 = new int[4] { 0, 1, 2, 3 };
遍历数组
foreach (int t in intArray)
{
Console.WriteLine(t);
}
for (int i = 0; i < intArray.Length; i++)
{
Console.WriteLine(intArray[i]);
}
字符串和字符串数组相互转换
string str = "a,b,c,d";
string[] strArray = str.Split(",");
string str1 = string.Join(",", strArray);
函数
· 定义:封装一段可执行的代码块
· static 修饰符 静态函数
· void表示返回值类型 如果返回值为空没有返回值 则为void类型 还有bool,int,string类型
· Main函数名(方法名)
· Main(形参)
例子
static int Max(params int[] intArray)//参数可以赋初始值 赋初始值的参数要放到后面去
{
return intArray.Max();
}
Console.WriteLine(Max(1,2,4,7));
判断是否是真素数
输入一个数,该数的正序和倒序都为素数时,则该数为真素数
static bool isPrime(int num)//定义函数,判断是否是素数
{
for (int i = 2; i < num; i++)//除了1和本身,不能被其他小于的数整除
{
if (num % i == 0)
return false;//能整除返回false
}
return true;
}
static int getReverse(string strNum)//翻转函数 字符串->数组(翻转方法)->字符串->数
{
//创建一个新的字符串
string strNum2 = "";
for (int i = strNum.Length - 1; i >= 0; i--)
{
strNum2 += strNum[i];//颠倒
}
return Convert.ToInt32(strNum2);//返回数值形式
}
int m, n;
Console.WriteLine("请输入m:");
m = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入n:");
n = Convert.ToInt32(Console.ReadLine());
string strNum3 = "";
for(int i = m; i <= n; i++)
{
if (isPrime(i) && isPrime(getReverse(Convert.ToString(i))))//判断正序和倒序
{
if (strNum3 == "")//如果是第一个字符,则直接连接
{
strNum3 += i;
}
else
strNum3 += "," + i;//不是第一个字符,则加逗号连接
}
}
Console.WriteLine(strNum3);
函数重载
Overload 同名函数,不同参数类型
static double Max(params double[] doubleArray)
{
return doubleArray.Max();
}
Max(1.3, 1.2, 5.4);
求一个数的所有因子
static string getDivisor(int n)
{
string str = "";
for(int i = 1; i <= n; i++)
{
if (n % i == 0)//能整除,则为因子
{
if (str == "")//判断是否为第一个字符,是则直接连接
str += i;
else//不是,则加逗号连接
str += "," + i;
}
}
return str;
}
Console.WriteLine("求一个数的所有因子,请输入这个数:");
int n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(getDivisor(n));//调用函数并输出
递归函数
求斐波那契数列
1,1,2,3,5,8,13....
前两数的和为当前数
static int Fib(int n)
{
if (n == 1 || n == 2)//第一,二项不变
return 1;
return Fib(n - 1) + Fib(n - 2);
}
Console.WriteLine("请输入斐波那契数列的项数n:");
int n = Convert.ToInt32(Console.ReadLine());
for(int i = 1; i <=n; i++)
{
Console.Write(Fib(i)+" ");
}
1 * 1+2 * 2+3 * 3+...+k * k<2000,求出k的最大值
static int getA(int k)
{
if (k == 1)
return k * k;
return k * k + getA(k - 1);
}
int i = 1;
while(getA(i) < 2000)
{
i++;
}
Console.WriteLine(i-1);
练习题
static int getB(int day)
{
if (day == 1)
return 1;
return (getB(day-1)+1)*2;
}
Console.WriteLine(getB(10));