C# 基础知识--Day03

Day03

循环语句

本质就是执行顺序

  1. 重复执行同一组语句,直到满足指定的条件。
  2. 循环的要素:
    – 循环体(需要重复执行的语句)
    – 循环条件(重复执行的条件)

1.for 和 while循环语句

for(初始化;循环条件;增减变量)
{
    循环体;//用for:先写明白循环体,然后了解事情要干多少次
}

执行顺序:先初始化 -> 循环条件(决定权) -> 循环体 -> 增减变量 -> 循环条件 -> 循环体 -> 增减变量

  1. 写法一:
for (int i = 0; i < 5; i++)
{
     Console.WriteLine(i);
}
  1. 写法二
int i = 0;
for(; i<5; )
{
      Console.WriteLine(i);
      i += 1;
}

注:

  1. 与上面那种写法一致(两者的区别就是作用域)
  2. 作用域:起作用的范围(从声明 开始 到 } 结束
  3. for循环作用:预定次序的循环

  1. 一张纸的厚度为0.01毫米 , 请计算 对折 30次 以后的厚度为多少米
float thickness = 0.00001f;

for (int i = 0; i < 30; i++)
{
     //thickness = thickness * 2;
     thickness *= 2;
}
Console.WriteLine("厚度为 :" + thickness);
  1. 1–100之间数字累加
int sum = 0;
for (int i = 0; i <= 100; i++)
{
    sum += i;
}
Console.WriteLine(sum);
  1. 一个球从100米高度落下 , 每次落地后,弹回原高度一半 , 计算,总共弹起?次最终落地(最小弹起高度 :0.01米) 总共经过?米
float height = 100;//当前高度
int count = 0;

float distance = height;//距离

//下次弹起高度 如果 大于 0.01米
while (height / 2 >= 0.01f)
{
     height /= 2;//高度减半count++;//计数//累加起、落距离
     distance += height * 2;
     Console.WriteLine("第{0}次弹起高度为 :{1}。", count, height);
}
     Console.WriteLine("经过{0}次最终落地", count);
     Console.WriteLine("总共经过{0:f1}米", distance);//保留一位小数

2.do–while语句

do
{
  循环体
} while(条件);//先执行一次循环体,再判断条件
  1. 创建一个随机数工具
    Random random = new Random();
  2. 产生一个随机数
    int number = random.Next(1, 101);

跳转语句

  1. 用于将控制转移给另一段代码。
  2. 包 括 :continue 语句、 break 语句、 return 语句。

continue 语句

  1. 退出本次循环,执行下次循环。
  2. 案例:计算1到100之间能被3整除的数字累加和
    在这里插入图片描述

break 语句

退出最近的循环体或switch语句。
在这里插入图片描述

方法

什么是方法

  1. 方法就是对一系列语句的命名 , 表示一个功能或者行为
    如:Start、Update、Movement.…
  2. 使用方法可以提高代码的可重用性和可维护性(代码层次结构更清晰)。

语法

在这里插入图片描述

返回值类型

. 返回值:方法定义者告诉调用者的结果。
. 如果方法有返回值,方法体中必须有 return 语,且返回的数据与返回值类型必须兼容。
· void 代表无返回值类型,方法体中 return 关键字可有可无。
· return 后面的语句将不再执行。
· 调用方法时,如果需要结果,声明相应类型的变量接收返回值数据。

static void Main()
{
    //调用方法
    **//1.方法的调用者**
    Fun1();
    Fun2();
    Console.WriteLine();//没有返回值
    string input=Console.ReadLine();//有返回值

    //实参 要与 形参一一对应
    int a = 100; //a为实参
    string b = "ok";
    Fun3(a,b);//实参(知道实际的数是多少)

}

private static void Fun1()//void是空类型
{
    Console.WriteLine("Fun1执行了");
    return;//没有返回值的方法,也可以写return关键字
}

private static int Fun2()//函数返回值若不是void(空),(这里面是int)就必须添加返回值
{
    //2.方法的定义者
    //返回值的数据必须与返回值类型兼容
    Console.WriteLine("Fun2执行了");
    return 0;//返回 数据;   退出方法
    Console.WriteLine("Fun2又执行了");//这行代码无法执行
}

//(int a,string b)中a b叫做形参
private static void Fun3(int a,string b)
{
    Console.WriteLine(a);
}
  1. 方法只有在调用的时候才会执行
  2. 传递参数
  3. 调用方法要先看参数要什么,如果这里面要是将Fun3(aaa,b);也是可行的,因为传的是参数,无所谓变量叫什么
  4. 看提示写内容

参数列表

参数

  1. 方法定义者需要调用者传递的信息。
  2. 定义方法时叫形式参数,简称形参;
  3. 调用方法是叫实际参数,简称实参;
  4. 实参与形参要一 一对应(类型、数量、顺序)

学会调用别人提供的方法

  1. 看名字猜,看描述
  2. 看参数(类型、名称、描述)
  3. 看返回值
  4. 测试
//例

//str.Insert()方法
   string str = "1 2 3";
   str = str.Insert(4, "1");
   //前面的str含义是因为有返回值,所以要接收返回值
   
//str.IndexOf()方法
   int index =str.IndexOf('1');

如何定义方法

  1. 方法 : 表示功能
  2. 返回值 : 功能的结果(方法定义者 告诉 方法调用者的 结果)
  3. 看方法有没有返回值就看提示的最左边第一个单词 , void就是没有返回值
  4. 类型 : 数据类型 int double float string
  5. void 没有返回值

定义两个整数相加的方法

//如何定义方法
static void Main()
{
/*--获取数据*/
    Console.WriteLine("请输入第1个数 :");
    int one = int.Parse(Console.ReadLine());
    Console.WriteLine("请输入第2个数 :");
    int two = int.Parse(Console.ReadLine());
/*--逻辑运算*/

    //调用方法语句
    int result=Add(one,two);//调用Add方法
/*--显示结果*/
    Console.WriteLine("结果为" + result);
}

//两个整数相加的方法 : [一个]功能
private static int Add(int one,int two)
{
     //将方法体写的尽可能小(为了复用)
     return one + two;
}

定义方法的原则

  1. 必须知道的信息,定义为参数。
  2. 需要告诉调用者的结果,定义为返回值
  3. 将方法体写的尽可能小 ( 为了提高复用性和可维持性,以便完成一个独立的功能 )

每日一练:输出年历(定义方法的例子 )

思路 :

  1. 在控制台中现实年历的方法
    年份是个参数
  2. 调用12遍现实月历
    –显示表头Console.WriteLine(“日\t一\t二\t”);
    –计算当月一日星期数,输出空白(\t)
    Console.Write(“\t”);//不换行输出
    – 计算当月天数,输入1\t 2 3 4
    – 每逢周六换行
  3. 根据年月日,计算星期数[赠送]
  4. 计算指定月份的天数
  5. 判断年的方法
    2月闺年29天
    平年28天
    年份能被4整除 但是 不能被100整除
    年份能被400整除
        /// <summary>
        /// 根据年月日,计算星期数的方法
        /// </summary>
        /// <param name="year">年份</param>
        /// <param name="month">月份</param>
        /// <param name="day">天</param>
        /// <returns>星期数</returns>
        
        //根据年月日,计算星期数的方法
        private static int GetWeekByDay(int year, int month, int day)
        {
            DateTime dt = new DateTime(year, month, day);
            return (int)dt.DayOfWeek;
        }


        //1.判断是否为闰年方法
        private static bool IsLeapYear(int year)
        {
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)

                return true;
            else
                return false;

            //方法体中的第二种写法
            //return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
        }

        //2.计算月份的天数方法(简化后的代码)
        private static int GetDaysByMonth(int year, int month)
        {
            if (month < 1 || month > 12) return 0;
            {
                switch(month)//判断月份
                {
                    case 2://判断当月份是2时的天数
                    
                    //调用IsLeapYear函数,判断二月的天数 
                        return IsLeapYear(year) ? 29 : 28;
                     
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        return 30;
                    default:
                        return 31;
                }
            }
        }

        //3.显示月历方法(只显示 ,不需要返回值)
        private static void PrintMonthCalendar(int year, int month)
        {
            //(1).显示表头
            Console.WriteLine("{0}年{1}月", year,month);
            Console.WriteLine("日\t一\t二\t三\t四\t五\t六");

            //(2).根据1日星期数,显示空白
            int week=GetWeekByDay(year,month,1);
            for(int i=0; i<week;i++) 
                Console.Write("\t");

            //(3).根据当月总天数,显示日的方法
            int days = GetDaysByMonth(year, month);
            for (int i = 1; i <= days; i++)
            {
                Console.Write(i + "\t");

            //(4).每逢周六换行
            if (GetWeekByDay(year, month, i) == 6)
                Console.WriteLine();
            }
        }
        
        //4.显示年历的方法
        private static void PrintYearCalendar(int year)
        {
            for (int i = 1; i <= 12; i++)
            {
                PrintMonthCalendar(year, i);
                Console.WriteLine();//仅仅为了换行
                Console.WriteLine();//仅仅为了换行

            }
        }
        
        //调用方法
        private static void Main()
        {
            Console.WriteLine("请输入年份:");
            int year = int.Parse(Console.ReadLine());
            PrintYearCalendar(year);
        }
        
  • 30
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值