跳转至

0718 自学笔记 — C# 基础语法练习#

日期:2026-07-18 | 类型:自习 来源:D:\study\C#1\stu0718


一、变量与运算符(题目 1–10)#

知识点#

类型 说明 示例
int 整数类型 int age = 20;
float 单精度浮点,需加 f 后缀 float price = 12.3f;
double 双精度浮点 double total = price + quantity;
输入转换 Convert.ToInt32() / double.Parse() int num = Convert.ToInt32(Console.ReadLine());
三目运算符 条件 ? 值1 : 值2 bool isRaining = bool01 == "是" ? true : false;
取模 % num % 2 判断奇偶
交换变量 加减法交换 a += b; b = a - b; a -= b;

代码#

// 1. 声明变量并输出
int age = 20;
Console.WriteLine(age);

// 2. float 相加存入 double
float price = 12.3f;
float quantity = 3.5f;
double total = price + quantity;
Console.WriteLine(total);

// 3. 判断奇数/偶数
Console.WriteLine("输入一个整数:");
int num = Convert.ToInt32(Console.ReadLine());
if (num % 2 != 0)
{
    Console.WriteLine($"{num}是奇数");
}
else
{
    Console.WriteLine($"{num}是偶数");
}

// 4. 计算圆的面积和周长
Console.WriteLine("输入一个圆半径:");
double r = Convert.ToDouble(Console.ReadLine());
double S = r * r * Math.PI;
double C = 2 * Math.PI * r;
Console.WriteLine($"该圆的面积:{S},\n该圆的周长:{C}");

// 5. 三位数的个位、十位、百位
Console.WriteLine("输入一个三位数:");
int number = Convert.ToInt32(Console.ReadLine());
int single = number % 10;
int ten = number % 100 / 10;
int hudred = number / 100;
Console.WriteLine($"个位:{single},十位:{ten},百位:{hudred}");

// 6. 输入姓名和年龄
Console.WriteLine("输入姓名");
string name = Console.ReadLine();
Console.WriteLine("输入年龄");
int ages = Convert.ToInt32(Console.ReadLine());
Console.WriteLine($"我叫{name},今年{ages}岁");

// 7. 三目运算符判断是否带伞
Console.WriteLine("是否下雨(是/否):");
string bool01 = Console.ReadLine();
bool isRaining = bool01 == "是" ? true : false;
if (isRaining == true) { Console.WriteLine("带伞"); }
else { Console.WriteLine("不带伞"); }

// 8. 不借助临时变量交换两个整数
Console.WriteLine("输入一个整数one");
int one = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("输入一个整数two");
int two = Convert.ToInt32(Console.ReadLine());
one += two;
two = one - two;
one -= two;
Console.WriteLine($"交换后 one:{one},two:{two}");

// 9. for 循环计算 1+2+...+100
int sum = 0;
for (int i = 1; i <= 100; i++)
{
    sum += i;
}
Console.WriteLine($"1+2+..+99+100={sum}");

// 10. 判断闰年
Console.WriteLine("输入一个年份:");
int year = Convert.ToInt32(Console.ReadLine());
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
    Console.WriteLine($"输入的{year}年是闰年");
}
else { Console.WriteLine($"输入的{year}年不是闰年"); }

二、if 条件判断(题目 11–20)#

知识点#

  • if-else if-else 多分支判断
  • switch-case 多分支(适用于离散值匹配)
  • int.Parse() / double.Parse() 类型转换
  • Math.Max() 可用于求最大值

代码#

// 11. 成绩判断
Console.WriteLine("输入一个学生成绩:");
int score = int.Parse(Console.ReadLine());
{
    if (score > 100 || score < 0) { Console.WriteLine("错误"); }
    else if (score >= 60) { Console.WriteLine("及格"); }
    else if (score < 60) { Console.WriteLine("不及格"); }
}

// 12. 判断正数、负数、零
Console.WriteLine("输入一个数字:");
int num = int.Parse(Console.ReadLine());
if (num > 0) { Console.WriteLine(num + "是正数"); }
else if (num < 0) { Console.WriteLine(num + "是负数"); }
else { Console.WriteLine(num + "是零"); }

// 13. switch 判断天数
Console.WriteLine("输入年份:");
int year = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("输入月份:");
int month = Convert.ToInt32(Console.ReadLine());
int day = 0;
switch (month)
{
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
        day = 31; break;
    case 4: case 6: case 9: case 11:
        day = 30; break;
    case 2:
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
            day = 29;
        else day = 28;
        break;
    default: break;
}
Console.WriteLine($"{year}年,第{month}月,有{day}天");

// 14. switch 简易计算器
Console.WriteLine("输入一个数:");
double a = double.Parse(Console.ReadLine());
Console.WriteLine("输入运算符:\"+\",\"-\",\"-\",\"/\"");
string symbol = Console.ReadLine();
Console.WriteLine("输入一个数:");
double b = double.Parse(Console.ReadLine());
double c = a + b;
switch (symbol)
{
    case "+": c = a + b; break;
    case "-": c = a - b; break;
    case "*": c = a * b; break;
    case "/":
        if (b != 0) { c = a / b; }
        else { Console.WriteLine("输入错误"); }
        break;
    default: break;
}
Console.WriteLine("结果是:" + c);

// 15. BMI 计算
Console.WriteLine("输入体重:");
double weight = double.Parse(Console.ReadLine());
Console.WriteLine("输入身高:");
double height = double.Parse(Console.ReadLine());
double BMI = weight / (height * height);
if (BMI < 18.5) { Console.WriteLine("偏瘦"); }
else if (BMI >= 18.5 && BMI <= 24.9) { Console.WriteLine("正常"); }
else if (BMI >= 25 && BMI < 30) { Console.WriteLine("偏重"); }
else if (BMI >= 30) { Console.WriteLine("肥胖"); }

// 16. 三个整数中的最大值
Console.WriteLine("输入三个整数:");
int x = int.Parse(Console.ReadLine());
int y = int.Parse(Console.ReadLine());
int z = int.Parse(Console.ReadLine());
if (x > y && x > z) { Console.WriteLine("最大值:" + x); }
else if (y > x && y > z) { Console.WriteLine("最大值:" + y); }
else { Console.WriteLine("最大值:" + z); }

// 17. 判断字符类型(ASCII 码)
Console.WriteLine("输入一个字符");
char chars = char.Parse(Console.ReadLine());
if (chars >= 48 && chars <= 57)
{
    Console.WriteLine($"{chars}是数字");
}
else if (chars >= 65 && chars <= 122)
{
    if (chars <= 90) { Console.WriteLine($"{chars}是大写字母"); }
    else { Console.WriteLine($"{chars}是小写字母"); }
}
else { Console.WriteLine($"{chars}是其他字符"); }

// 18. 判断坐标象限
Console.WriteLine("输入坐标x:");
double x0 = double.Parse(Console.ReadLine());
Console.WriteLine("输入坐标y:");
double y0 = double.Parse(Console.ReadLine());
if (x0 > 0 && y0 > 0) { Console.WriteLine($"({x0},{y0})在第一象限"); }
else if (x0 > 0 && y0 < 0) { Console.WriteLine($"({x0},{y0})在第四象限"); }
else if (x0 < 0 && y0 < 0) { Console.WriteLine($"({x0},{y0})在第三象限"); }
else if (x0 < 0 && y0 > 0) { Console.WriteLine($"({x0},{y0})在第二象限"); }
else if (x0 != 0 && y0 == 0) { Console.WriteLine($"({x0},{y0})在x轴上"); }
else if (x0 == 0 && y0 != 0) { Console.WriteLine($"({x0},{y0})在y轴上"); }
else { Console.WriteLine($"({x0},{y0})在原点上"); }

// 19. 判断三角形类型
Console.WriteLine("输入边长:");
double a0 = double.Parse(Console.ReadLine());
Console.WriteLine("输入边长:");
double b0 = double.Parse(Console.ReadLine());
Console.WriteLine("输入边长:");
double c0 = double.Parse(Console.ReadLine());
if ((a0 - b0) * (a0 - b0) < c0 * c0 && b0 != 0 && a0 != 0 && c0 != 0)
{
    if (a0 == b0 && b0 == c0) { Console.WriteLine("是等边三角形"); }
    else if (a0 == b0 || a0 == c0 || b0 == c0) { Console.WriteLine("是等腰三角形"); }
    else { Console.WriteLine("是普通三角形"); }
}

// 20. 输入星期数输出星期几
Console.WriteLine("今天星期?\n输入(1-7)整数:");
int week = int.Parse(Console.ReadLine());
string Week = "";
switch (week)
{
    case 1: Week = "星期一"; break;
    case 2: Week = "星期二"; break;
    case 3: Week = "星期三"; break;
    case 4: Week = "星期四"; break;
    case 5: Week = "星期五"; break;
    case 6: Week = "星期六"; break;
    case 7: Week = "星期日"; break;
    default: break;
}

⚠️ 第 19 题 bug:三角形判定条件 (a0 - b0) * (a0 - b0) < c0 * c0 只检查了一条边,应使用三角形任意两边之和大于第三边。


三、循环结构(题目 21–30)#

知识点#

循环类型 特点
for 已知循环次数
while 先判断后执行
do-while 先执行后判断,至少执行一次
break 跳出整个循环
嵌套循环 外层控制行,内层控制列

代码#

// 21. 打印 1-100 中所有偶数
for (int i = 1; i <= 100; i++)
{
    if (i % 2 == 0) { Console.WriteLine(i); }
}

// 22. 计算 1! + 2! + ... + 10!
int odd = 1;
int sum1 = 1;
int sum2 = 0;
while (odd <= 10)
{
    if (odd == 1) { sum1 = odd; }
    else { sum1 *= odd; }
    sum2 += sum1;
    odd++;
}
Console.WriteLine("1!+2!+...+10! = " + sum2);

// 23. do-while 模拟密码登录
Console.WriteLine("输入用户名:");
string user = Console.ReadLine();
Console.WriteLine("输入密码:");
string passwd = Console.ReadLine();
bool flag = true;
do
{
    if (passwd == "123456") { Console.WriteLine("输入正确"); flag = false; }
    else { Console.WriteLine("重新输入密码:"); passwd = Console.ReadLine(); }
}
while (flag);

// 24. 嵌套 for 打印 9x9 乘法表
for (int i = 1; i <= 9; i++)
{
    for (int j = 1; j <= i; j++)
    {
        Console.Write($"{j}×{i}={j * i}\t");
    }
    Console.WriteLine();
}

// 25. 判断质数
Console.WriteLine("输入一个正整数:");
int num = int.Parse(Console.ReadLine());
int flags = 0;
for (int i = 1; i <= num; i++)
{
    if (num % i == 0) { flags++; }
}
if (flags <= 2) { Console.WriteLine($"{num}是质数"); }
else { Console.WriteLine($"{num}是质数"); }

// 26. 打印倒直角三角形
for (int i = 0; i <= 5; i++)
{
    for (int j = 1; j <= i; j++) { Console.Write(" "); }
    for (int k = 1; k <= 5 - i; k++) { Console.Write("*"); }
    Console.WriteLine();
}

// 27. 打印水仙花数
Console.WriteLine("100-999水仙花数:");
for (int i = 100; i < 1000; i++)
{
    int single = i % 10;
    int ten = i % 100 / 10;
    int hudred = i / 100;
    if (Math.Pow(single, 3) + Math.Pow(ten, 3) + Math.Pow(hudred, 3) == i)
    { Console.WriteLine(i); }
}

// 28. break 找到第一个能被 7 和 9 同时整除的数
int flag0 = 0;
for (int i = 1; i <= 100; i++)
{
    if (i % 7 == 0 && i % 9 == 0) { flag0++; }
    if (flag0 == 1) { Console.WriteLine("第一个能被 7 和 9 同时整除的数" + i); break; }
}

// 30. 猜数字游戏
Random r = new Random();
int number = r.Next(1, 101);
Console.WriteLine(number);
Console.WriteLine("请开始猜数:");
int num00 = 5;
while (true)
{
    Console.WriteLine($"您还有{num00}次");
    if (num00 == 0) { Console.WriteLine("GAME OVER"); break; }
    Console.WriteLine("输入数字:");
    int users = int.Parse(Console.ReadLine());
    if (users == number) { Console.WriteLine("恭喜你,猜对了"); break; }
    else if (users > number) { Console.WriteLine("猜大了"); }
    else { Console.WriteLine("猜小了"); }
    num00--;
}

⚠️ 第 25 题 bug:if/else 分支输出内容相同,逻辑有误。


四、方法(函数)(题目 31–38)#

知识点#

概念 说明
方法定义 public static 返回类型 方法名(参数列表)
void 无返回值
返回值 return 语句
方法重载 同名方法,参数列表不同
访问修饰符 public / internal / private
XML 注释 /// <summary> 生成文档注释

代码#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _方法_函数_
{
    internal class Program
    {
        /// <summary>41. 无参无返回值,输出 Hello</summary>
        public static void SayHello()
        {
            Console.WriteLine("Hello, C#!");
        }

        /// <summary>32. 返回两个整数中的最大值</summary>
        public static int GetMax(int num1, int num2)
        {
            if (num1 > num2) return num1;
            else return num2;
        }

        /// <summary>33. 判断是否为偶数</summary>
        public static bool IsEven(int num)
        {
            return (num % 2 == 0);
        }

        /// <summary>34. 打印 n 行 * 正方形</summary>
        public static void PrintStar(int n)
        {
            for (int i = 1; i <= n; i++)
            {
                for (int j = 1; j <= n; j++) { Console.Write("* "); }
                Console.WriteLine();
            }
        }

        /// <summary>36. 计算 n 的阶乘</summary>
        public static long Factorial(int n)
        {
            long mul = 1;
            for (long i = 1; i <= n; i++) { mul *= i; }
            return mul;
        }

        /// <summary>36. 计算数组所有元素之和</summary>
        public static int SumArray(int[] arr)
        {
            int sum = 0;
            for (int i = 0; i < arr.Length; i++) { sum += arr[i]; }
            return sum;
        }

        /// <summary>37. 反转字符串</summary>
        public static string ReverseString(string str)
        {
            char[] chars = new char[str.Length];
            for (int i = 0; i < str.Length; i++)
            {
                chars[str.Length - i - 1] = str[i];
            }
            return new string(chars);
        }

        public static int Add(int a, int b) { return a + b; }

        /// <summary>38. 方法重载:三个整数相加</summary>
        public static int Add(int a, int b, int c) { return a + b + c; }

        static void Main(string[] args)
        {
            SayHello();
            int a = 123, b = 1234;
            Console.WriteLine("最大值:" + GetMax(a, b));
            Console.WriteLine(IsEven(45));
            PrintStar(9);
            Console.WriteLine(Factorial(10));
            int[] ar = { 1, 2, 3, 4, 5, 6 };
            Console.WriteLine(SumArray(ar));
            string strings = "123456";
            Console.WriteLine(strings);
            Console.WriteLine(Add(1, 2));
            Console.WriteLine(Add(1, 2, 3));
        }
    }
}

⚠️ ReverseString 方法当前被注释,未在 Main 中调用执行。


五、随机数(题目 39–42)#

知识点#

  • Random rnd = new Random() 创建随机数生成器
  • rnd.Next(min, max) — 生成 [min, max) 范围的随机整数
  • rnd.Next(0, 10) — 生成 0–9(含 0,不含 10)

代码#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _随机数
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();

            // 39. 生成 10 个 1-100 的随机整数
            for (int i = 0; i < 10; i++)
            {
                int r = rnd.Next(1, 100);
                Console.WriteLine(r);
            }

            // 40. 生成 4 位数字验证码
            int[] VerCode = new int[4];
            for (int i = 0; i < VerCode.Length; i++)
            {
                VerCode[i] = rnd.Next(0, 10);
            }
            Console.WriteLine("验证码:");
            foreach (int i in VerCode) { Console.Write(i); }
            Console.WriteLine();

            // 41. 模拟掷骰子 1000 次,统计各点数
            int a = 1, b = 2, c = 3, d = 4, e = 5, f = 6;
            for (int i = 0; i < 1000; i++)
            {
                int six = rnd.Next(1, 7);
                if (six == 1) { a++; }
                else if (six == 2) { b++; }
                else if (six == 3) { c++; }
                else if (six == 4) { d++; }
                else if (six == 5) { e++; }
                else if (six == 6) { f++; }
            }
            Console.WriteLine(
                $"1点出现次数:{a}\n2点出现次数:{b}\n3点出现次数:{c}\n" +
                $"4点出现次数:{d}\n5点出现次数:{e}\n6点出现次数:{f}");

            // 42. 随机抽取水果
            string[] fruit = { "苹果", "香蕉", "橘子", "葡萄" };
            for (int i = 0; i < fruit.Length; i++)
            {
                int r1 = rnd.Next(0, 4);
                (fruit[i], fruit[r1]) = (fruit[r1], fruit[i]);
            }
            Console.WriteLine(fruit[1]);
        }
    }
}

⚠️ 第 42 题 bug:通过交换数组元素再取 fruit[1] 来随机取值,逻辑有误。正确写法:fruit[rnd.Next(0, fruit.Length)]


六、一维数组(题目 43–50)#

知识点#

  • 数组声明:int[] arr = { 1, 2, 3 }new int[5]
  • 遍历:for(带索引)和 foreach(只读遍历)
  • 数组反转:交换对称位置元素
  • 元素操作:遍历修改、求和、查找

代码#

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace __一维数组
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 43. 声明数组并倒序打印
            int[] arr = { 1, 2, 3, 4, 5 };
            for (int i = 0; i < arr.Length / 2; i++)
            {
                (arr[i], arr[arr.Length - i - 1]) = (arr[arr.Length - i - 1], arr[i]);
            }
            foreach (int i in arr) { Console.Write(i); }
            Console.WriteLine();

            // 44. 随机 10 个 1-50,找出最大值和最小值
            Random rnd = new Random();
            int[] arr01 = new int[10];
            for (int i = 0; i < arr01.Length; i++)
            {
                arr01[i] = rnd.Next(1, 51);
            }
            int max = 0;
            int min = 50;
            for (int i = 0; i < arr01.Length; i++)
            {
                if (max < arr01[i]) { max = arr01[i]; }
                if (min > arr01.Length) { min = arr01[i]; }  // bug: 应为 min > arr01[i]
            }
            Console.Write("数组:");
            foreach (int i in arr01) { Console.Write(i + ","); }
            Console.WriteLine();
            Console.WriteLine($"数组最大值:{max},数组最小值{min}");

            // 45. 输入 5 个成绩,计算平均分
            int[] score = new int[5];
            int sum = 0;
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine($"输入第{i + 1}名学生成绩:");
                int a = int.Parse(Console.ReadLine());
                score[i] = a;
                if (i == 4)
                {
                    for (int j = 0; j < score.Length; j++) { sum += score[j]; }
                }
            }
            Console.Write("五名学生成绩:");
            foreach (int j in score) { Console.Write(j + ","); }
            Console.WriteLine("平均成绩:" + sum / score.Length);

            // 46. 数组元素全部乘以 2
            int[] arr00 = { 1, 2, 3, 4, 5 };
            for (int i = 0; i < arr00.Length; i++) { arr00[i] = arr00[i] * 2; }
            Console.Write("原数组arr00 2倍后:");
            foreach (int i in arr00) { Console.Write(i); }
            Console.WriteLine();

            // 47. 手动实现数组反转
            int[] Arr = { 1, 2, 3, 4, 5 };
            for (int i = 0; i < Arr.Length / 2; i++)
            {
                (Arr[i], Arr[Arr.Length - i - 1]) = (Arr[Arr.Length - i - 1], Arr[i]);
            }
            foreach (int i in Arr) { Console.Write(i + ","); }
            Console.WriteLine();

            // 48. 输入 10 个整数,查找目标值索引
            int[] Array0 = new int[10];
            for (int i = 0; i < Array0.Length; i++)
            {
                Console.Write($"输入第{i + 1}个数:");
                int a = int.Parse(Console.ReadLine());
                Array0[i] = a;
            }
            Console.WriteLine("输入查找的值:");
            int num = int.Parse(Console.ReadLine());
            Console.WriteLine(Method.Index(Array0, num));

            // 49. 统计正数、负数、零的个数
            int[] ARR = { -11, 23, -2, -3, 4, 5, 6, 78, 0 };
            int number1 = 0, number2 = 0, number3 = 0;
            for (int i = 0; i < ARR.Length; i++)
            {
                if (ARR[i] == 0) { number1++; }
                else if (ARR[i] > 0) { number2++; }
                else { number3++; }
            }
            Console.WriteLine($"正数有:{number2}个,负数有:{number3}个,零有:{number1}个");

            // 50. 两个等长数组对应元素相加
            int[] one = { 1, 2, 3, 4, 5, 6, 7, 8 };
            int[] two = { 9, 78, 56, 565, 44, 32, 1, 2 };
            int[] three = new int[one.Length];
            for (int i = 0; i < one.Length; i++) { three[i] = one[i] + two[i]; }
            foreach (int i in three) { Console.WriteLine(i); }
        }
    }
}

Method.cs(辅助类):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace __一维数组
{
    internal class Method
    {
        /// <summary>查找值在数组中的索引位置</summary>
        public static int Index(int[] arr, int a)
        {
            for (int i = 0; i <= arr.Length; i++)  // bug: 应为 i < arr.Length
            {
                if (arr[i] == a) { return i; }
            }
            return -1;
        }
    }
}

⚠️ 第 44 题 bug:求最小值时判断条件写成了 min > arr01.Length(应为 min > arr01[i])。 ⚠️ Method.Index bug:循环条件 i <= arr.Length 会导致数组越界(应为 i < arr.Length)。


综合实战题 — 智能抽奖与奖品分配系统#

状态:仅搭建了项目框架,核心逻辑未实现。

代码#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 综合实战题__智能抽奖与奖品分配系统_
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("========请选择========");
            int choose = int.Parse(Console.ReadLine());
            Console.WriteLine("====1.展示所有号码====");
            Console.WriteLine("====1.展示所有号码====");
            Console.WriteLine("====3.展示所有号码====");
            Console.WriteLine("====4.退出====");
            do
            {
                switch (choose)
                {
                    case 1: break;
                    case 2: break;
                    case 3: break;
                    case 4: break;
                    default: break;
                }
            }
            while (choose == 4);
        }
    }
}
namespace 综合实战题__智能抽奖与奖品分配系统_
{
    internal class Method
    {
        // 待补充业务逻辑
    }
}
  • 菜单选项存在重复(选项 1 和 3 都是"展示所有号码"),待修正
  • Method 类为空,需补充抽奖/奖品分配逻辑
  • do-while 退出条件 choose == 4 逻辑正确,但缺少 choose 的重新读取

总结与待改进#

编号 练习 状态 备注
1–10 变量与运算符 ✅ 完成 基础语法练习
11–20 if 条件判断 ✅ 完成 含 switch 用法
21–30 循环结构 ✅ 完成 含嵌套循环、break
31–38 方法 ✅ 完成 方法重载已实现
39–42 随机数 ✅ 完成 第 42 题逻辑有误
43–50 一维数组 ✅ 完成 第 44 题最小值 bug
综合 抽奖系统 ⏳ 未完成 仅框架,需补充逻辑

常见错误提醒#

  1. 数组越界for 循环条件应为 i < arr.Length<= 会导致越界。
  2. 变量命名不规范:如 hudred(应为 hundred)、bool01 等。
  3. 逻辑判断疏漏:如第 25 题 if/else 输出相同、第 44 题最小值判断条件错误。
  4. switch 缺少 break:第 14 题 default 分支缺少 break,可能 fall-through。
  5. 随机取值逻辑错误:第 42 题应直接使用 rnd.Next(0, length) 取索引。

相关笔记#