中小学信息学奥赛CSP-J认证 CCF非专业级别软件能力认证-入门组初赛模拟题第一套(阅读程序题)

CCF认证CSP-J入门组模拟测试题

二、阅读程序题

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

第一题

1 #include<iostream>
2 using namespace std;
3 int a,b,c;
4 int main()
5 {
6 	 cin>>a>>b>>c;
7 	 a = b - a;
8	 b = b - a;
9	 a = b + a;
10	 c = b - a;
11	 cout<<a<<" "<<b<<" "<<c;
12	 return 0;
13 }

程序分析

       这段程序是一个简单的C++程序,它接收三个整数作为输入,并通过一系列的数学运算重新排列这三个数,最后输出这三个数的新值。从数学上看,这个程序的目的是将输入的三个数(a, b, c)重新排列为(b-a, b-a, b-2a)。

判断题

1)、若输入1 2 3,则输出3 2 1

2)、若输入123456789012 2 3,将输出2 123456789012 123456789010

3)、该程序中,头文件#include<iostream>可以改成#include<cstdio>

4)、若输入10,20,30(逗号隔开),符合程序的输入要求

答案:1×  2 ×  3 ×  4 ×

答案分析:

1、从程序分析可以得出输入1 2 3,输出的结果应该是2 1 -1,所以错误

2、输入123456789012,这个超出的int类型的范围,所以错误

3、程序中的cin和cout语句都需要用到iostream,所以不能更改,答案错误

4、cin默认是以空格或者换行符隔开,所以用逗号隔开不符合要求,答案错误

单选题

5)、若输入10 20 30 ,输出

A、20 10 20 

B、20 10 10 

C、20 10 30 

D、20 10 -10

答案:D

答案分析:输入的是10 20 30 ,计算过程如下:

a = b - a = 20 - 10 = 10

b = b - a = 20 - 10 = 10

a = b + a = 10 + 10 = 20

c = b - a = 10 - 20 = -10

s所以最后a = 20,b = 10 ,c = -10,答案D

6)、若将第10行的c = a - b 改成 c = b,则输入3  6 9,输出

A、6 3 6 

B、6 3 9

C、6 3 3

D、3 6 3

答案:C

答案分析:分析计算过程如上,最后得到的结果应该是6 3 3 ,答案C

第二题

1 #include <cstdio>
2 bool pd(long long n)
3 {
4	 if(n==1)
5		 return false;
6	 for(long long i=2;i<n;i++)
7		 if(n%i == 0) return false;
8	 return true;
9 }
10 int main()
11 {
12	  long long n,i,c=0;
13	  int INF = 1 << 30;
14	  scanf("%d",&n);
15	  for(i=2;i<=INF;i++)
16	  {
17		  if(pd(i))
18		  {
19			  c++;
20			  if(c==n)
21			  {
22				  printf("%d",i);
23				  return 0;
24			  }
25		  }
26	  }
27	  printf("\nover");
28	  return 0;
29 }

程序分析

       该段代码要实现的功能是计算第n个质数。程序定义了一个名为pd的函数,该函数用于判断一个给定的长整型数n是否为质数。然后在main函数中,程序从2开始逐一检查每个数字,直到找到第n个质数为止。

判断题

1)、上述代码中,若将第13行修改为INF=1<<40,则输出结果一定不变。

2)、上述代码中,将第23行修改为break或continue这两种情况后,有相同的输人,在这两种情况下,输出结果也一定相同。

3)、上述代码中,将第23行修改为break后,有相同的输入,变量c的值和未修改前一定相同。

4)、上述代码中,将第 23行修改为break后,有相同的输入,输出结果也一定相同。

答案:1 ×  2 √ 3 √  4 ×

答案分析:

1、修改为INF=1<<40,超出了int范围,答案错误

2、程序分析已经很清楚是求第n个质数,所以第23行return 0换成break和continue结果都是一样,答案正确

3、分析和第2题一样

4、如果改成break,会多输出一行over,答案错误

单选题

5)、 输人为:8,输出为

A、17

B、19回车over

C、19

D、23\nover

答案:C

答案分析:第8个质数就是19,答案C

5)、上述代码中,将第6行的i<n 修改为()后功能不变,效率更高

A、i*i<=n

B、i<n/2

C、i<n/3

D、i<n/4

答案:A

答案分析:假如两个数x和y,他们乘积如果能够等于n,那么两个数中最小的那个一定小于等于\sqrt{n},也就是min(x,y)<=\sqrt{n},因此循环变量i能取到的最大值为\sqrt{n}即可,答案A

第三题

1 #include<bits/stdc++.h>
2 using namespace std;
3 int a[100][100];
4 int b[100][100];
5 int f(int m,int n)
6 {
7 	if(m<=0 || n<=0)
8		return 0;
9	a[0][0] = b[0][0];
10	for(int i=1;i<n;i++)a[0][i] = a[0][i-1] + b[0][i];
11	for(int i=1;i<m;i++)a[0][i] = a[i-1][0] + b[i][0];
12	for(int i=1;i<m;i++)
13	{
14		for(int j=i;j<n;j++)
15		{
16			a[i][j] = min(a[i-1][j],a[i][j-1]+b[i][j]);
17		}
18	}
19	return a[m-1][n-1];
20 }
21 int main()
22 {
23	int m,n;
24	cin >> m >> n;
25	for(int i=0;i<m;i++)
26	{
27		for(int j=0;j<n;j++)
28			cin>>b[i][j];
29	}
30	cout<<f(m,n);
31	return 0;
32 }

程序分析

这个程序计算了一个给定的m x n矩阵b中从左上角到右下角的最小路径和,其中只能向右或向下移动。这是一个典型的动态规划问题,并且此代码正确地实现了该问题的解决方案。

判斯题

1) 上述代码实现了对一个长度为mxn的二维数组寻找每一行上的最小值进行求和

2) 上述代码如果删除第4行,其他地方的b数组都改成a数组,那么结果不变

答案:1× 2√ 

答案分析:本见上面程序分析,可知第一题并不是每一行上最小值求和,而是最小路径求和,所以错误;而第二题如果删除第4行并将所有b数组引用更改为a数组引用,结果将保持不变;这样a数组即使输入数组,也是动态规划中的结果数组,所以正确。

单选题

3)若输人数据为:
4 4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
则输出的结果为

A、28

B、16

C、136

D、46

答案:D

答案分析:输入的是一个4*4的二维数组,如下所示

1  2  3  4
5  6  7  8 
9  10 11 12 
13 14 15 16

由于程序是求最小路径之和,只能向下或者向右走,所以经过的路径为:1 2 3 4 8 12 16,所以最终和值为46,答案D

4)上述代码的时间复杂度为

A、O(min(m,n))

B、O(2nm+m+n)

C、O(nm)

D、O(2nm)

答案:C

答案分析:因为程序中出现2次嵌套for循环,所以总的时间复杂度是 O(m * n),因为每个位置 (i, j) 只被访问一次。这意味着算法的时间复杂度是线性的,与矩阵的大小(即行数和列数的乘积)成正比,而时间复杂度是不允许出现常数,所以答案C

5)我们将上述算法称为

A、深度搜索

B、广度搜索

C、动态规划

D、贪心算法

答案:C

答案分析:这是一个典型的最小路径和问题的动态规划解法,在这个例子中,动态规划被用来逐步构建到达每个位置的最小路径和,最终得到从左上角到右下角的最小路径和;答案C

6)上述代码若删除第4行,其他地方的b数组都改成a数组,输人数据为:
3 3
1 2 3 4 5 6 7 8 9
则输出的结果为

A、20

B、12

C、11

D、21

答案:D

答案分析:分析和第三题一样,经过的路径为:1 2 3 6 9,所以答案D

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

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

相关文章

【C++】内存五大区详解

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

Kotlin基本语法1到函数

1.range表达式 fun main() {var age 12.3if (age in 0.0..3.3){println("婴幼儿")}else if (age in 4.0..12.2){println("少儿")}else{println("未知")}/*** in 后面还可以接 list set 都可以*/if (age !in 0.0..3.3){println("婴幼儿&quo…

UE4运用C++和框架开发坦克大战教程笔记(十八)(第55~57集)

UE4运用C和框架开发坦克大战教程笔记&#xff08;十八&#xff09;&#xff08;第55~57集&#xff09; 55. UI 进入退出动画HideOther 面板出现时隐藏其他面板添加面板出现和收起的动画效果编写遮罩管理器前的准备 56. 弹窗进入界面57. UI 显示隐藏与遮罩转移完善遮罩管理器 55…

【C++】static静态关键字

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

C# CAD2016 多边形顶点按方向重新排序

多边形顶点按方向重新排序 初始化多边形顶点集合 outerPoints 创建一个名为 outerPoints 的 List<Point2d>&#xff0c;用于存储多边形的所有顶点坐标。 计算多边形顶点集合的边界框&#xff08;BoundingBox&#xff09; 使用LINQ的Aggregate方法遍历整个outerPoints列表…

【C++】中的 inline 用法

1、引入 inline 关键字的原因 在 c/c 中&#xff0c;为了解决一些频繁调用的小函数大量消耗栈空间&#xff08;栈内存&#xff09;的问题&#xff0c;特别的引入了 inline 修饰符&#xff0c;表示为内联函数。 栈空间就是指放置程序的局部数据&#xff08;也就是函数内数据&a…

SpringBoot+Vue3 完成小红书项目

简介 该项目采用微服务架构&#xff0c;实现了前后端分离的系统设计。在前端&#xff0c;我们选择了 Vue3 配合 TypeScript 和 ElementUi 框架&#xff0c;以提升开发效率和用户体验。而在后端&#xff0c;则是运用 SpringBoot 和 Mybatis-plus 进行开发&#xff0c;保证了系统…

使用word2vec+tensorflow自然语言处理NLP

目录 介绍&#xff1a; 搭建上下文或预测目标词来学习词向量 建模1&#xff1a; 建模2&#xff1a; 预测&#xff1a; 介绍&#xff1a; Word2Vec是一种用于将文本转换为向量表示的技术。它是由谷歌团队于2013年提出的一种神经网络模型。Word2Vec可以将单词表示为高维空间…

JS逆向进阶篇【去哪儿旅行登录】【上篇】

目标url: aHR0cHM6Ly91c2VyLnF1bmFyLmNvbS9wYXNzcG9ydC9sb2dpbi5qc3A 实现难点&#xff1a; 逆向滑块请求发送短信登录 目录 每篇前言&#xff1a;0、前置技术栈&#xff08;1&#xff09;JS实现页面滑动&#xff08;2&#xff09;JS实现记录滑动轨迹&#xff08;3&#xff…

SAP MM学习笔记42 - 特殊调达流程 - 受托品(寄售)

上一章讲了 外注加工的知识。 详细可以参考如下链接。 SAP MM学习笔记41 - 特殊调达流程 - 外注加工-CSDN博客 咱们继续学习特殊调达流程。 本章主要讲受托品。 1&#xff0c;什么是受托品 &#xff08;寄售&#xff09; 仕入先提供的商品&#xff0c;商品是放在你公司了&a…

一周学会Django5 Python Web开发-Django5 Hello World编写

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计14条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

java SSM新闻管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM新闻管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S…

《Java 简易速速上手小册》第8章:Java 性能优化(2024 最新版)

文章目录 8.1 性能评估工具 - 你的性能探测仪8.1.1 基础知识8.1.2 重点案例&#xff1a;使用 VisualVM 监控应用性能8.1.3 拓展案例 1&#xff1a;使用 JProfiler 分析内存泄漏8.1.4 拓展案例 2&#xff1a;使用 Gatling 进行 Web 应用压力测试 8.2 JVM 调优 - 魔法引擎的调校8…

智能汽车行业产业研究报告:4D成像毫米波雷达—自动驾驶最佳辅助

今天分享的是智能汽车系列深度研究报告&#xff1a;《智能汽车行业产业研究报告&#xff1a;4D成像毫米波雷达—自动驾驶最佳辅助》。 &#xff08;报告出品方&#xff1a;开源证券&#xff09; 报告共计&#xff1a;43页 视觉感知最佳辅助——4D 成像毫米波雷达 感知是自动…

【Python】window环境使用venv部署jupyter notebook

基础信息 执行winr&#xff0c;在输入框输入powershell: python版本&#xff1a;python -v 创建并激活虚拟环境 1、进入要创建虚拟环境的目录&#xff0c;操作示例如下&#xff1a; PS C:\Users\Administrator> cd D:\Python\weltest 2、创建虚拟环境&#xff0c;操作示…

BUGKU-WEB GET

题目描述 没有提示&#xff0c;就一个get&#xff0c;启动场景看看&#xff1a; 解题思路 显然是PHP语言解读分析代码吧写出你的payload 相关工具 略 解题步骤 进入场景分析代码 $what$_GET[what]; echo $what; if($whatflag) echo flag{****};前两句&#xff1a;使用get…

2024年最新指南:如何订阅Midjourney(详尽步骤解析)

前言&#xff1a; Midjourney是一个基于人工智能的图像生成工具&#xff0c;它使用高级算法来创建独特和复杂的图像。这个工具能够根据用户输入的文字描述生成对应的图片。Midjourney的特点在于它能够处理非常抽象或者具体的描述&#xff0c;生成高质量、富有创意的视觉内容。M…

Flaurm实现中文搜索

目录 摘要需求本文涉及环境情况如下解决方案最终效果文章其他链接&#xff1a; 摘要 Flarum本身对中文支持并不理想&#xff0c;但随着版本更新&#xff0c;逐渐加强了对中文的优化。然而在1.8.5版本&#xff0c;却还是不支持中文搜索网站文章内容。作者在检索了全网教程&#…

数模.SI模型SI的四种扩展

一&#xff1a;最简单的考虑方式 二考虑某种使得参数beta降低的因素 三&#xff1a;增加人口自然出生率和死亡率&#xff0c;但不考虑疾病的死亡率 四&#xff1a;不考虑人口自然出生率和死亡率&#xff0c;只考虑疾病的死亡率 五&#xff1a;同时考虑人口自然出生率和死亡率和…

kali系统概述、nmap扫描应用、john破解密码、抓包概述、以太网帧结构、抓包应用、wireshark应用、nginx安全加固、Linux系统加固

目录 kali nmap扫描 使用john破解密码 抓包 封装与解封装 网络层数据包结构 TCP头部结构​编辑 UDP头部结构 实施抓包 安全加固 nginx安全 防止缓冲区溢出 Linux加固 kali 实际上它就是一个预安装了很多安全工具的Debian Linux [rootmyhost ~]# kali resetkali …