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

news2025/1/23 22:26:17

CSP-J入门组初赛模拟题第三套

二、阅读程序题

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

第一题

1 #include<iostream>
2 #include<cstdio>
3 using namespace std;
4 int i,j,n;
5 int x[101],y[101];
6 int main ()
7 {
8	cin>>n;
9	for(i=1;i<=n;i++)cin>>x[i];
10	for(i=1;i<=n-1;i++)
11		for(j=i+1;j<=n;j++)
12			if( x[i]>x[j])
13				y[j]++;
14			else if(x[i]<x[j])
15				y[i]++;
16	for(i=1;i<=n;i++)
17		printf("%5d ",y[i]);
18	cout<<endl;
19	return 0;
20}

程序分析

主要考查小朋友们读写程序能力和逻辑思维能力,此程序主要是实现了一个计数排序的算法。先输入一个整数n,表示接下来要输入n个整数,然后依次将这n个整数存入数组x中。然后使用两个嵌套的循环遍历数组x,比较x[i]和x[j]的大小,如果x[i]>x[j],则y[j]的值加1,表示在x[j]后面有多少个数比它小;如果x[i]<x[j],则y[i]的值加1,表示在x[i]后面有多少个数比它大。最后输出数组y中的元素。

判断题

1)、把第13行与第15 行互换位置,结果不会改变

2)、第14 行把 if( x[i]<x[j])删掉效果一样。

3)、第11行把i+1改成1,数组y每个元素的值增加1倍。

4)、数组y[i]中存的是x[i]在数列中从大到小的次序

答案:1 × 2 × 3 √ 4 ×

答案分析:

1、y数组中记录的是大于当前元素的个数,如果交换结果就反了,所以错误

2、删掉效果不一样,因为还有相等的情况,所以错误

3、如果改成1,比较过的数据会在下次数据进行比较时候重复计算

4、y数组中只记录了比当前索引对应元素大的次数,但是最后并没有进行排序,所以严格来说错误

单选题

5)、此程序的时间复杂度是

A、O(\log_{2}n)

B、O(n\log_{2}n)

C、O(n^{2})

D、O(n)

答案:C

答案分析:因为程序中有一个嵌套for循环,所以是n的平方,所以答案C

6)、此程序如果n输入4,然后输人2 4 1 3,输出结果是

A、1 2 3 4

B、2 0 3 1

C、4 3 2 1

D、1 3 0 2

答案:B

答案分析:根据程序分析可以得出y数组中存的是比当前索引对应元素大的个数,比2大的又4和3,也就是2,所以答案B

第二题

1 #include<iostream>
2 #include<cstdio>
3 using namespace std;
4 int n,i,x;
5 int d[11];
6 int main()
7 {
8	cin>>n;
9	for(i=1;i<=n;i++)
10	{
11		cin>>x;
12		d[x]=d[x]+1;
13	}
14	d[0]=0;
15	for(i=1;i<=10;i++)
16		d[i]=d[i-1]+d[i];
17	for(i=1;i<=10;i++)
18		if(d[i]!=d[i-1])
19			printf("%3d:%4d_",i,d[i-1]+1);
20	return 0;
21}

程序分析

主要考查小朋友们读写程序能力和逻辑思维能力,此程序是一个统计输入数字出现次数的程序。

主要思路:

  1. 输入一个数字n,表示接下来要输入n个数字;
  2. 用数组d[11]来记录每个数字出现的次数,数组下标表示数字,数组值表示该数字出现的次数;
  3. 循环n次,输入每个数字x,并将d[x]的值加1;
  4. 初始化d[0]=0;
  5. 循环10次(i从1到10),将d[i]的值更新为d[i-1]+d[i],即将前i个数字出现的总次数存储在d[i]中;
  6. 再次循环10次,如果d[i]不等于d[i-1],则输出i和d[i-1]+1

判断题

1)、输入x的只应在[0,n-1]的范围内

2)、把第12行改成“d[x]++”,不影响程序运行结果

3)、对任意在[1,9]之间的数i,都有 d[i-1]<d[i]<d[i+1]

4)、把第18行改成“if(d[i]>d[i-1])”,程序运行的结果会发生改变

答案:1 × 2 √ 3 × 4 ×

答案分析:

1、从程序中可以看出d数组是一个全局数组,大小为11,所以能接受的范围应该是[0-10],所以错误

2、d[x]++和12行d[x]=d[x]+1 在这里是等价的,所以正确

3、当某个数没有输入的时候,这时候d数组对应的这个下标的值和前一个是一样的

4、d数组中存的数前一个数要么是小于后一个数要么是一样大,所以改成大于是可以的,结果不变

单选题

5)、 输人n=10后,接着输人:1 3 4 3 5 2 4 3 5 2后,程序输出结果为

A、1:1 2:2 3:3 4:2 5:3

B、1:1 2:2 3:4 4:7 5:9

C、1:0 2:1 3:2 4:1 5:2

D、1:1 2:2 3:3 4:4 5:5

答案:B

答案分析:从程序分析可以得出,前一个是对应的数字i,后一个是比数字i小的数字出现的次数累加,具体分析如下:

当i=1,输出的是d[0]+1,d[0]=0,所以输出1;

i=2,输出的是d[1]+1,而d[1]=d[0]+1出现的次数=0+1=1,所以输出2;

i=3,输出的是d[2]+1,而d[2]=d[1]+2出现的次数=2+2=4,所以输出4;

所以答案B

6)、把程序第19行改成“print("%3d",i);"后,输人n=10后,接着输人:1 3 4 1 5 4 4 3 5 1后,程序输出结果为

A、1 2 3 4 5

B、3 2 3 2

C、4 3 4 3

D、1 3 4 5

答案:D

答案分析:改成上面输出语句后,由于输入数字里面没有数字2,所以数组d[2]=d[1],2就不会输出,所以答案D

第三题

1 #include<iostream>
2 #include<cstdio>
3 using namespace std;
4 int j,i,m;
5 int a[10];
6 int main()
7 {
8	for(i=2;i<=6;i++)
9		a[i]=i+1;
10	do
11	{
12		m=2;
13		for(i=3;i<=6;i++)
14			if(a[m]>a[i])m=i;
15		a[m]=a[m]+m;
16		m=1;
17		
18		for(i=2;i<=5;i++)
19			for(j=i+1;j<=6;j++)
20				if(a[i]<a[j])m=0;
21	}while(m==0);
22	printf("%d",a[2]);
23	return 0;
24}

程序分析

主要考查小朋友们读写程序能力和逻辑思维能力,该程序的目标是通过循环和比较操作,得到数组中a[2]的值。具体的算法逻辑是通过do-while循环,将数组中的元素进行加法和比较,直到满足一定的条件后跳出循环,并输出a[2]的值。

  1. 在do-while循环的开始,数组a[i]的初始值为{0, 0, 3, 4, 5, 6, 7}。
  2. 在每次循环中,m被赋值为2,然后对于i从3到6,如果a[m]>a[i],就将m更新为i。由于a[2]等于3,所以在第一次循环时,m不会更新。
  3. 接下来,a[m]被更新为a[m]+m,即a[3]=3+2=5。此时,数组a[i]变为{0, 0, 5, 4, 5, 6, 7}。
  4. 然后,在两个嵌套的for循环中,会检查a[i]是否小于a[j],如果是,则将m更新为0。由于a[2](即5)小于 a[5](也是6),所以m被更新为0。
  5. 然后继续循环,直到m不等于0后退出循环;

判斯题

1) 程序结束时,a[2]的值一定是数组a中的最大值

2) 第 21行“m==0”成立时,数组a[i](2≤i≤6)从大到小排序

3) 程序输出时,a数组满足:对任意的2≤i<6,有a[i]>a[i+1]

4) 删除第16行代码“m=1"程序结果会发生改变

答案:1 √ 2 × 3 × 4 ×

答案分析:

1、结束的时候a[2]及后面的元素都是一样大的,为61,所以正确

2、从程序分析可以看出当m==0成立时,数组a[i](2≤i≤6)并没有从大到小排序,所以错误

3、程序最后输出时,应该是a[i]<=a[i+1],所以错误

4、删除m=1并不会影响程序结果,因为m=1赋值在后续循环里面一直么有用到,一直都是被重新赋值为0

单选题

5) 程序的输出结果为(

A、58

B、59

C、60

D、61

答案:D

答案分析:在每次a[2]都是加2,开始又是3所以排除AC,最后输出的时候a[2]到a[6]的值都是61,答案D

6) 此程序的时间复杂度是

A、O(n{3})

B、O(n\log n)

C、O(n{2})

D、O(n)

答案:A

答案分析:因为程序是三重循环,所以应该是立方,答案A

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

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

相关文章

第 124 场 LeetCode 双周赛题解

A 相同分数的最大操作数目 I 模拟 class Solution { public:int maxOperations(vector<int> &nums) {int n nums.size();int s nums[0] nums[1];int res 1;for (int i 2; i 1 < n; i 2)if (nums[i] nums[i 1] s)res;elsebreak;return res;} };B 进行操作…

kali无线渗透之蓝牙技术

“传统蓝牙”规范在2.4GHz的ISM波段上定义了79个信道&#xff0c;每个信道有1MHz的带宽。设备在这些信道中以每秒1600次的频率进行跳转&#xff0c;换句话说&#xff0c;就是每微秒625次跳转。这项信道跳转技术被称为“跳频扩频”(Frequency HoppingSpread Spectrum&#xff0c…

文件上传漏洞--Upload-labs--Pass06--空格绕过

一、什么是空格绕过 在Windows系统中&#xff0c;Windows特性会自动删除文件后缀名后的空格&#xff0c;这使我们看 .php 和 .php 二者没有任何区别&#xff0c;实际上二者是有区别的。若网页源码没有使用 trim()函数 来进行去除空格的操作&#xff0c;就会使网页存在 空格绕…

尾矿库排洪系统结构仿真APP助力尾矿库本质安全

1、背景介绍 尾矿库作为重大危险源之一&#xff0c;在国际灾害事故排名中位列第18位&#xff0c;根据中国钼业2019年8月刊《中国尾矿库溃坝与泄漏事故统计及成因分析》的统计&#xff0c;在46起尾矿库泄漏事故中&#xff0c;由于排洪设施导致的尾矿泄漏事故占比高达1/3&#x…

基于SSM+Vue的电影购票系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

springboot176基于Spring Boot的装饰工程管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

SG5032EAN规格书

SG5032EAN 晶体振荡器结合了相位锁定环&#xff08;PLL&#xff09;技术和AT切割晶体单元&#xff0c;提供了73.5 MHz至700 MHz的广泛频率范围&#xff0c;以满足高速数字应用的需求。高性能的LV-PECL输出&#xff0c;2.5V和3.3V电源电压&#xff0c;可灵活适配不同设计的电源需…

keep-alive 的简单使用

vue-router 的嵌套与模块化 router 实例中增加 children 属性&#xff0c;形成层级效果。App.vue 中的 router-view 承载的是 router 实例最外层的路由对象&#xff0c;如 /login、/404 等PageHome.vue 中的 router-view 承载的是 children 中的路由对象&#xff0c;如 /home、…

效果图渲染为什么找「瑞云渲染」瑞云渲染邀请码WFQB

效果图的渲染可以通过个人的电脑&#xff0c;也可以通过第三方的云渲染平台&#xff0c;两者之间的区别很多人都知道是什么。如果用户需要使用个人电脑&#xff0c;通常需要搭配高性能的硬件&#xff0c;然而硬件中最贵的当数CPU、GPU&#xff0c;云渲染平台则是通过租用高配置…

【漏洞复现-通达OA】通达OA get_datas 存在前台SQL注入漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA get_datas 存在前台SQL注入漏洞,攻击者可通过该漏洞获取数据库敏感信息。 二、影响版本 ●…

Acwing 5471. 数对推理【思维+模拟】

原题链接&#xff1a;https://www.acwing.com/problem/content/5474/ 题目描述&#xff1a; 奶牛贝茜和奶牛贝蒂各有一个整数数对。 每个数对都包含两个 1∼9 之间的不同整数。 这两个数对恰好包含一个公共数&#xff0c;即恰好有一个整数同时包含于这两个数对。 初始时&a…

SPSSAU【文本分析】|社会关系网络图

社会网络关系图 社会网络关系图展示关键词之间的关系情况&#xff0c;此处的关系是指‘共词矩阵’&#xff0c;即两个关键词同时出现的频数情况&#xff0c;将‘共词矩阵’信息使用可视化方式进行呈现出来&#xff0c;接下来将分别阐述‘共词矩阵’和‘社会网络关系图’。 共词…

idea 2018.3永久简单激活。激活码

1.打开hosts文件将 0.0.0.0 account.jetbrains.com 添加到文件末尾 C:\Windows\System32\drivers\etc\hosts 2.注册码&#xff1a; MNQ043JMTU-eyJsaWNlbnNlSWQiOiJNTlEwNDNKTVRVIiwibGljZW5zZWVOYW1lIjoiR1VPIEJJTiIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaW…

禁止电子邮箱地址登录WordPress后台的插件No Login by Email Address

WordPress 4.5及之后的版本增加了使用注册用户的电子邮件地址代替用户名登录的功能&#xff0c;但是大多数个人站长的管理员邮箱地址都是固定&#xff0c;而且到其他站点进行评论留言也是同一个邮箱地址&#xff0c;很容易给一些别有用心的可乘之机&#xff0c;所以禁止WordPre…

黑马鸿蒙教程学习1:Helloworld

今年打算粗略学习下鸿蒙开发&#xff0c;当作兴趣爱好&#xff0c;通过下华为那个鸿蒙开发认证&#xff0c; 发现黑马的课程不错&#xff0c;有视频和完整的代码和课件下载&#xff0c;装个devstudio就行了&#xff0c;建议32G内存。 今年的确是鸿蒙大爆发的一年呀&#xff0c;…

蝶阀、球阀、阀门百科

一、D71X是蝶阀的型号其中D 就代表了蝶阀,7 代表是对夹式链接,1代表这个蝶阀是中线结构,x就是密封面材质为橡胶。结合起来D71X表示的就是手柄对夹中线蝶阀。 二、J41H-100C型号字母含义介绍 J41H-100C型号是德特森阀门常用的高压截止阀型号字母代表的意思是: J——代表阀门类…

秒懂百科,C++如此简单丨第二十一天:栈和队列

目录 前言 Everyday English 栈&#xff08;Stack&#xff09; 图文解释 实现添加删除元素 实现查看清空栈 完整代码 运行示例 栈的选择题 队列&#xff08;Queue&#xff09; 图文解释 队列的基本用法 完整代码 运行结果 队列的好处 结尾 前言 今天我们将…

自定义类型详解 ----结构体,位段,枚举,联合

目录 结构体 1.不完全声明 2.结构体的自引用 3.定义与初始化 4.结构体内存对齐与结构体类型的大小 结构体嵌套问题 位段 1.什么是位段&#xff1f; 2.位段的内存分配 枚举 1.枚举类型的定义 2.枚举的优点 联合&#xff08;共同体&#xff09; 1.联合体类型的声明以…

ChatGPT的大致原理

国外有个博主写了一篇博文&#xff0c;名字叫TChatGPT: Explained to KidsQ」&#xff0c; 直译过来就是&#xff0c;给小孩子解释什么是ChatGPT。 因为现实是很多的小孩子已经可以用父母的手机版ChatGPT玩了 &#xff0c;ChatGPT几乎可以算得上无所不知&#xff0c;起码给小孩…

数控测量|一文读懂在机检测与机床校准补偿系统

在制造业领域&#xff0c;为了确保产品质量和工艺精确度&#xff0c;在机检测与机床校准补偿系统被广泛应用于机床领域。 原理解析 在机检测与机床校准补偿系统由精密测量仪器、信息处理设备和控制系统组成。 机床校准补偿基于有限元分析和反馈控制理论。对机床进行检测和测量…