第五套CCF信息学奥赛c++练习题 CSP-J认证初级组 中小学信奥赛入门组初赛考前模拟冲刺题(阅读程序题)

第五套中小学信息学奥赛CSP-J考前冲刺题

二、阅读程序题

(程序输入不超过数组或字符串定义的范围,判断题正确填√错误填X;除特殊说明外,判断题 1.5分,选择题3分,共计40分)

第一题 递归函数

1 #include<iostream>
2 using namespace std;
3 int p;
4 void fun(int &x,int &y);
5 void func (int &x,int &y){
6	if(y>x)return;
7	x--;y/=2;
8	fun(x,y);
9 }
10 void fun(int &x,int &y){
11	if(x==1)return;
12	x/=2;y+=p;
13	func(x,y);
14 }
15int main(){
16	int x,y;
17	cin>>x>>y>>p;
18	fun(x,y);
19	cout<<x<<' '<<y;
20	return 0;
21 }

程序分析

主要考查小朋友们读写程序能力和逻辑思维能力,此程序实现的是一个C++递归函数程序,主要功能是通过递归调用函数来操作输入的两个数x和y,最终输出最终的x和y的值。

  • 程序的主要部分如下: 声明了一个全局变量p
  • 定义了两个函数fun和func
  • 函数fun通过引用参数传递x和y的值,并且检查x是否等于1,如果是,则函数返回
  • 否则,将x除以2,y加上p的值,并调用函数func
  • 函数func通过引用参数传递x和y的值,并且检查y是否大于x,如果是,则函数返回
  • 否则,将x减1,y除以2,并调用函数fun
  • 在主函数main中,首先输入x、y和p的值,然后调用函数fun,并输出最终的x和y的值

判断题

1)、将第 04行的&去除后,程序仍能通过编译

2)、读人的x,y,p为int 范围内任意值时程序均能完成运行

3)、若x=1时,输出的x,y与输人的一致

4)、输出的x必然小于等于输人的x。

答案:1 × 2 × 3 √ 4 ×

答案分析:

1、从程序中可以看出第4行是函数声明,第10行是对应函数的定义,这两行参数应该要保持一致,错误

2、当x、y、p均为-3的时候,程序就进入死循环,错误

3、从程序第11行可以看出,如果输入的x=1,将直接返回,所以输出和输入的xy一致,正确

4、从程序分析可以看出,如果输入的x为负数的时候就不一定了,错误

单选题

5)、输人为7 33 2时,输出为

A、4 31

B、4 35

C、3 31

D、3 35

答案:D

答案分析:从程序分析,然后带入输入对应的值,可以计算得到输出的x和y为:3和35,答案D

6)、输人为33 7 2时,输出为

A、5 3

B、3 5

C、6 4

D、4 6

答案:B

答案分析:从程序分析,然后带入输入对应的值,可以计算得到输出的x和y为:3和5,答案B

第二题 素数判定

1 #include<iostream>
2 using namespace std;
3 #include<cmath>
4
5 bool IsPrime(int num)
6 {
7	for(int i=2;i<=sqrt(num);i++)
8	{
9		if(num%i==0)
10		{
11			return false;
12		}
13	}
14	return true;
15 }
16 int main()
17 {
18	int num=0;
19	cin>>num;
20	if(IsPrime(num))
21	{
22		cout<<"YES"<<endl;
23	}
24	else
25	{
26		cout<<"NO"<<endl;
27	}
28
29	return 0;
30 }

程序分析

主要考查小朋友们读写程序能力和逻辑思维能力,此程序实现判断一个给定的数是否为素数

  • 首先,定义了一个名为IsPrime的函数,用于判断一个数是否为素数
  • 该函数接收一个整数参数num
  • 在IsPrime函数内部,使用一个for循环从2开始遍历到sqrt(num),用于判断num是否可以被整除
  • 通过判断num%i是否等于0,如果等于0,则表示num可以被i整除,即num不是素数,返回false
  • 如果循环结束后仍然没有返回false,表示num不能被2到sqrt(num)之间的任意整数整除,即num是素数,返回true
  • 在main函数中,首先定义了一个变量num用于接收用户输入的数
  • 然后通过cin语句从标准输入读取一个整数,存入num变量中
  • 接下来通过调用IsPrime函数判断num是否为素数
  • 如果是素数,则输出"YES",否则输出"NO"
  • 最后返回0,表示程序执行成功

判断题

1)、第19行输人 97时,输出为“NO”(不含引号)

2)、第19 行输人 119时,输出为“YES”(不含引号)

3)、若将第7行的“<="改成“<”,程序输出的结果一定不会改变

4)、当程序执行第14行时,i的值为 sqrt(num)。

答案:1× 2 × 3 √ 4 ×

答案分析:

1、从程序分析可以得出97是素数,输出为YES,错误

2、从程序分析可以得出119不是素数,119=7*17,输出为NO,错误

3、从程序分析中可以看出,如果一个数为质数的平方,这时候就会判断出错,错误

4、从for循环中可以看出,要执行14行,必须是for循环全部执行完毕,i的值应该是sqrt(num)+1,错误

单选题

5)、最坏情况下,此程序的时间复杂度是

A、O(num)

B、O(num^2)

C、O(sqrt(num))

D、O(log num)

答案:C

答案分析:从for循环中可以看出,最坏的情况就是i=sqrt(n),所以最坏情况下时间复杂度为O(sqrt(n)),答案C

6)、若输人的num为 20以内的正整数,则输出为“YES"的概率是

A、0.45

B、0.4

C、0.5

D、0.35

答案:A

答案分析:从程序分析中可以看出,20以内的素数有:2、3、5、7、11、13、17、19,共8个,但是如果输入的是1,也会输出YES,所以共有9个数,9/20=0.45,答案A

第三题 数字排序

1 #include<iostream>
2 using namespace std;
3 const int maxn=105;
4 int n,a[maxn],b[maxn];
5 int main()
6 {
7	cin>>n;
8	int x;
9	for(int i=1;i<=n;i++){
10		cin>>x;
11		a[i]=b[i]=x;
12	}
13	
14	for(int i=1;i<=n;i++)
15		for(int j=i+1;j<=n;j++){
16			if (a[i]>a[j]) swap(a[i],a[j]);
17			if (b[i]<b[j]) swap (b[i],b[j]);
18		}
19	
20	for (int i=1;i<=n;i++)cout<<a[i]<<" ";
21	cout<<"\n" ;
22	for (int i=1;i<=n;i++)cout<<b[i]<<" ";
23	cout<<"\n";
24	return 0;
25 }

程序分析

主要考查小朋友们读写程序能力和逻辑思维能力,这段程序实现的功能是对输入的n个数字进行排序,并输出两种排序的结果

  • 程序首先读取输入的n,并声明了两个大小为maxn的数组a和b用于存储输入的数字
  • 程序接着通过for循环将输入的数字依次赋值给a和b数组
  • 然后,程序使用两层嵌套的for循环进行排序
  • 内层的for循环从i+1开始,遍历剩下的数字,通过比较大小来交换位置,使得a[i]的值最小,b[i]的值最大
  • 最后,程序使用两个for循环分别输出a和b数组的元素
  • 时间复杂度分析:  最坏情况下,内层for循环的执行次数为(n-1)+(n-2)+...+1 = (n-1)*n/2,所以时间复杂度为O(n^2)。 因此,整个程序的时间复杂度为O(n^2)。

判斯题

1) 若输人的 X[1],X[2],…,X[N]中有相同的数,程序会陷人死循环

2) 当且仅当输入的X[1],X[2],…,X[N]全部相同时输出的两行结果相同

3) 该算法的原理是基数排序

答案:1× 2√ 3  ×

答案分析:

1、从程序分析可以得出这是实现排序,第一行是从小到大,第二行是从大到小,有相同的数也不影响排序结果,错误

2、从程序分析可以得出只有输入都是一样的时候结果才会相同,正确

3、以上程序的算法原理是选择排序。基数排序是一种非比较排序算法,而选择排序是一种比较排序算法。在基数排序中,根据数字的每一位进行排序;而在选择排序中,通过每次选择最小(或最大)的元素,将其放在已排序部分的末尾。错误

单选题

4) 若输人的X[1],X[2],…,X[N]互不相同,则下列说法正确的是

A、输出的两行结果相同

B、将输出的第一行结果整体翻转后,将与第二行相同

C、将输出的第一行结果的第一项与最后一项交换后,将与第二行相同

D、以上说法都不正确

答案:B

答案分析:程序分析可以得出第一行是从小到大排序,第二行是从大到小排序,答案B

5) 下列说法不正确的是

A、输出的第一行即为将 X[1],X[2],…,X[N]从小到大排序后得到的结果

B、输出的第二行即为将 X[1],X[2],…,X[N]从大到小排序后得到的结果

C、若将“a[i]>a[j]"改为“a[i]>=a[j]”,则程序输出无变化

D、不存在时间复杂度更优的能与本程序达到相同目的算法

答案:D

答案分析:因为输出的结果中有B和C,所以输入的字符串就是S和P,所以答案A

6) 该程序的时间复杂度为

A、O(n)

B、O(n log n)

C、O(n^2)

D、O(n sqrt(n))

答案:C

答案分析:从程序分析可以得出该程序的时间复杂度为C

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

02. Nginx入门-Nginx安装

Nginx安装 yum安装 编辑yum环境 cat > /etc/yum.repos.d/nginx.repo << EOF [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org/keys/nginx_signing.key module_…

【LeetCode每日一题】【BFS模版与例题】【二维数组】130被围绕的区域 994 腐烂的橘子

前几天写过一篇BFS比较基础版的遍历 【LeetCode每日一题】【BFS模版与例题】863.二叉树中所有距离为 K 的结点 &#xff0c;可以先看一下再看本文 用 BFS 算法遍历二维数组 遍历二维矩阵&#xff1a;二维矩阵中的一个位置看做一个节点&#xff0c;这个节点的上下左右四个位置…

gRPC入门

文章目录 1. 简介2. 安装gRPC2.1. 下载protobuf2.2. 安装grpc核心库2.3. 安装protoc的Go插件2.4. 检查 3. 入门示例4. proto文件介绍5. 服务端代码编写6. 客户端代码编写7. 认证以及安全传输 1. 简介 在 gRPC 中&#xff0c;客户端应用程序可以像本地对象一样直接调用不同机器…

Flutter中的Provider状态管理工具有哪些优势

在Flutter应用开发中&#xff0c;状态管理是一个至关重要的方面。而Provider作为一种简单、灵活且高效的状态管理工具&#xff0c;在众多Flutter开发者中备受青睐。本文将深入探讨Provider在Flutter中的优势&#xff0c;帮助读者更好地理解其价值和应用场景。 简单易用 Provi…

《数字图像处理(MATLAB版)》相关算法代码及其分析(3)

目录 1 对边界进行子采样 1.1 输入参数检查 1.2 处理重复坐标 1.3 计算边界最大范围 1.4 确定网格线数量 1.5 构建网格位置向量 1.6 计算曼哈顿距离 1.7 整理输出结果 1.8 返回结果 2 改变图像的存储类别 2.1 函数输入 2.2 数据类型转换 2.3 错误处理 2.4 返回结…

Flutter整体框架

Flutter整体框架由三部分组成&#xff1a;Framework、Engine和Embedder。 Framework Framework提供了一个用 Dart 语言编写的现代、反应式框架&#xff0c;由许多抽象的层级组成。它包括一套丰富的布局、动画、绘制、手势UI组件及配套代码&#xff0c;以及更基础的异步、文件、…

参数引入和全局变量引入实现-目标和

LCR 102. 目标和 - 力扣&#xff08;LeetCode&#xff09; 分析题意&#xff0c;画出决策树&#xff0c;其他的思路都跟前面讲过的类似&#xff1a; 全局变量引入实现&#xff1a; 全局变量的引入&#xff0c;需要手动处理回溯&#xff1b; class Solution {int ret; //…

视频拉流推流技术梳理

概况 视频的整个流程主要分为推流和拉流 摄像头场景&#xff1a; 摄像头捕捉视频画面&#xff0c;推流到服务器&#xff0c;服务器分发到CDN&#xff0c; 客户端从CDN地址拉流&#xff0c;客户端进行播放 直播场景&#xff1a; 主播通过手机&#xff0c;电脑等客户端&…

前端爬虫+可视化Demo

爬虫简介 可以把互联网比做成一张 “大网”&#xff0c;爬虫就是在这张大网上不断爬取信息的程序。 爬虫是请求网站并提取数据的自动化程序。 省流&#xff1a;Demo实现前置知识&#xff1a; JS 基础Node 基础 &#xff08;1&#xff09;爬虫基本工作流程&#xff1a; 向…

RK3568平台 USB基础知识

一.现实工作中USB实际例子 现象&#xff1a;把USB设备比如Android手机接到PC 右下角弹出"发现android phone"跳出一个对话框&#xff0c;提示你安装驱动程序 问1&#xff1a;USB设备插到电脑上去&#xff0c;接触到的对方设备是什么&#xff1f; 答1&#xff1a;…

yum 和 rpm

rpm说明 rpm -qa &#xff1a;列出所有已安装的软件包 [roothub ~] rpm -qa geoipupdate-2.5.0-1.el7.x86_64 ncurses-base-5.9-14.20130511.el7_4.noarch libndp-1.2-9.el7.x86_64 libfastjson-0.99.4-3.el7.x86_64 。。。 rpm -qf FILENAME &#xff1a;查找提供 FILENAME…

SwiftUI之CoreData详解(一)

coreData 是一种数据持久化的方案&#xff0c;是对SQLite的一种封装。一说到这种桌面化的数据库&#xff0c;我就无比的怀念Foxbase|Foxpro, 多好的数据库产品&#xff0c;被微软扼杀了&#xff0c;相当年教大学生妹子们国家二级数据库时都是手把手教的&#xff0c;呃~~~&#…

wordpress模板官网

移民wordpress主题 移民代办wordpress主题&#xff0c;适合做海外移民咨询的代理公司搭建wordpress企业官方网站使用。 https://www.jianzhanpress.com/?p5130 夏令营wordpress主题 绿色夏令营wordpress主题&#xff0c;适合做夏令营或户外拓展的公司搭建wordpress官方网站…

【动态规划】第十一届蓝桥杯省赛第二场C++ C组《数字三角形》(c++)

1.题目描述 上图给出了一个数字三角形。 从三角形的顶部到底部有很多条不同的路径。 对于每条路径&#xff0c;把路径上面的数加起来可以得到一个和&#xff0c;你的任务就是找到最大的和。 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右边的那个数。 …

绝地求生:小团团曝被判8年:地图语音包或将下架,公会和主播被一锅端

这两天大家都在讨论某鱼平台办卡抽奖的事情。这件事发生之后没多久&#xff0c;某鱼平台里面的大量主播在同一时间停播&#xff0c;闲游盒认为大家应该也懂的&#xff0c;这次停播就是因为这些主播也参与了办卡抽奖&#xff0c;都需要接受调查&#xff0c;在两个月左右的调查中…

【项目实践】如何发掘用户隐性需求推送PUSH

1.背景 对比业界广告推荐、触达成熟的平台&#xff0c;例如抖音&#xff0c;小红书&#xff0c;淘宝&#xff0c;知乎等&#xff0c;都已经站在巨量数据的基础之上&#xff0c;具备了 “用户意图分析” 的能力&#xff0c;可以分析出 “用户的隐性需求”&#xff0c;假设我们同…

Python学习日记(一:List、Tuple、dictionary)

前言&#xff1a; 最近想拓展一下自己的知识面&#xff0c;特来学习一下python这门语言&#xff0c;因为之前学习过C语言&#xff0c;目前学习起来Python还不是特别费劲&#xff0c;也由此感叹C语言不愧是最基础的语言。不多废话&#xff0c;进入正题 概述&#xff1a; Pytho…

典中典之西电A测-气压测控仿真系统

兄弟,如果你看到这篇,只能说明你A测也挂了,没办法,哥们太菜了,抄的太假过不了你电有些老师的慧眼 这坨&#x1f415;⑩我先吃为敬 环境搭建可以参考这个兄弟的博客 一、题目要求 实现功能&#xff1a;使用 Arduino UNO 微控制器&#xff0c;搭建一个 PC 上位机远程气压检测控…

动态规划:LeetCode第10题 正则表达式匹配

题目&#xff1a; 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s的&#xff0c;而不是部分字符串。 示例 1&#xff1a; …

C语言文件操作,linux文件操作,文件描述符,linux下一切皆文件,缓冲区,重定向

目录 C语言文件操作 如何打开文件以及打开文件方式 读写文件 关闭文件 Linux系统下的文件操作 open 宏标志位 write&#xff0c;read&#xff0c;close&#xff0c;lseek接口 什么是当前路径&#xff1f; linux下一切皆文件 文件描述符 文件描述符排序 C语言文件操…