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

news2024/9/24 13:20:41

第五套中小学信息学奥赛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

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

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

相关文章

Java实现手机库存管理

一、实验任务 编写一个程序&#xff0c;模拟库存管理系统。该系统主要包括系统首页、商品入库、商品显示和删除商品功能。每个功能的具体要求如下&#xff1a; 1.系统的首页&#xff1a;用于显示系统所有的操作&#xff0c;并且可以选择使用某一个功能。 2.商品入库功能&…

MyCAT集群——MyCAT2如何配置读写分离

先搭载MySQL一主两从 192.168.20.110MyCAT192.168.20.111Master192.168.20.112slave1192.168.20.113slave2 配置就不写了&#xff0c;比较基础&#xff0c;写一下步骤 1.进入mysql配置文件或者其子配置文件&#xff0c;添加server_id,开启gtidgtid_modeON,enforce-gtid-cons…

【C语言】linux内核netif_receive_skb

一、中文注释 /*** netif_receive_skb - 从网络处理接收缓冲区* skb: 要处理的缓冲区** netif_receive_skb() 是主要的数据接收处理函数。* 它总是成功的。由于拥塞控制或协议层的原因&#xff0c;缓冲区可能在处理过程中被丢弃。** 这个函数只能在软中断&#xff08;softirq&…

MATLAB知识点:while-end循环语句

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自​第4章&#xff1a;MATLAB程序流程控制 除了for-end语…

S5---FPGA-K7板级电源硬件实战

视频链接 FPGA-K7板级电源硬件实战01_哔哩哔哩_bilibili FPGA-K7板级电源硬件实战 基于K7 板级的系统框图 2、基于K7 板级的电源设计细则 2.1、K7 FPGA功耗评估 KINTEX-7 FPGA电源有数字电源VCCINT, VCCBRAM, VCCAUX, VCCAUX_IO &#xff0c;VCCO和模拟电源VMGTAVCC ,VMGTAV…

uniapp 项目 浏览器chrome使用vue devtool 识别不了 in not detect

问题 uniapp的项目&#xff0c;vue2&#xff0c; chrome 分析 添加了运行时&#xff0c;指定模板h5.html 指定的h5.html重置了运行根目录&#xff0c;导致了vue dev tool在运行时&#xff0c;chrome上识别不了。 解决&#xff1a; 方法1&#xff1a; 只能调试的时候,不加sati…

AI EARTH——1972-2019全球不透水面30米分辨率产品(GISA-2.0)

1972-2019全球不透水面30米分辨率产品(GISA-2.0) 武汉大学Landsat全球地物识别年度产品前言 – 人工智能教程 时相&#xff1a; 1972-2019 范围&#xff1a; 全球 数据来源&#xff1a; 武汉大学&#xff08;黄昕教授团队&#xff09; 引用代码&#xff1a; dataset …

CRMCHAT修复获取客户ip信息,地区信息

CRMCHAT修复获取客户ip信息&#xff0c;地区信息-TP源码网原因&#xff1a; 因pv.sohu.com/cityjson?ieutf-8接口已无法正确获取ip信息&#xff0c;导致后台站点统计无法正确获取用户ip信息&#xff0c;无法获取地区信息 修改 注释掉无用接口地址 修复ip信息 也可以使用&…

C++惯用法之RAII思想: 资源管理

C编程技巧专栏&#xff1a;http://t.csdnimg.cn/eolY7 目录 1.概述 2.RAII的应用 2.1.智能指针 2.2.文件句柄管理 2.3.互斥锁 3.注意事项 3.1.禁止复制 3.2.对底层资源使用引用计数法 3.3.复制底部资源(深拷贝)或者转移资源管理权(移动语义) 4.RAII的优势和挑战 5.总…

XUbuntu22.04之如何找到.so库所在的软件包?(二百一十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

Jupyter Notebook的安装和使用(windows环境)

一、jupyter notebook 安装 前提条件&#xff1a;安装python环境 安装python环境步骤&#xff1a; 1.下载官方python解释器 2.安装python 3.命令行窗口敲击命令pip install jupyter 4.安装jupyter之后&#xff0c;直接启动命令jupyter notebook,在默认浏览器中打开jupyte…

C/C++ 乘积尾零问题(蓝桥杯)

如下的10行数据&#xff0c;每行有10个整数&#xff0c;请你求出它们的乘积的末尾有多少个零&#xff1f; 5650&#xff0c;4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 9937 1173 6866 3397 4759 7557 3070 2287 1453 9899…

stressapptest源码剖析:主函数main解析和sat类头文件分析

主函数main解析和sat类头文件分析 一、简介二、入口函数main.cc剖析三、SAT压力测试对象接口和数据结构总结 一、简介 stressapptest&#xff08;简称SAT&#xff09;是一种用于在Linux系统上测试系统稳定性和可靠性的工具&#xff0c;通过产生CPU、内存、磁盘等各种负载来测试…

web小游戏,蜘蛛纸牌

H5小游戏源码、JS开发网页小游戏开源源码大合集。无需运行环境,解压后浏览器直接打开。有需要的订阅后,私信本人,发源码,含60+小游戏源码。如五子棋、象棋、植物大战僵尸、贪吃蛇、飞机大战、坦克大战、开心消消乐、扑鱼达人、扫雷、打地鼠、斗地主等等。 <!DOCTYPE h…

智能驾驶规划控制理论学习06-基于优化的规划方法之数值优化基础

目录 一、优化概念 1、一般优化问题 2、全局最优和局部最优 二、无约束优化 1、无约束优化概述 2、梯度方法 通用框架 线性搜索 回溯搜索 3、梯度下降 基本思想 实现流程 ​4、牛顿法 基本思想 实现流程 5、高斯牛顿法 6、LM法&#xff08;Le…

甲类,乙类,甲乙类,D类功放

功率放大器&#xff1a; 简称功放,分为甲类&#xff0c;已类&#xff0c;甲乙类和D类。 首先要认识三极管&#xff0c;三极管最简单的理解为B极向E极流过一个较小的电流的时候&#xff0c;C极可以向E极流过一个较大的电流&#xff0c;而且两个电流之间呈现倍数关系&#xff0…

STM32启动过程及反汇编

STM32从Flash启动的过程&#xff0c;主要是从上电复位到main函数的过程&#xff0c;主要有以下步骤&#xff1a; 1.初始化堆栈指针 SP_initial_sp&#xff0c;初始化 PC 指针Reset_Handler 2.初始化中断向量表 3.配置系统时钟 4.调用 C 库函数_main 初始化用户堆栈&#xf…

Linux网络编程 ——UDP 通信

Linux网络编程 ——UDP 通信 1. UDP1.1 UDP 通信1.2 广播1.3 组播&#xff08;多播&#xff09; 2. 本地套接字 1. UDP 1.1 UDP 通信 输入 man 2 sendto 查看说明文档 #include <sys/types.h> #include <sys/socket.h>ssize_t sendto(int sockfd, const void *buf…

内存安全的编程语言

美国政府新颁布《回归基础构件&#xff1a;通往安全软件之路》 《回归基础构件&#xff1a;通往安全软件之路》中&#xff0c;白宫国家网络主任办公室&#xff08;ONCD&#xff09;呼吁开发者使用「内存安全的编程语言」 内存安全的编程语言 根据NSA的建议&#xff0c;内存…

线程的同步互斥机制3月4日

题目&#xff1a; 代码&#xff1a; #include <stdio.h> #include <pthread.h> #include <string.h> #include <semaphore.h> #include <unistd.h>sem_t sem1,sem2;void* callback1(void*arg) {while(1){if(sem_wait(&sem1)<0) //等待…