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

本文主要是介绍中小学信息学奥赛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

这篇关于中小学信息学奥赛CSP-J认证 CCF非专业级别软件能力认证-入门组初赛模拟题第一套(阅读程序题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/688950

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏