zl程序教程

您现在的位置是:首页 >  其他

当前栏目

关于我初赛的一些要背的东西 & 错题集

amp 关于 一些 东西 初赛 错题
2023-09-27 14:28:26 时间

前言

菜鸡作者的话

准备要初赛了,一想起我那菜的说不出话的初赛,我就慌得一批。
于是,我就把一些觉得不会或者因为知识点遗漏错了的东西收集起来,放在一起。
当然,有一些东西参考了一些其他人的文章。

会一直更新的。
awa

一些同学的初赛整理

CWH小葛葛的初赛复习知识点

LTH大帅比的初赛提纲¿

正文

计算机病毒

计算器病毒传染的必要条件

  1. 系统运行(这样它才能“动”)
  2. 读写硬盘(这样才可以将自身复制到其他程序)(这个好像是最必要的)

计算机病毒特点

传播性、潜伏性、破坏性与隐蔽性

一些电脑里面的东西

光驱

电脑用来读写光碟内容的机器(光盘驱动器?)

调制解调器(调节器)

够对数字信号和模拟信号进行相互转换的设备

网关

一个在传输层上以实现网络互连的东西。
广域网和局域网都可以用,大多数运行在OSI 7层协议的顶层–应用层。

Web1.0和Web2.0的区别

Web1.0

主要是靠点击流量来获利,论坛不算是Web2.0的特征
例子:谷歌,腾讯,新浪,网易,搜狐,MSM

Web2.0

这个东西里面许多东西是由用户贡献出来的,信息是由每个人贡献出来的,每个人都是投稿者。
(虽然贡献的许多内容只是由小部分的人贡献的)
博客,社区这些东西就是十分鲜明的特征。
例子:Flickr,维基,众多博客(就比如csdn)。

面向对象程序设计

继承性,封装性,多态性
面向对象的编程语言的例子:C++,JAVA,C#
Cpascal结构化的编程语言)
雏形:Simula 语言
经典:SmallTalk 语言,现在还是面向对象语言的基础。

面向过程程序才是“自顶向下,逐步求精”,而面向对象程序设计并不是,而是基于问题对象的自底向上的设计方法。
(就是对象是下到上,过程是上到下)

计算机指令系统

计算机直接识别和执行的命令就是指令。
一条指令通常由操作码地址码两部分组成。
操作码:这个操作的性质和功能
地址码:被操作的东西在哪里

十进制转二进制小数部分

( 0.25 ) 10 (0.25)_{10} (0.25)10
0.25 × 2 = 0.5 0.25\times 2=0.5 0.25×2=0.5(整数部分为 0 0 0
然后不要整数部分,变成 0.5 0.5 0.5
0.5 × 2 = 1.0 0.5\times 2=1.0 0.5×2=1.0(整数部分为 1 1 1
然后不要整数部分,变成 0.0 0.0 0.0
结束,顺着数,就是 ( 0.01 ) 2 (0.01)_{2} (0.01)2

原码反码补码

(原码反码的+为string::operator+)(就是直接在字符串前面加一个 0 或者 1 )
原码:

  1. x>0:0+x
  2. x<0:1+x

反码:

  1. x>0:x原
  2. x<0:1+(~x)

(补码的+为int::operator+)(就是直接普通加减乘除的加)
补码:

  1. x>0:x原
  2. x<0:x反+1

8位二进制原码、反码、补码

真值原码(B)反码(B)补码(B)
+1270 111 11110 111 11110 111 1111
+380 010 01100 010 01100 010 0110
+00 000 00000 000 00000 000 0000
-01 000 00001 111 11110 000 0000
-381 010 01101 101 10011 101 1010
-1271 111 11111 000 00001 000 0001
-128无法表示无法表示1 000 0000

对于最后一个的解释:
前两个装不下,因为有九位,第三个可以装下是因为当数是 +/-0 的时候,补码都是 0 000 0000,那就可以用 1 000 0000 来表示。
(所以补码很nb,但是它区分不了+0和-0)
(但我不太知道把 0 分成 +0 和 -0 是干嘛用的)

BCD码(8421码)

用二进制代码表示的十进制数,就是把每一位拆开,每一个数都变成二进制,然后再拼起来。

浮点数

这个完全很懵,看了很久才勉强知道一点。
我看的是这个博客的第八点吧:
点我查看 点我查看 点我查看
至于怎么转换出浮点数,我说不清楚,理解就行了,就不写了,直接看这位大佬的博客吧。
我就放一点我觉得要背的东西吧:

一个规格化的32位浮点数x的真值为:
x=(-1)s×(1.M)×2^(E-127)
一个规格化的64位浮点数x的真值为:
x=(-1)s×(1.M)×2^(E-1023)

(可以看出,当把 64 位非0浮点数强制转化成 32 为浮点数后,正负性一定不会变)

然后有一些特殊的数,这个是 32 位浮点数的表示方法

零值:E=0 & M=0 若sgn>0,+0 若sgn<0,-0 规定:+0=-0
无穷值:E=11111111(2) & M=0 若sgn>0,+∞ 若sgn<0,-∞
NAN:E=0 & M≠0

( sgn 就是看函数的值是正的还是负的)

两个网络协议的配对关系

OSITCP/IP
应用层应用层
表示层
会话层
传输层传输层
网络层网络层
数据链路层网络接口
物理层
除此之外还有 Netbeui 和 IP 这两个协议。

网络IP地址

为Internet中的每一台主机分配一个在全球范围唯一地址

四个数字,用 “.” 分开,每个数字范围是 0 ∼ 255 0\sim 255 0255

A类:0.0.0.0 - 127.255.255.255
(标准子网掩码:255.0.0.0 或 /8)
B类:128.0.0.0 - 191.255.255.255
(标准子网掩码:255.255.0.0 或 /16)
C类:192.0.0.0 - 223.255.255.255
(标准子网掩码:255.255.255.0 或 /24)

(/8 这个就是说换成二进制之后左边有 8 个 1,其它也是这个道理)

关于地址信息还有其它定位的划分方式:

  1. A类网络以0开头,网络号码是7位,主机号码是24位(大型网络)
  2. B类网络以10开头,网络号码是14位,主机号码是16位(中型网络)
  3. C类网络以110开头,C类网络的网络号码是21位,主机号码是8位(小型网络)
  4. D类地址以1110开头,E类地址以11110开头。

一个不能在 Linux 上用的浏览器

微软和LINUX关系不太好(好像是),所以不能用 IE(Internet Explore)

逻辑运算

与:and : ∧ ∧ 或者 ⋅ ·
或:or : ∨ ∨ 或者 + + +
异或:xor: ⊕ ⊕
非:not : ¬ 或者 ¬
> > > > > > 或和异或

集合运算

并:∪
交:∩
补: ^ 或 ∼ \sim 或着这样表示:
在这里插入图片描述
差: -

有重复元素的排列组合问题

  1. 排列: m m m 种不同元素,每种有 n i n_i ni 个,答案就是这个:
    ( n 1 + n 2 + . . . + n m ) ! n 1 ! ∗ n 2 ! ∗ . . . ∗ n m ! \frac{(n_1+n_2+...+n_m)!}{n_1!*n_2!*...*n_m!} n1!n2!...nm!(n1+n2+...+nm)!
  2. 组合: n n n 种不同元素选 m m m 个,允许有重复元素,答案是这个:
    C n + m − 1 m C^{m}_{n+m-1} Cn+m1m

错排问题

递推,式子是 f ( n ) = ( n − 1 ) ∗ ( f ( n − 1 ) + f ( n − 2 ) ) f(n)=(n-1)*(f(n-1)+f(n-2)) f(n)=(n1)(f(n1)+f(n2))
初始化为 f ( 1 ) = 0 , f ( 2 ) = 1 f(1)=0,f(2)=1 f(1)=0,f(2)=1
就是第 n n n 个数和其他错排完的 n − 1 n-1 n1 任意一个交换,或者第 n n n 个数先和任意一个其他的数交换,剩下的再错排。

有一个奇妙的计算公式,我不知道是怎么弄出来的:
在这里插入图片描述

竞赛环境

点我查看 点我查看 点我查看

竞赛推荐语言

Visual C++不是竞赛推荐语言
不是的还有 TP7 和 TC 。

Lazarus 是(pascal类),RHIDE 也是(C++类)。

NOIP啥时候不能用Pascal了

2019 和 2022 以及 2022 之后。
(2019 是因为这一年没有NOIP)

NOI与NOIP的历史

第一届 NOI :1984年,DXP:“计算机的普及要从娃娃做起。”
第一届 NOIP :1995年

细节

回收站

回收站的东西就算清空了其实也有办法恢复。
在这里插入图片描述

最快情况&最好情况

最好情况是在一个算法中,运气最好的。
最快情况则是用最好的算法,不管运气的事情。

三个“传递”

引用传递:&a
指针传递:*a
值传递:a

值传递不会改变传递的数本身,而引用传递和指针传递会改变传递的数的本身。
( 就是采用值传递中,函数操作的地址跟实参不同,而采用引用传递和指针传递的时候相同)

看起来引用传递和指针传递好像一样?
实则不然,它们还是有区别的。

  1. 引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。
  2. 不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。
  3. 一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。

以上引用内容来自:C++ 值传递、指针传递、引用传递详解