Caiwen的博客

二. 数组、循环、字符串

2024-07-21 04:27:00
培训文件
说明

本文为 沧州市第一中学信息学竞赛夏令营(CZSC2024) 第二次课程的课程大纲

1. 数组

再谈变量——变量的作用域

  • 作用域?

  • 定义的变量只能在自身作用域中使用

  • 作用域划分:以花括号划分,一个变量的作用域为最小包含它的花括号的区域

  • 不同作用域,变量名可以重复。使用变量时,如果有多个重名的,看最近的那个

  • 局部变量、全局变量

  • 局部变量默认值为随机数据,全局变量默认值为0

    • 随机值?因人而异
    • 陋习:局部变量不经初始化(赋值、cin输入)就使用
  • 什么是数组?

  • 定义方法:在定义变量时加方括号,方括号里写数组长度,于是这个变量就成为了一个数组

  • 数据长度必须是确定的数,不能是变量(*)

  • 使用:和变量一样。需要加上中括号使用。不能直接使用。使用的时候的中括号里就可以写变量了

  • 数组角标从0开始,换句话说,数组的第一个”格子“为0号”格子“

  • 显然,中括号里面不能是个负数

  • 常见错误:数组越界

    • 如何避免?写代码的时候看清楚点。或是尽量开大一点,不要怕浪费,但也不要太大
  • 多维数组

  • 函数内最好不要定义数组。数组最好定义成全局变量。

    • 局部变量的数组的数组长度不能太大
    • 局部变量的数组默认值为随机数据

2. 循环语句

  • 船新的运算符

    • i++ 表示直接把 i 加上1,等价于 i=i+1
    • i-- 同理
    • ++i--i 也类似(*)
    • i+=n 表示直接把 i 加上n,等价于 i=i+n
    • i-=n i*=n i/=n i%=n 同理
  • while语句

    • 语法:while(条件){}
    • 如果条件满足,则执行花括号里的代码,执行完毕之后再次检查条件,如果条件仍成立,再次执行花括号代码,直到条件不成立
    • while(true){} 死循环
    • break; 跳出循环
    • continue; 不再执行后面的代码,直接跳到本次循环。不会结束整个循环
    • return 0; 直接结束程序
      • break和continue是只能在for和while这种语句中使用,而return语句可以随时使用
  • for语句

    • 语法:for(初始化语句;条件语句;循环后执行语句){}

    • 等价于

      c++
      1
      2
      3
      4
      5
      初始化语句; while(条件语句){ .... 循环后执行语句; }
    • 初始化语句中常用来定义变量

    • 条件语句同while

    • 花括号里的代码执行完毕之后就会执行一次第三个语句

    • 经典示例 for(int i=1;i<=n;i++){}

    • 三个语句都是可选的,且不能太复杂

    • 初始化语句中创建的变量作用域仅限for语句

    • 常见用法

      • for(int i=1;i<=n;i++){} 从1循环到n、循环n次

      • for(int i=1;i<=10;i++){} 从1循环到10、循环10次

      • for(int i=3;i<=13;i++){} 从3循环到13、循环11次

      • for(int i=l;i<=r;i++){} 从l循环到r、循环 r-l+1

      • for(int i=r;i>=l;i--){} 从r倒着循环到l

  • while、for都能嵌套

  • 给数组赋值

3. 题目选讲

4. 字符串

  • 字符,char 数据类型

    • 单引号,单引号里面只能有一个字符

    • ASCII 码(不用记)

      • 观察发现:数字的ASCII码是连续的,小写字母的ASCII码是连续的,大写字母的ASCII码也是连续的

      • char强制转成int可看到ASCII码

      • int也可按ASCII码强制转成char

      • char能进行运算,运算时先强制转化为int(对应ASCII码)

  • 字符串

    • string 数据类型
      • 可以当数组使用
      • size()函数
      • 可以用来判等
    • char数组
      • 可以拿string类型的字面量来赋值
      • 可以直接输入
      • 可以直接输出
      • 不能直接用来判等
        • 应该考虑开个循环来判等
      • strlen()获取长度

5. 题目选讲

6. 练习