初赛知识点合集

信竞赛事

IOI

汉名「国际信息学奥林匹克竞赛」。

首届 IOI 于 1989 年 5 月在保加利亚布拉维茨举办,第 12 届即 IOI 2000 在中国北京举行。

NOI

1984 年,邓希贤同志注4 提出「计算机的普及要从娃娃抓起」。当年 CCF 举办「全国青少年程序设计竞赛」,1989 年改名「全国青少年信息学奥林匹克竞赛」。

NOIP

「全国青少年信息学奥林匹克联赛」,自 1995 年至今。

CSP-J/S

「CCF非专业级软件能力认证」,创办于 2019 年,分为入门级和提高级。

计算机历史与组成

历史

  1. 第一台通用计算机: ENIAC(电子数值积分计算机,美国,1946 年)
  2. 第一位程序猿: Ada Lovelace(阿达·洛芙莱斯,英国)
  3. 计算机科学之父: Alan Turing(艾伦·图灵,英国)
  4. 计算机之父: John von Neumann(约翰·冯·诺依曼,美籍匈牙利)
  5. 计算机领域最高奖项: 图灵奖。姚期智(原美籍华人,现为中国国籍)获 2000 年图灵奖。
  6. 计算机发展
分代 时间 组成
第一代 1946 年 电子管
第二代 1959 年 晶体管
第三代 1965 年 集成电路
第四代 1971 年 大规模、超大规模集成电路

计算机系统

  1. 计算机系统: 硬件系统 + 软件系统
  2. 冯·诺依曼结构(普林斯顿结构): 采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备)。
    百度百科《冯·诺依曼结构示意图》

计算机硬件

  1. 中央处理单元(CPU): 运算器、控制器和少量存储器(寄存器、缓存)组成,是负责计算机运算、控制的核心部件。
  2. 随机存取内存(RAM): 可以随机读写,断电易失。
  3. 只读内存(ROM): 只能读取,不能写入,断电不丢失。

计算机软件

计算机软件,程序、资源文件、配置等的集合,分为操作系统、应用软件等种类。

操作系统: Microsoft Windows、UNIX(-like)、Linux、DOS 等。

计算机使用

文件系统

文件系统是计算机资源组织的方法。
常见的文件系统有 FAT*、NTFS、ext* 等。

  1. 文件(File): 资源管理的基本单位。
  2. 路径(Path): 指示文件的标识。
  3. 目录(Directory): 一种特殊的文件,记录了其他文件(包括目录)的索引。

Linux 使用

「Linux 系统」指使用 Linux Kernel 作为内核的一类操作系统。
Linux Kernel 由 Linus Benedict Torvalds(林纳斯·本纳第克特·托瓦兹,芬兰)由 1991 年首次发布,是一个「开源」软件。

文件系统

Linux 的文件系统将计算机的各种资源进行统一管理。
Linux 的文件系统呈树形结构,各个文件组成结点。
树根对应的文件(目录)叫做「根目录」,使用 / 表示。
一个文件的绝对路径为根节点到它所经过所有节点名称拼接(使用 / 间隔)。
(由此可见,一个绝对路径对应的文件是唯一的)

外壳程序

外壳程序(Shell)是 Linux 用户和系统内核之间的主要交互接口,ShellScript 是用户操作 shell 的语言。
SS 分为执行语句与流程控制语句,其中,执行语句符合以下格式(EBNF描述):

object = path | function
argument_list = [argument_list], argument
input_redirect_operator = ["0"], "<"
output_redirect_operator = ["1"|"2"], (">"|">>")
output_redirect = output_redirect_operator, path
input_redirect = input_redirect_operator, path
redirect = [output_redirect], input_redirect | output_redirect, [input_redirect]
here_document = "<<", ["-"], ("'", terminal_symbol, "'" | terminal_symbol)
here_document_redirect = [here_document], output_redirect | [output_redirect], here_document
command = object, [argument_list]
command_line = command, [[redirect], ["|", command_line] | here_document_redirect, ["|", command_line], context, terminal_symbol]

即类似以下格式:

prog a1 a2 ... > output < input | other_prog ...

流程控制语句

不考

常用指令

修改自 The Open Group, “Commands & Utilities/Introduction”, The Single UNIX® Specification, Version 2, Issue 5, 1997

cat

用途: 连接并输出文件。

使用: cat [选项]... [文件]...

选项:

-n 显示行号
-E 在换行处 \n 输出一个 &\n
-T 在制表处 \t 输出一个 ^I
-v 在控制字符(除了 \n )处输出其逸出序列
--version 显示版本
--help 显示帮助

用例:

a 文件

#include <stdio.h>
int main (void) {
    puts("Hello world!");

b 文件

    return 0;
}

运行
cat a b
输出

#include <stdio.h>
int main (void) {
    puts("Hello world!");    return 0;
}

cd

用途: 更改工作目录。

使用: cd [选项]... [路径]

选项:

-L 解链接

附录

ASCII 码表

控制字符

十六进制 十进制
逸出序列
转义表示 缩写 意义 注3
00 000 ^@ \0 NUL 空字符
01 001 ^A SOH 标题开始
02 002 ^B STX 报文开始
03 003 ^C ETX 报文结束
04 004 ^D EOT 传输结束
05 005 ^E ENQ 请求
06 006 ^F ACK 确认回复
07 007 ^G \a BEL 振铃
08 008 ^H \b BS 退格
09 009 ^I \v HT 水平制表
0A 010 ^J \n LF 换行
0B 011 ^K \t VT 纵向制表
0C 012 ^L \f FF 换页
0D 013 ^M \r CR 回车
0E 014 ^N SO 取消变换
0F 015 ^O SI 启用变换
10 016 ^P DLE 跳出设备通讯
11 017 ^Q DC1 设备控制 1
12 018 ^R DC2 设备控制 2
13 019 ^S DC3 设备控制 3
14 020 ^T DC4 设备控制 4
15 021 ^U NAK 确认失败回复
16 022 ^V SYN 同步空闲
17 023 ^W ETB 块传输结束
18 024 ^X CAN 取消
19 025 ^Y EM 连接介质中断
1A 026 ^Z SUB 替换
1B 027 ^[ \e 注2 ESC 逸出
1C 028 ^\ FS 文件分割
1D 029 ^] GS 组分割
1E 030 ^^ RS 记录分割
1F 031 ^_ US 用户分割
7F 127 ^? DEL 删除

可打印字符

十六进制 十进制 字符 十六进制 十进制 字符
20 032 50 080 P
21 033 ! 51 081 Q
22 034 " 52 082 R
23 035 # 53 083 S
24 036 $ 54 084 T
25 037 % 55 085 U
26 038 & 56 086 V
27 039 ' 57 087 W
28 040 ( 58 088 X
29 041 ) 59 089 Y
2A 042 * 5A 090 Z
2B 043 + 5B 091 [
2C 044 , 5C 092 \
2D 045 - 5D 093 ]
2E 046 . 5E 094 ^
2F 047 / 5F 095 _
30 048 0 60 096 `
31 049 1 61 097 a
32 050 2 62 098 b
33 051 3 63 099 c
34 052 4 64 100 d
35 053 5 65 101 e
36 054 6 66 102 f
37 055 7 67 103 g
38 056 8 68 104 h
39 057 9 69 105 i
3A 058 : 6A 106 j
3B 059 ; 6B 107 k
3C 060 < 6C 108 l
3D 061 = 6D 109 m
3E 062 > 6E 110 n
3F 063 ? 6F 111 o
40 064 @ 70 112 p
41 065 A 71 113 q
42 066 B 72 114 r
43 067 C 73 115 s
44 068 D 74 116 t
45 069 E 75 117 u
46 070 F 76 118 v
47 071 G 77 119 w
48 072 H 78 120 x
49 073 I 79 121 y
4A 074 J 7A 122 z
4B 075 K 7B 123 {
4C 076 L 7C 124 |
4D 077 M 7D 125 }
4E 078 N 7E 126 ~
4F 079 O

运算符(-std=c++14)

优先级 运算符 描述 结合性
\(1\) a::b 作用域解析 从左到右
\(2\) a++ a-- 后自增、后自减 从左到右
\(2\) type(a) type{a} 函数式强转类型 从左到右
\(2\) a(...) 函数调用 从左到右
\(2\) a[b] 下标访问 从左到右
\(2\) a.b a->b 成员访问 从左到右
\(3\) ++a --a 前自增、前自减 从右到左
\(3\) +a -a 正号、负号 从右到左
\(3\) !a ~a 逻辑取反、位取反 从右到左
\(3\) (b)a C 风格强转类型 从右到左
\(3\) *a &a 解引用、取地址 从右到左
\(3\) sizeof 取类型/对象大小 从右到左
\(3\) new new[] 动态内存分配 从右到左
\(3\) delete delete[] 动态内存释放 从右到左
\(4\) a.*b a->*b 相对成员访问 从左到右
\(5\) a*b a/b a%b 乘法、除法、取模 从左到右
\(6\) a+b a-b 加法、减法 从左到右
\(7\) a<<b a>>b 按位左移、按位右移 从左到右
\(8\) a<b a<=b a>b a>=b 大小比较运算符 从左到右
\(9\) a==b a!=b 相等比较运算符 从左到右
\(10\) a&b 按位与 从左到右
\(11\) a^b 按位异或 从左到右
\(12\) a|b 按位或 从左到右
\(13\) a&&b 逻辑与 从左到右
\(14\) a||b 逻辑或 从左到右
\(15\) a?b:c 三元条件 注1 从右到左
\(15\) throw 抛出运算符 从右到左
\(15\) a=b 直接赋值 从右到左
\(15\) a*=b a/=b a%=b 乘法、除法、取模复合赋值 从右到左
\(15\) a+=b a-=b 加法、减法复合赋值 从右到左
\(15\) a<<=b a>>=b 按位左移、右移复合赋值 从右到左
\(15\) a&=b a^=b a|=b 按位与、异或、或复合赋值 从右到左
\(16\) a,b 逗号 从左到右

修改自 cppreference/operator_precedence

数据单位

汉文 英文 进率/Byte 简称
bit \(2^{-3}\) b
字节 Byte \(2^{0}\) B
千字节 Kilobyte \(2^{10}\) KB
兆字节 Megabyte \(2^{20}\) MB
吉字节 Gigabyte \(2^{30}\) GB
太字节 Terabyte \(2^{40}\) TB
拍字节 Petabyte \(2^{50}\) PB
艾字节 Exabyte \(2^{60}\) EB
泽字节 Zetabyte \(2^{70}\) ZB
尧字节 Yottabyte \(2^{80}\) YB
诺字节 Brontobyte \(2^{90}\) BB
刀字节 NonaByte \(2^{100}\) NB
馈字节 DoggaByte \(2^{110}\) DB
馈字节 Corydonbyte \(2^{120}\) CB
约字节 Xerobyte \(2^{130}\) XB

注1: b处被处理为(b),即认为?:是一个括号。

注2: \e 并非广泛支持,但 GCC 支持。

注3: 很多字符含义作者解释不清,也不考,请不要线下打扰作者。

注4: 吐槽博客园,连总设计师的名字都不过审。

注5: EBNF(扩展巴克斯—瑙尔范式)真的有ザコ看不懂这个嘛?

posted @ 2025-08-28 16:08  DiannaoJun  阅读(22)  评论(0)    收藏  举报