做题:https://ti.luogu.com.cn/problemset/1003

选择题

第 1 题
微型计算机中,控制器的基本功能是( A)。

A. 控制机器各个部件协调工作
B. 实现算术运算和逻辑运算
C. 获取外部信息
D. 存放程序和数据

注:控制器直接找“控制”

第 2 题
设A=true,B=false,C=true,D=false,以下逻辑运算表达式值为真的是( B)。

A. (A∧B)∨(C∧D∨ -A)
B. ((A∧B)∨C)∧ -D
C. (B∨C∨D)∧D∧A
D. A∧(D∨ C)∧B

注:∧为与,∨为或,补充一下¬是为逻辑非

符号提供:¬ ¬ ∧ ∨

第 3 题
在下列关于图灵奖的说法中,不正确的是( C)。

A. 图灵奖是美国计算机协会于1966年设立的,专门奖励那些对计算机事业作出重要贡献的个人
B. 图灵奖有“计算机界诺贝尔奖”之称
C. 迄今为止,还没有华裔计算机科学家获此殊荣
D. 图灵奖的名称取自计算机科学的先驱、英国科学家阿兰·图灵

注:对图灵奖的了解不深没关系,但是一定要记住中国人是获得过图灵奖的!此人名叫姚期智,2000年图灵奖!

第 4 题
计算机在工作过程中,若突然停电,(C )中的信息不会丢失。

A. ROM和RAM
B. CPU
C. ROM
D. RAM

注:CPU必丢,下面是RAM和ROM的介绍,另外提一句



RAM、ROM、Cache

引:百度百科、https://blog.csdn.net/qq_30146831/article/details/107291969。

可以保存数据的还有CD、U盘、硬盘等。

第 5 题
完全二叉树共有2N−12N-12N−1个结点,则它的叶节点数是( B)。

A. N−1N-1N−1
B. NNN
C. 2N2N2N
D. 2N−12^N-12N−1

注:

很简单,你可以带入一个简单的例子试试,例如深度为3的满二叉树有7个节点,有4个叶节点.并且这也是一个性质。

第 6 题
在以下各项中,( D)不是操作系统软件。

A. Solaris
B. Linux
C. Windows Vista
D. Sybase

注:Vista和Linux肯定是,而Solaris很多人不知道,但是Sybase是一种数据库

sybase 美国Sybase公司研制的一种关系型数据库系统

第 7 题
设栈S的初始状态为空,元素a,b,c,d,e,f依次入栈S,出栈的序列为b,d,f,e,c,a,则栈S的容量至少应该是( C)。

A. 6
B. 5
C. 4
D. 3

注:这么几个数,手推都行了。

第 8 题
与十进制数28.5625相等的四进制数是( )。

A. 123.21
B. 131.22
C. 130.22
D. 130.21

注:四进制,大同小异也。尤其注意小数位处理,二进制是乘二取整,那么四进制也就是乘四取整。

如果不知道小数位的处理方法可以百度。

分为(1)十进制转四进制使用短除加乘四取整(2)四进制转十进制使用逐个乘方,注意小数位的负次方。

此题为(1)方法。

如下手稿:(字丑勿喷)

第 9 题
设字符串S=“Olympic”,S的非空子串的数目是( A)。

A. 28
B. 29
C. 16
D. 17

注:字符串本身也是子串,所以结果就是7+6+5+4+3+2+1=28

第 10 题
Web2.0是近年来互联网的热门概念之一,其核心思想是互动与分享。下列网站中,( B)是典型的Web2.0应用。

A. Sina
B. Flickr
C. Yahoo
D. Google

注:我一开始把Sina想成了微博,以为也是Web2.0,结果非也。



第 11 题
递归过程或函数调用时,处理参数和返回地址,通常使用一种称为( D)的数据结构。

A. 队列
B. 多维数组
C. 线性表
D. 栈

注:记住搭配——递归对栈

第 12 题
(2008)10+(5B)16(2008)_{10}+(5B)_{16}(2008)10​+(5B)16​的结果是( A)。

A. (833)16(833)_{16}(833)16​

B. (2089)10(2089)_{10}(2089)10​

C. (4163)8(4163)_8(4163)8​

D. (100001100011)2(100001100011)_2(100001100011)2​

注:都转换成10进制相加,然后再判断就行。

转换成十进制相加的结果是2099.

第 13 题
二叉树T,已知其先根遍历是1 2 4 3 5 7 6(数字为结点的编号,以下同),中根遍历是2 4 1 5 7 3 6,则该二叉树的后根遍历是( B)。

A. 4 2 5 7 6 3 1
B. 4 2 7 5 6 3 1
C. 7 4 2 5 6 3 1
D. 4 2 7 6 5 3 1

注:

资料放在这了:先序遍历、后序遍历、中序遍历:https://blog.csdn.net/qq_34840129/article/details/80619761

看懂了咱们就画树。

首先从先序遍历知道根是1。于是在中序遍历的数列中按照1划分可以找出左子树和右子树。

即2,4为左子树,5,7,3,6为右子树。

左子树容易处理,右子树还是按照先序遍历找根,在中序遍历中划分的策略行进。

………………

结果如下

接着,后序遍历就出来了。为4 2 7 5 6 3 1。

第 14 题
将数组{8, 23, 4, 16, 77, -5, 53, 100}中的元素按从大到小的顺序排列,每次可以交换任意两个元素,最少需要交换( B)次。

A. 4
B. 5
C. 6
D. 7

注:很明显的选择排序,手算就行。

下面是从小到大的,都一样。

第一次 77 和53交换
8 23 4 16 53 -5 77 100
第二次 53 和-5交换
8 23 4 16 -5 53 77 100
第三次 23 和-5交换
8 -5 4 16 23 53 77 100
第四次 8 与4交换
4 -5 8 16 23 53 77 100
第五次 4与-5 交换
-5 4 8 16 23 53 77 100
(每次从前面(未排好序的元素)选取最大的元素进行交换)

第 15 题
对有序数组{5, 13, 19, 21, 37, 56, 64, 75, 88,92,100}进行二分查找,成功查找元素19的查找长度(比较次数)是( B)。

A. 1
B. 2
C. 3
D. 4

注:二分查找,写代码写的多了很快就算出来了。

首先l = 0, r = 11 - 1 = 10;
mid = arr[(l + r)/ 2];
判断大了
r = mid; // 一次
mid = arr[(l + r)/ 2];
mid=19
判断正好; //两次
结束

第 16 题
面向对象程序设计(Object-Oriented Programming)是一种程序设计的方法论,它将对象作为程序的基本单元,将数据和程序封装在对象中,以提高软件的重用性、灵活性和扩展性。下面关于面向对象程序设计的说法中,不正确的是( A)。

A. 面向对象程序设计通常采用自顶向下设计方法进行设计。
B. 面向对象程序设计方法具有继承性(inheritance)、封装性(encapsulation)、多态性(polymorphism)等几大特点。
C. 支持面向对象特性的语言称为面向对象的编程语言,目前较为流行的有C++、JAVA、C#等。
D. 面向对象的程序设计的雏形来自于Simula语言,后来在SmallTalk语言的完善和标准化的过程中得到更多的扩展和对以前思想的重新注解。至今,SmallTalk语言仍然被视为面向对象语言的基础。

注:不要以为字数多就难了,A就是错的,谁说写个C++还要自顶向下了?!我写完主函数再写函数不行吗?

第 17 题
在32*32点阵的“字库”中,汉字“北”与“京”的字模占用字节数之和是( B)。

A. 512
B. 256
C. 384
D. 128

注:字符编码,《信息学奥赛一本通:初赛篇》有讲到

32×32×2=204832\times32\times2 = 204832×32×2=2048
2048÷8=2562048\div8=2562048÷8=256

第 18 题
设T是一棵有n个顶点的树,下列说法不正确的是( A)。

A. T有n条边
B. T是连通的
C. T是无环的
D. T有n-1条边

注:

很明显,就是在A和D里面选一个。那么就选D,这是定理,不管几叉树、什么树。

而且树是无环、连通的。

第 19 题
下列不属于NOIP竞赛推荐使用的语言环境的是( B)。

A. Dev-C++
B. Visual C++
C. free pascal
D. Lazarus

注:

第 20 题
在C++程序中,表达式200|10的值是( D)。

A. 20
B. 1
C. 220
D. 202

注:就是一个进制转换+逻辑运算
(200)10=(11001000)2(200)_{10} = (11001000)_2(200)10​=(11001000)2​
(10)10=(1010)2(10)_{10} = (1010)_2(10)10​=(1010)2​
1010∣11001000=110010101010 | 11001000 = 110010101010∣11001000=11001010
(11001010)2=(202)10(11001010)_2=(202)_{10}(11001010)2​=(202)10​

问题求解

第一题

书架上有4本不同的书A、B、C、D。其中A和B是红皮的,C和D是黑皮的。把这4本书摆在书架上,满足所有黑皮的书都排在一起的摆法有__12__种。满足 A必须比C靠左,所有红皮的书要摆放在一起,所有黑皮的书要摆放在一起,共有__4__种摆法。

注:

第一空:捆绑法P33×2=12{P\ _3^3} \times 2=12P 33​×2=12

第二空:模拟都出来了。

ABCD、ABDC、BACD、BADC完事。

第二题

有6个城市,任何两个城市之间都有一条道路连接,6个城市两两之间的距离如下表所示,则城市1到城市6的最短距离为______7______。


我的推理思路是倒着推,先看离6最近的是5,权值2。

继续看离5最近的2,权值3。

离2最近的也就是1了,权值2。

最后,总共7。

阅读程序写结果

1

#include<iostream>
using namespace std;
int main()
{int i, a, b, c, d, f[4];for(i = 0; i < 4; i++) cin >> f[i];a = f[0] + f[1] + f[2] + f[3];a = a / f[0];b = f[0] + f[2] + f[3];b = b / a;c = (b * f[1] + a) / f[2];d = f[(b / c ) % 4];if(f[(a + b + c + d) % 4] > f[2])cout << a + b<< endl;else cout << c + d << endl;return 0;
}

输入:9 19 29 39

正确答案: 23

2

#include<iostream>
using namespace std;
void foo(int a, int b, int c)
{if(a > b) foo(c, a, b);elsecout<<a<<','<<b<<','<<c<<endl;
}
int main()
{int a, b, c;cin >> a >> b >> c;foo(a, b, c);return 0;
}

输入: 3 1 2

正确答案: 2,3,1

3

#include <iostream>
using namespace std;void func(int ary[], int n )
{int i=0, j, x;j=n-1;while(i<j){while (i<j&&ary[i]>0) i++;while (i<j&&ary[j]<0) j--;if (i<j){x=ary[i];ary[i++]=ary[j];ary[j--]=x;}}
}int main()
{int a[20], i, m;m=10;for(i=0; i<m; i++){cin>>a[i];}func(a, m);for (i=0; i<m; i++)cout<<a[i]<<" ";cout<< endl;return 0;
}

输入:5 4 -6 -11 6 -59 22 -6 1 10

正确答案: 5 4 10 1 6 22 -59 -6 -11 -6

4

#include<iostream>
#include<cstring>
using namespace std;#define MAX 100
void solve(char first[], int spos_f, int epos_f, char mid[], int spos_m, int epos_m)
{int i, root_m;if(spos_f > epos_f)return;for(i = spos_m; i <= epos_m; i++)if(first[spos_f] == mid[i]){root_m = i;break;}solve(first, spos_f + 1, spos_f + (root_m - spos_m), mid, spos_m, root_m - 1);solve(first, spos_f + (root_m - spos_m) + 1, epos_f, mid, root_m + 1, epos_m);cout << first[spos_f];
}int main()
{char first[MAX], mid[MAX];int len;cin >> len;cin >> first >> mid;solve(first, 0, len - 1, mid , 0, len - 1); cout << endl;return 0;
}

输入:

7
ABDCEGF
BDAGECF

正确答案: DBGEFCA

完善程序

1

第 27 题
完善程序:
(字符串替换)给定一个字符串S(S仅包含大小写字母),下面的程序将S中的每个字母用规定的字母替换,并输出S经过替换后的结果。程序的输入是两个字符串,第一个字符串是给定的字符串S,第二个字符串S’由26个字母组成,它是a-z的任一排列,大小写不定,S’规定了每个字母对应的替换字母:S’中的第一个字母是字母A和a的替换字母,即S中的A用该字母的大写替换,S中的a用该字母的小写替换;S’中的第二个字母是字母B和b的替换字母,即S中的B用该字母的大写替换,S中的b用该字母的小写替换;…… 以此类推。


#include <iostream>
#include <string.h>
char change[26], str[5000];
using namespace std;void CheckChangeRule()
{int i;for (i = 0;i < 26;i ++){if ( [                   ①                   ] )change[i] -= 'A' - 'a';}
}void ChangeString()
{int i;for (i = 0;i <strlen(str);i ++){if (  [                 ②                    ]  )str[i] = change[str[i] - 'A'] -'a' + 'A';else[              ③             ]          }
}int main()
{int i;
cin >> str ;cin >> change;CheckChangeRule();[               ④               ] cout << str << endl;return 0;
}

2

完善程序:

(找第k大的数) 给定一个长度为1,000,000的无序正整数序列, 以及另一个数n (1<=n<=1000000), 然后以类似快速排序的方法找到序列中第n大的数(关于第n大的数:例如序列{1,2,3,4,5,6}中第3大的数是4)。

#include <iostream>
using namespace std;int a[1000001],n,ans = -1;
void swap(int &a,int &b)
{int c;c = a; a = b;  b = c;
}int FindKth(int left, int right, int n)
{int tmp,value,i,j;if (left == right) return left;tmp = rand()% (right - left) + left;swap(a[tmp],a[left]);value =[          ①         ];i = left;j = right;while (i < j){while (i < j && [            ②        ]) j --;if (i < j) {a[i] = a[j]; i ++;} else break;while (i < j && [          ③        ]) i ++;if (i < j) {a[j] = a[i]; j - -;} else break;}[        ④       ]  if (i < n) return  FindKth([               ⑤           ] );if (i > n) return [                  ⑥                        ]        return i;
}int main()
{int i;int m = 1000000;for (i = 1;i <= m;i ++)cin >> a[i];cin >> n;ans = FindKth(1,m,n);cout << a[ans];return 0;
}

NOIP 2008 普及组初赛试题 解题报告、题解及选择题思路,高质量相关推荐

  1. NOIP 2011 普及组初赛试题——答案、分析、错题记录

    NOIP 2011 普及组初赛试题 单项选择题-答案 第 1 题 在二进制下,1011001 + ( ) = 1100110. A. 1011 B. 1101 C. 1010 D. 1111 第 2 ...

  2. NOIP 2007 普及组初赛试题(C++)(无答案)

    含答案试题https://blog.csdn.net/fuzhenkun/article/details/104498640 第 1 题 在以下各项中,( )不是CPU的组成部分 A. 控制器 B. ...

  3. NOIP 2007 普及组初赛试题(C++)(含答案)

    无答案试题https://blog.csdn.net/fuzhenkun/article/details/104499295 第 1 题 在以下各项中,( )不是CPU的组成部分 A. 控制器 B. ...

  4. NOIP 2013 普及组初赛试题

    第 1 题 一个 32 位整型变量占用(A)个字节. A. 4 B. 8 C. 32 D. 128 常识题,每个32 位整型变量占4个字节 第 2 题 二进制数 11.01 在十进制下是(A). A. ...

  5. noi2017初赛c语言试题,NOIP2017普及组初赛试题及答案

    原标题:NOIP2017普及组初赛试题及答案 清北学堂信息学金牌教研团今天为学生们整理了NOIP2017普及组初赛试题及答案,供学生们参考哦! --此文2100多文字,大概需要60分钟看完 一.单项选 ...

  6. NOIP 2015 普及组 初赛

    NOIP 2015 普及组 初赛 疑难点 学习 感悟. 本份试卷本人得分93,两处错误,一错在二.1.题,眼花了,多数了个数据3241:二错在四.2.题(5)空,该空写成rbound=mid-1,这个 ...

  7. NOIP 2018 普及组 初赛

    NOIP 2018 普及组 初赛 姐妹篇 NOIP 2018 提高组 初赛 点评 欢迎查阅此文 https://blog.csdn.net/mrcrack/article/details/830489 ...

  8. 2007年noip普及组初赛试题

    一. 单项选择题(共20题,每题1.5分,共计30分.每题有且仅有一个正确答案.) 1. 在以下各项中,( )不是CPU的组成部分. A.控制器 B.运算器 C.寄存器 D.主板 2.在关系数据库中, ...

  9. NOIP2017普及组初赛试题及答案

    普及组C++语言试题 一.单项选择题(共 20 题,每题 1.5 分,共计 30 分:每题有且仅有一个正确选项) 1.在 8 位二进制补码中,10101011 表示的数是十进制下的( ). A. 43 ...

最新文章

  1. c语言输入身高计算标准体重_女人身高165cm标准体重是多少?
  2. php jquery点击事件,jQuery操作html元素点击事件详解
  3. skynet-源码分析1:目录下的文件整理
  4. uboot 与系统内核中 MTD分区的关系
  5. 一个常见的台式计算机有哪些硬件部分组成,台式电脑有哪些组成部分
  6. C++学习之路 | PTA乙级—— 1029 旧键盘 (20 分)(精简)
  7. edge浏览器下载位置设置
  8. 信息学奥赛一本通(1159:斐波那契数列)
  9. java resultset 赋值_ResultSet数据自动绑定到JavaBean中 | 学步园
  10. Java7 和 C# 2.0
  11. linux 图片处理工具,linux的convert图片处理工具
  12. Repast HPC 2.0安装及实例模型运行总结
  13. static、static inline、entern inline
  14. CentOS7下安装NVIDIA独立显卡驱动出现X service error问题解决方法
  15. 期货卖出平仓价和买入平仓价(期货平仓价和结算价)
  16. 服务器安装linux后一直停留在光标,Ubuntu14更新后无法进入系统卡在光标界面解怎么办?...
  17. 【Paper】2021_Distributed sliding mode control for time-varying formation tracking of multi-UAV system
  18. 基于LeNet的手写汉字识别(caffe)
  19. 代码实现把目标检测数据集的框框画在相应图片上
  20. java敏感词关键词过滤

热门文章

  1. 160个CrackMe-第四个“ajj与黑头兄!”
  2. robot.txt是干嘛的?
  3. php tts,给博客添加TTS语音朗读 简单快速版
  4. python适合做游戏的背景音乐是什么_适合做游戏的背景音乐
  5. 电感与磁珠(补充中)
  6. python经典小游戏贪吃蛇_Python开发贪吃蛇小游戏
  7. Python 局域网即时通讯工具
  8. Linux 魔法系统请求键骇客
  9. VVIC api接口
  10. MacIOS Bonjour