//九九乘法表
//外层循环控制的是行数
for (int i = 1; i < 10; i++)
{
//内层循环控制的是内容
for (int j = 1; j <= i; j++)
{
Console.Write(“{0}x{1}={2}\t”, j, i, i * j);
}
//换行
Console.WriteLine();
}
Console.WriteLine("----------------------------------");
//九九乘法表
//外层循环控制的是行数
string ret = string.Empty;
for (int i = 1; i < 10; i++)
{
//内层循环控制的是内容
for (int j = 1; j <= i; j++)
{
//字符串的格式化
ret += string.Format("{0}x{1}={2}\t", j, i, i * j);
//Console.Write("{0}x{1}={2}\t", j, i, i * j);
}
if (i!=9)
{
//换行
ret += "\n";
}
}
Console.WriteLine(ret);
}
}
}
namespace 字母图形
{
class Program
{
/*
* A
* ABA
* ABCBA
* ABCDCBA
* ABCDEDCBA
* 4-(‘E’-‘D’) 可以得到D的值
* 4-(‘E’-‘C’) 可以得到C的值
*
* 上面的图形可以表示为
* 0
* 010
* 01210
* 0123210
* 012343210
* 数量 行号
* 0 1 0
* 01 2 1
* 012 3 2
* 0123 4 3
* 01234 5 4
*
*/
static void Main(string[] args)
{
int lines = 5;
//外层循环控制的是行数
for (int i = 0; i < lines; i++)
{
for (int j = 0; j < 2*i+1; j++)
{
//这是第一种方式
//if (j<=i)
//{
// Console.Write((char)(‘A’+j));
//}
//else //j>i
//{
// //’A’+i 得到的是对称轴的对应的字母
// //对称轴的对应的字母 -距离 得到对称轴右侧的字母的值
// //j-i可以得到对称轴右侧的字母到对称轴对应字母的距离
// Console.Write((char)((‘A’ + i)-(j-i)));
//}
//第二种方式
Console.Write(j<=i? (char)('A' + j): (char)(('A' + i) - (j - i)));
}
Console.WriteLine();
}
}
}
}
namespace 猜数字游戏
{
class Program
{
static void Main(string[] args)
{
Random random = new Random();
//让游戏处于一个死循环状态 让用户多挑战几次
while (true)
{
int randomNumber = random.Next(1, 101);
//记录 猜了多少次了
int count = 0;
while (count < 5)
{
count++;
Console.WriteLine("请输入数字(1-100)");
int selectNumber = int.Parse(Console.ReadLine());
if (randomNumber == selectNumber)
{
Console.WriteLine("恭喜您,猜对了");
switch (count)
{
case 1:
Console.WriteLine("神一样的任务");
break;
case 2:
case 3:
Console.WriteLine("一般人");
break;
case 4:
case 5:
Console.WriteLine("险过,努力吧骚年!");
break;
default:
break;
}
break;
}
else if (randomNumber > selectNumber)
{
Console.WriteLine("猜小了");
}
else
{
Console.WriteLine("猜大了");
}
if (count >= 5)
{
Console.WriteLine("对不起,您挑战失败,正确的数字是:{0}.不服再战", randomNumber);
}
}
Console.WriteLine("退出(Y/y),继续请按任意键...");
string exit = Console.ReadLine();
if (exit == "Y" || exit=="y")
{
Environment.Exit(0);
}
}
什么是方法(函数)
方法是一个可以实现具体功能的有名字的代码块。
函数的作用
作用就是对代码进行重用
有重复代码的地方我们就可以使用方法。
函数的三要素
返回值 方法名 参数
怎么理解参数么?
参数就是使用外接的数据的入口
返回值就是要把该函数计算的结果告诉外界的通道。可以理解为工作汇报
方法相当于厨房 参数中就是原材料 返回值就是一盘精美的菜。
函数的声明
[访问修饰符] [static]返回值 方法名(参数)
{
语句块;
return;
}
包含代码块的花括号后面也没有分号‘;’
命名规则:方法的开头要大写,参数开头要小写,参数名、变量名要有意义
对于静态的方法有两种调用的方式
如果在同一个类中,直接写名字调用就好了,
如果不在同一个类中 类名.方法名
return 可以立即退出方法。
在定义方法的时候,括号里面的参数是形参,在方法调用的时候,括号里面传入的参数是实参。形参就是规定实参的模板,形参规定了实参的类型和个数。
方法的功能要一定要单一。不必要的额代码不要写。不要出现提示用户输入的字眼。
函数的调用格式
1.无参无返回值的
void func(void) {
xxxxx;
return;//可以省略的
}
调用格式:
func();
2.有参数无返回值的
void func2(int n) {
xxx;
return;//可以省略
}
调用格式:
func2(2);
3.有参有返回值
int add(int a, int b) {
return a+b; // return 后面的类型 要和 add前面的返回值类型一致
}
调用格式:
int ret = add(2,3);
值传递和引用传递
1.值传递
2.引用传递
3.ref和out的区别
参数的传递
•必选参数
必选参数其实就是在方法声明定义形式参数的时候,只是声明了参数没有赋值。对于必选参数在方法调用的时候,传入实参的个数必须和形式参数的数量一致。
namespace 方法
{
class Program
{
//静态方法 用static 修饰的方法叫做静态方法
//方法又叫做 函数
//方法的是三要素:返回值类型 方法名 参数
//返回值类型包含:void 值类型 引用类型
//方法名:第一个见名知意 简明知义
//方法名的规范:大驼峰命名法
//C#是对大小写比较敏感的语言
//Main 方法是系统已经定义好了 一般不对Main方法做任何的修改
//Main方法的返回值类型只能是void 和int
//Main方法的参数可有但是必须是string[] 类型的
//方法的名字在同一个类中是不能重复的
static void Main(string[] args)
{
//简写
//PrintGraphic();
//完整的写法
//PrintGraphic();
Task01();
//调用 不调用没有用
Task02();
//在Main方法里面进行调用的时候传入的参数 是实际参数 简称实参
//int numbers = 10;
//PrintGraphic(numbers);
GetSum(12,13);
//int num1 = int.Parse(Console.ReadLine());
//Console.WriteLine(num1);
int ret = GetSum(12, 12, 12);
Console.WriteLine(ret);
int max = Max(12,56,2);
Console.WriteLine(max);
}
//先对方法定义
//然后在Main方法中调用
//方法后面的括号是一个参数列表 里面的变量是形式参数 简称形参 类似一个傀儡
static void PrintGraphic(int lines)
{
for (int i = 0; i < lines; i++)
{
for (int j = 0; j <=i; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
}
//第一题
static void Task01()
{
int[] arr = { 3, 5, 2, 9, 1, 8, 7, 4, 6, 0 };
//记录最大值
int maxValue = arr[0];
int maxValueIndex = 0;
for (int i = 1; i < arr.Length; i++)
{
if (maxValue< arr[i])
{
maxValue = arr[i];
maxValueIndex = i;
}
}
Console.WriteLine("最大值是:{0},最大值的索引:{1}",maxValue,maxValueIndex);
}
static void Task02()
{
//字符
char ch = 'A';
//字符数组
char[] chArr = { 'A','B','C', 'D', 'E', 'F' ,'G', 'H', 'I', 'J' };
//字符串
string str = "abc";
//字符串数组
string[] strArr = { "sdfgs", "sdfgsd", "sdfsd", "sdfgsd" };
for (int i = 0; i < chArr.Length; i++)
{
Console.Write(chArr[i] +" ");
}
Console.WriteLine();
}
//写一个方法 计算两个数的和 并 打印两数之和
//以下的两个方法构成了方法的重载
//重载的条件有以下几个条件:
// 方法名必须一致
//参数列表不同
//参数列表的情况有以下几种情况
//参数的数量不同
//参数的类型不同
//参数的顺序不同
//在方法中 参数名称没有什么实际的作用 只是用来区别不同的参数而已
//参数列中的类型决定了实际参数的类型
static void GetSum(int num1,int num2)
{
int sum = num1 + num2;
Console.WriteLine(sum);
}
static int GetSum(int num1,int num2,int num3)
{
int sum = num1 + num2 + num3;
return sum;
}
//写一个方法传递3个整数 ,求三个数中的最大值 并返回
static int Max(int num1, int num2, int num3)
{
return (num1 > num2 ? num1 : num2) > num3 ? (num1 > num2 ? num1 : num2) : num3;
}
//以下的方法构成重载 参数列表的顺序不同
static void Test(string str,int count)
{
Console.WriteLine(str+"这是你第"+count+"次迟到了");
}
static void Test(int count,string str)
{
Console.WriteLine(str + "这是你第" + count + "次迟到了");
}
}
}