信息学奥赛初赛天天练-31-CSP-J2022基础题-指针、数组、链表、进制转换、深度优先搜索、广度优先搜索、双栈实现队列应用

news2024/11/29 6:38:50

PDF文档公众号回复关键字:20240621

在这里插入图片描述

2022 CSP-J 选择题

单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项)

3.运行以下代码片段的行为是 ( )

int x = 101;
int y = 201;
int * p =&x;
int * q =&y;
p=q;

A. 将x的值赋为 201

B. 将y的值赋为101

C. 将q指向x的地址

D. 将p指向y的地址

4.链表和数组的区别包括( )

A. 数组不能排序,链表可以

B. 链表比数组能存储更多的信息

C. 数组大小固定,链表大小可动态调整

D. 以上均正确

10.以下对数据结构的表述不恰当的一项为 ( )

A. 图的深度优先遍历算法常使用的数据结构为栈

B. 栈的访问原则为后进先出,队列的访问原则为先进先出

C. 队列常常被用于广度优先搜索

D. 栈与队列存在本质不同,无法用栈实现队列

13.八进制数32.1对应的十进制数是

A. 24.125

B. 24.250

C. 26.125

D. 26.250

15.以下对递归方法的描述中,正确的是( )

A. 递归是允许使用多组参数调用函数的编程技术

B. 递归是通过调用自身求解问题的编程技术

C. 递归是面向对象和数据而不说功能和逻辑的编程语言模型

D. 递归是将用某种高级语言转换为机器代码的编程技术

2 相关知识点

1) 指针

指针是 C++语言中广泛使用的一种数据类型,指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址

int    *ip;    /* 一个整型的指针 */
float  *fp;    /* 一个浮点型的指针 */
char   *ch;    /* 一个字符型的指针 */

指针指向的是变量的地址

#include <iostream>
using namespace std;
int main (){
   int  a = 20;   // 实际变量的声明
   int  *ip;      // 指针变量的声明
   ip = &a;       // 在指针变量中存储 a 的地址
   cout << "a变量的值: ";
   cout << a << endl;
   // 输出在指针变量中存储的地址
   cout << "指针变量的值,指针指向的变量的地址: ";
   cout << ip << endl;
   // 访问指针中地址的值
   cout << "指针指向地址对应变量的值(a的值): ";
   cout << *ip << endl;
   return 0;
}

2) 数组/链表

数组是一种线性数据结构,它将具有相同类型的元素存储在连续的内存空间中。数组中每个元素通过其索引进行访问,索引从0开始

常规数组的长度是固定的,特殊数组长度不固定,例如vector数组

链表也是一种线性数据结构,但是它将元素存储在非连续的内存空间中,链表中的每个元素包含两部分:该元素的数据和指向下一个元素的指针

链表长度不固定

3) R进制转10进制

按权展开,但要注意各个位的权,最低位(最右边)的权是0次方,权值为1

(11010110)2=1×2^7+1×2^6+0×2^5+1×2^4+0×2^3+1×2^2+1×2^1+0×2^0=(214)10

包括小数

(1011.01)2=(1*2^3+1*2^1+1*2^0+1*2^(-2))=8+2+1+0.25=11.25

4) 递归

递归是一种解决问题的方法,它通过将问题分解为更小的子问题来解决。

一个递归函数会在其定义中直接或间接地调用自身

递归通常包括两个部分:基本情况(Base case)和递归步骤(Recursive step)。

基本情况是指当问题规模变得足够小时,可以直接得到解决方案的情况。

5)宽度优先遍历(BFS)

(BFS, Breadth First Search)是一个针对图和树的遍历算法。发明于上世纪50年代末60年代初,最初用于解决迷宫最短路径和网络路由等问题

是从根结点开始沿着树的宽度搜索遍历,将离根节点最近的节点先遍历出来,在继续深入遍历

实现DFS时,通常使用队列数据结构实现

6) 深度优先遍历(DFS)

从某个特定顶点开始,沿着每个分支尽可能搜索。DFS中,还需跟踪访问过的顶点。

实现DFS时,通常使用堆栈数据结构来实现

7) 2栈实现1队列

主要思路
存储元素到栈1
取出时把栈1中元素取出放入另外栈2(栈2的栈顶对应栈1的栈底),从栈2取做到了先进先出

#include<bits/stdc++.h>
using namespace std;
/*
  双栈转队列 主要思路
  存储元素到栈1
  取出时把栈1中元素取出放入另外栈2(栈2的栈顶对应栈1的栈底),从栈2取做到了先进先出 
*/ 
class Queue {
    private:
        stack<int> s1;//push存入 
        stack<int> s2;//把push存入s1的元素对口push到s2,再出栈 
    public:
        void push(int num){//push到栈s1 
            s1.push(num);
        }
		/*
		  1 把栈s1中的元素逐一取出 放入s2
		  2 取出第1个元素 
		  3 把栈s2中的元素逐一取出 放入s1 
		  4 上述1 2 3操作后,取出了s1最下面元素后剩余元素又恢复了对应位置 
		*/
        int  pop(){
            int temp;
            while (!s1.empty()){
                s2.push(s1.top());
                s1.pop();
            }
            temp = s2.top();
            s2.pop();
            while (!s2.empty()){
                s1.push(s2.top());
                s2.pop();
            }
            return temp;
        }
		/*
		  top和pop类似
		  top只是返回最上面一个元素,不取出此元素 
		*/ 
        int top(){
            int temp;
            while (!s1.empty()){
                s2.push(s1.top());
                s1.pop();
            }
            temp = s2.top();
            while (!s2.empty()){
                s1.push(s2.top());
                s2.pop();
            }
            return temp;
        }
		/*
		  判空 2个队列都为空 
		*/ 
        bool empty(){
            return s1.empty() && s2.empty();
        }
};
int main(){
    Queue queue;
    //放入3个元素 
    queue.push(1);
    queue.push(2);
    queue.push(3);
	//按先进先出的顺序输出 
    cout << queue.pop() << endl;
    cout << queue.pop() << endl; 
}

3 思路分析

3.运行以下代码片段的行为是 ( D )

int x = 101;
int y = 201;
int * p =&x;
int * q =&y;
p=q;

A. 将x的值赋为 201

B. 将y的值赋为101

C. 将q指向x的地址

D. 将p指向y的地址

分析

1 x 和 y 变量赋值,x为101,y为201 所以A和B不对
2 int * q =&y; //可知q指向y的地址,所以C不对
3 p=q;//q赋值为p (q指向y的地址) 所以p之星y的地址 所以D正确

4.链表和数组的区别包括( C )

A. 数组不能排序,链表可以

B. 链表比数组能存储更多的信息

C. 数组大小固定,链表大小可动态调整

D. 以上均正确

分析

1 数组可以排序,所以A不正确
2 没有任何约束,链表和数组存储信息无法比较 所以B不正确
3 数组大小是固定的,动态数组除外,一般提到数组就是普通数组,所以C是正确的

10.以下对数据结构的表述不恰当的一项为 ( D )

A. 图的深度优先遍历算法常使用的数据结构为栈

B. 栈的访问原则为后进先出,队列的访问原则为先进先出

C. 队列常常被用于广度优先搜索

D. 栈与队列存在本质不同,无法用栈实现队列

分析

1 深度优先遍历常用数据结构为栈,因为栈是后进先出,逐层深入遍历的子节点 A正确
2 栈的访问原则是后进先出,队列的访问原则是先进先出 B正确
3 队列常用作广度优先搜索,队列是先进先出,紧跟着的节点先进队列,先被遍历, C正确
4 栈和队列顺序相反,可以使用2个栈实现1个队列,参考相关知识点7)

13.八进制数32.1对应的十进制数是( C )

A. 24.125

B. 24.250

C. 26.125

D. 26.250

分析

R进制转10进制 -权展开,但要注意各个位的权,最低位(最右边)的权是0次方,权值为1
(32.1)8=(3*8^1+2*8^0+1*8(-1))10=(24+2+0.125)10=26.125
所以选C

15.以下对递归方法的描述中,正确的是( B )

A. 递归是允许使用多组参数调用函数的编程技术

B. 递归是通过调用自身求解问题的编程技术

C. 递归是面向对象和数据而不是功能和逻辑的编程语言模型

D. 递归是将用某种高级语言转换为机器代码的编程技术

分析

1 递归主要是函数可以自己调用自己,所以选B
2 多组参数调用是参数传递和递归无关,所以A不对
3 递归和面向对象无关,也没说明自己调用自己 所以C不对
4 将高级语言转换为机器码是编译器的作用,和递归无关 所以D不对

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1848025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Golang - 90天从新手到大师】Day09 - string

系列文章合集 Golang - 90天从新手到大师 String 一个字符串是一个不可改变的字节序列。字符串可以包含任意的数据&#xff0c;但是通常是用来包含人类可读的文本。 len()返回字符串字节数目&#xff08;不是rune数&#xff09;。 通过索引可以访问某个字节值&#xff0c;0…

数据仓库 基础教程

数据仓库 基础教程 1. 数据仓库概述 数据仓库(Data Warehouse,简称DW或者DWH)是通过集成来自多个异构数据源的数据来构建的。它支持分析报告、结构化和/或特别查询和决策制定。本教程采用循序渐进的方法来解释数据仓库的所有必要概念。 “数据仓库”一词最早是由Bill Inmon在1…

VS编译器字体颜色设置

默认颜色不好看&#xff0c;颜色之间代码各个关系之间没有很强关联性所以要设置字体颜色 颜色一步到位版本&#xff1a; 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a;One dark Pro 第四步&#xff1a; 等待安装完后重启VS 点击Modify&#xff0c;一段时间结束后选…

142. 环形链表 II(中等)

142. 环形链表 II 1. 题目描述2.详细题解3.代码实现3.1 Python哈希表快慢指针 3.2 Java哈希表快慢指针 1. 题目描述 题目中转&#xff1a;142. 环形链表 II 2.详细题解 判断链表是否形成了环路&#xff0c;非常常规和直观的思路是&#xff0c;依次遍历每个结点并记录下来&…

我的Mac疯了!居然可以生成这样的奇葩AI图片!

在当今人工智能领域&#xff0c;midjourney无疑是生成图片的王者&#xff0c;但是苦于付费才能使用&#xff0c;今天我就给大家分享一下midjourney平替stable diffusion&#xff0c;实现本地生成不逊色于midjourney的图片 效果图 先上一个我自己生成的效果(就是在我的Mac上用C…

内江科技杂志内江科技杂志社内江科技编辑部2024年第13期目录

科教兴国 内江市科技局“五个强化”助力“五经普”工作有序推进 本刊通讯员; 1 内江市多措并举融入成渝中线科创走廊建设 本刊通讯员; 2 科学管理《内江科技》投稿&#xff1a;cnqikantg126.com 数字化社会公共图书馆的服务效能提升策略研究 闫永凤;臧萌;王亚博;王…

Uniapp App 微信登录苹果登录

核心逻辑&#xff0c;通过第三方登录获取唯一值&#xff08;openId | userId&#xff09;&#xff0c;调接口获取此唯一值对应的账号&#xff0c;如果未绑定跳转绑定页 微信授权返回的是一个会变的code&#xff08;每次都不一致&#xff09;&#xff0c;需要调用微信相关api换取…

二分练习题(C. Earning on Bets)

二分练习题&#xff08;C. Earning on Bets&#xff09; 原题链接&#xff1a;点击此处 Earning on Bets 题面翻译 有人提议让您玩一个游戏。在这个游戏中&#xff0c;有 n n n 种可能的结果&#xff0c;对于每一种结果&#xff0c;您都必须下注一定整数的硬币。如果 i …

永辉超市:胖东来爆改,成色几何?

单日业绩暴涨14倍。来&#xff0c;看看&#xff0c;这是被胖东来爆改后重新开业后的门店&#xff0c; 不出意外的流量爆炸。胖东来爆改&#xff0c;真是解决实体商超困境的灵丹妙药吗&#xff1f; 今天我们聊聊——永辉超市 最近两年实体商超日子都不好过&#xff0c;去年13家…

36 - shell之sed

sed grep就是查找文本当中的内容&#xff0c;扩展正则表达式。 一、sed 1.1、sed的定义 sed是一种流编辑器&#xff0c;一次处理一行内容。 如果只是展示&#xff0c;会放在缓冲区&#xff08;模式空间&#xff09;&#xff0c;展示结束&#xff0c;会从模式空间把结果删除…

约束求解器方案设计

1.约束求解介绍 给定一个几何对象&#xff08;点、直线段、圆、圆弧、平面等&#xff09;的集合G和一个关于集合G中几何对象之间约束&#xff08;点的位置、直线段的长度、圆弧对应的圆心角角度、垂直、相切等&#xff09; 的集合C&#xff0c;则在二元组(G&#xff0c;C)中根…

探索全球奇趣,开启你的海外盲盒app开发之旅!

在追求个性化和独特体验的今天&#xff0c;你是否渴望拥有一款能够带你穿越国界、领略世界各地新奇好物的App&#xff1f;为了满足广大用户对于未知的好奇与探索欲望&#xff0c;我们精心打造了一款海外盲盒App&#xff0c;带你踏上一段充满惊喜的全球购物之旅。 一、产品介绍…

DVWA 靶场 Authorisation Bypass 通关解析

前言 DVWA代表Damn Vulnerable Web Application&#xff0c;是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序&#xff0c;旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…

山东济南比较出名的起名大师的老师,中国最厉害的改名大师颜廷利:短命的小草,年年自损;长寿的大树,万古长青。。。(升命学说)

在中国第一起名大师的老师颜廷利教授的《升命学说》中&#xff0c;通过“净化论”、“和合法则”、“唯悟主义”以及“镜正理念”的阐述&#xff0c;我们得以窥见生命的不同维度。他以自然界中短命的小草与长寿的大树为例&#xff0c;揭示了生命形态的对比与哲理。 小草&#…

106、从中序与后序遍历序列构造二叉树

给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 提示: 1 < inorder.length < 3000postorder.length inorder.length-3000 < inorder[i]…

远程医疗软件到底哪个好用?

随着科技进步的不断推进&#xff0c;远程医疗已经成为现代医疗体系的一个重要支柱。远程医疗软件&#xff0c;通过网络通信技术的运用&#xff0c;打破了地理限制&#xff0c;实现了医疗资源的有效整合与共享&#xff0c;为民众提供了前所未有的便捷高效的医疗服务体验。那么&a…

期末考后怎样发成绩?

老师们&#xff0c;下周可就是期末考啦&#xff0c;又到了头疼发成绩的时候了。每当这个时候&#xff0c;家长们总是急切地咨询孩子的考试表现&#xff0c;向老师们询问成绩。这种场景几乎成了每学期结束时的常态。 别担心&#xff0c;我来安利一个超棒的工具——“易查分小程序…

跨境多账号需知:指纹浏览器需要用独立IP吗?

指纹浏览器也成为反检测浏览器&#xff0c;旨在安全管理多个账户。在跨境多账号中&#xff0c;多个账号容易引发网站怀疑并最终导致大量账户被暂停&#xff0c;使用反检测浏览器的主要目的是通过创建新的浏览器指纹来隐藏用户的真实浏览器指纹。 但浏览器指纹并不是网站关注的唯…

拒绝吸烟,远离慢阻肺——朗格力复合营养素助力守护肺部健康

#肺科营养#朗格力#班古营养#复合营养素#肺部营养#肺部健康# 你知道吗?慢阻肺这一疾病在我国的患者数量已突破亿级大关,尤其在40岁以上的成年人中,平均每7个人中就有1位可能受其困扰。然而,很多人对慢阻肺的严重性认识不足,常常将其视为一种普通的咳嗽或喘息,忽视了它潜在的危…

为什么伦敦金新手不能用一小时图及以下的时间周期?

刚进入伦敦金市场的投资者&#xff0c;一般不建议使用较低的时间周期&#xff0c;如1小时图或以下。不仅如此&#xff0c;新手或者兼职投资者会被要求使用较高的时间周期交易&#xff0c;如4小时图或日线图&#xff0c;这有什么道理呢&#xff1f;下面我们就来讨论一下。 新手的…