2023江苏职教高考计算机技能考试--填空题解析

/*---------------
【程序填空】
-----------------
题目:验证任意一个大于1的正整数都可以找到
一串连续奇数,它们的和等于该整数的立方。
例如:4的立方等于64,64=1+3+5+7+9+11+13+15程序运行结果如下:3的立方等于27, 27=7+9+114的立方等于64, 64=1+3+5+7+9+11+13+156的立方等于216, 216=7+9+11+13+15+17+19+21+23+25+27+29
------------------------------------------------------------------------
注意:在填空标志处填写答案,并删除填空标志,勿改动程序中的其他部分。
----------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <string.h>int check(int n)
{int i,j,k,sum,p;k=n*n*n;for(i=1; i<k/2; i+=2){j=i;
/*************SPACE************/for(sum=0;【?】;j=j+2)sum=sum+j;if(sum==k)return i;}if(i>=k/2) printf("error!");        
}int main(void)
{int s[3]= {3,4,6};int i,sum,cu,p;for(i=0; i<3; ++i){p = check(s[i]);cu = s[i]*s[i]*s[i];printf("%d的立方等于%d,\t%d=",s[i],cu,cu);sum=p; 
/*************SPACE************/while(【?】){printf("%d+",p);p+=2;sum+=p;}printf("%d\n",p);}return 0;
}

答案:

=======(答案1)=======

sum<k

k>sum

sum<n*n*n

n*n*n>sum

=======(答案2)=======

sum!=cu

sum<cu

cu>sum

cu!=sum

s[i]*s[i]*s[i]!=sum

sum!=s[i]*s[i]*s[i]

s[i]*s[i]*s[i]>sum

sum<s[i]*s[i]*s[i]

解析:

这个序列数肯定能找到,下面证明。

假设s为大于1的奇数,可找到一个数p=s*s,以p为中点,在p的左右两各找(s-1)/2个连续的奇数,这s个奇数分别为:p-s+1, p-s+3, …, p-2, p, p+2, …,  p+s-1。例如,设s=7, p=s*s=49, 以49为中点,在49左边找3个连续奇数分别是43、45、47,在49的右边找3个连续奇数分别是51、53、55,这7个连续的奇数之和等于7的立方。

(p-s+1) + … +  (p-2) + p + (p+2) + … + (p+s-1) = s*p=s^3

同理,假设s为大于1的偶数,找到第一个数p=(s*s-2s+2)/2,然后依次找出2s-1个奇数,则这2s个奇数之和等于s的立方。

p+(p+2)+...+(p+2s-2)=2sp+2s*s-2s

=s(s*s-2s+2)+2s*s-2s = s*s*s

由此证明可知check函数会正常返回结果。

问题

1. 第1个空,如果填写【sum!=k && j<k/2】,这个答案正确吗?另外,只要能设置一个能结束循环的条件,都能让程序找出正确的结果,比如【sum!=k && j<k】。但在阅卷时,答案是否正确依据的是程序的逻辑是否正确,显然,第1个答案是正确的,但第2个答案是错误的,因为它与第35行的逻辑冲突。

2. 第2个空,如果填写【sum+p<cu】对吗?从逻辑上说,答案是正确的。

3. 这道题存在的问题。

(1) 两个空的答案太相似,如果考生懂一个,另一个也懂。

(2) 35行语句无用且不完整,假使条件成立,它除了输出”error"然后返回什么呢?完整的语句应该是:

if(i>=k/2) {printf("error!");  exit(1);
}

条件成立,直接输出“error",然后结束程序的运行。

/*-----------
【程序填空】
-------------
题目:整型数组s中有N个正整数,程序将数组按升序排列。程序运行结果如下:
原数组为:61 87 34 40 69 64 58 98 22 84
排序后数组为:22 34 40 58 61 64 69 84 87 98------------------------------
注意:在填空标志处填写答案,并删除填空标志,勿改动程序中的其他部分。
----------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <string.h>
#define N 10
int main()
{int i,j,x,s[N]= {61,87,34,40,69,64,58,98,22,84};printf("原数组为:\n" );for(i=0; i<N; i++)printf("%3d", s[i]);i=N-2;while(i>=0){x=s[i];j=i+1;/******SPACE*********/while(s[j]<x&& 【?】){s[j-1]=s[j];j++;}/*****SPACE*********/s[【?】] =x;i--;}printf("\n排序后数组为:\n" );for(i=0; i<N; i++)printf("%3d", s[i]);printf("\n");return 0;
}

答案:

=======(答案1)=======

j<N

N>j

j<=N-1

N-1>=j

=======(答案2)=======

j-1

-1+j

--j

解析:

本题采用插入排序方法对无序数进行排序,但其排序方法与平时学的方法有点不一样,差别就是平时我们把第一个元素看作是有序序列,然后从第2个元素开始到最后一个元素,依次将它们插入到有序表中。本题是假定最后一个元素是有序的,然后从倒数第二个元素开始到第一个元素,依次插入到有序表中。如果对算法熟悉,这个题不难。

问题

第1个空,如果填写【s[j+1]!=0】对否?这个答案肯定不对,原因是程序运行时系统或正常运行结束,或出现异常,完全由系统运行环境决定。因为当i的值为N-2时,31行的j被赋值为N-1,33行若s[j]<x,那么要判断s[j+1]!=0,但j+1等于N,对于数组s来说,数组越界,在以后的判断中,若x总是比已排序的数据都大,总会遇到j+1等于N,所以这个答案存在风险!在我们调试程序时,若在该数组之后正好是0时,程序运行结果正确,否则程序运行结果就是错误的。

为了验证这个答案是错的,可以再设两个数组s1[1]={1}和s2[1]={2},将其放在s数组两侧,然后运行。下面是在Dev C++中调试的结果。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <string.h>
#define N 10
int main()
{int i,j,x,s1[1]={1},s[N]= {61,87,34,40,69,64,58,98,22,84},s2[1]={2}; printf("原数组为:\n" );for(i=0; i<N; i++)printf("%3d", s[i]);i=N-2;while(i>=0){x=s[i];j=i+1;/******SPACE*********/while(s[j]<x&& s[j+1]!=0){s[j-1]=s[j];j++;}/*****SPACE*********/s[j-1] =x;i--;}printf("\n排序后数组为:\n" );for(i=0; i<N; i++)printf("%3d", s[i]);printf("\n");return 0;
}

程序运行结果如下:

图片

显然,程序运行结果是错的。

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

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

相关文章

linux磁盘,分区,挂载等等

1. 修改磁盘分区的标签 例如&#xff1a;733be18b-7baf-d84c-879d-ca3db465f179太长了&#xff0c;修改一下。 linuxchenxiao:/media/linux/733be18b-7baf-d84c-879d-ca3db465f179$ 先 sudo blkid sudo blkid 找到你想修改的UUID(唯一标识符) /dev/sda1: UUID"733be…

Pytorch从零开始实战17

Pytorch从零开始实战——生成对抗网络入门 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——生成对抗网络入门环境准备模型定义开始训练总结 环境准备 本文基于Jupyter notebook&#xff0c;使用Python3.8&#xff0c;Pytorch1.8cpu&#xf…

8.2摆动序列(LC376-M)

算法&#xff1a; 其实动态规划和贪心算法都能做 但是动态规划的时间复杂度是O(n^2) 贪心算法的时间复杂度是O(n) 所以学习贪心算法 到底为什么用贪心&#xff1f;&#xff08;分析局部最优和全局最优&#xff09; 局部最优&#xff1a;删除单调坡度上的节点&#xff08;不…

第一篇【传奇开心果系列】beeware开发移动应用:轮盘抽奖移动应用

系列博文目录 beeware开发移动应用示例系列博文目录一、项目目标二、开发传奇开心果轮盘抽奖安卓应用编程思路三、传奇开心果轮盘抽奖安卓应用示例代码四、补充抽奖逻辑实现五、开发传奇开心果轮盘抽奖苹果手机应用编程思路六、开发传奇开心果轮盘抽奖苹果手机应用示例代码七、…

如何配置Pycharm服务器并结合内网穿透工具实现远程开发

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…

vue路由-全局前置守卫

1. 介绍 详见&#xff1a;全局前置守卫网址 使用场景&#xff1a; 对于支付页&#xff0c;订单页等&#xff0c;必须是登录的用户才能访问的&#xff0c;游客不能进入该页面&#xff0c;需要做拦截处理&#xff0c;跳转到登录页面 全局前置守卫的原理&#xff1a; 全局前置…

KubeSphere 核心实战之二【在kubesphere平台上部署redis】(实操篇 2/4)

文章目录 1、登录kubesphere平台2、redis部署分析3、redis容器启动代码4、kubesphere平台部署redis4.1、创建redis配置集4.2、创建redis工作负载4.3、创建redis服务 5、测试连接redis 在kubesphere平台上部署redis应用都是基于redis镜像进行部署的&#xff0c;所以所有的部署操…

2022-ECCV-Adaptive Face Forgery Detection in Cross Domain

一、研究背景 1.伪造视频是逐帧生成的&#xff0c;因此会造成时间维度上的伪影。而鲁棒的检测模型需要对同一身份的不同帧有一致的检测结果。 1.利用频率线索进行deepfake检测效果良好&#xff0c;但也会导致帧间不一致问题&#xff0c;即不同帧检测结果不同。 2.以往方法中固定…

【JavaScript】面向后端快速学习 笔记

文章目录 JS是什么&#xff1f;一、JS导入二、数据类型 变量 运算符三、流程控制四、函数五、对象 与 JSON5.1 对象5.2 JSON5.3 常见对象1. 数组2. Boolean对象3. Date对象4. Math5. Number6. String 六、事件6.1 常用方法1. 鼠标事件2. 键盘事件3. 表单事件 6.2 事件的绑定**1…

【咕咕送书 | 第八期】羡慕同学进了大厂核心部门,看懂这本书你也能行!

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 写在前面参与规则 ✅参与方式&#xff1a;关注博主、点赞、收藏、评论&#xff0c;任意评论&#xff08;每人最多评论…

VMware虚拟机设置NAT网络模式

查看本地服务器网卡ip10.9.158.77 设置vmNet8虚拟网卡ip10.9.58.177&#xff0c;不需要在同一网段 3.点击VMware设置“虚拟网络编辑器”&#xff0c;点击“NAT设置”所有设置的ip网段需要与第二步的VMNet8网卡的网一致

算法 动态分析 及Java例题讲解

动态规划 动态规划&#xff08;英语&#xff1a;Dynamic programming&#xff0c;简称 DP&#xff09;&#xff0c;是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的&#xff0c;通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适…

day-15 按分隔符拆分字符串

思路 依次对words的每个字符进行split(),然后将非空的加入List 解题方法 String arr[]s.split(ss);利用split()方法将words的每个字符串划分为String数组 if(arr[i]!“”) //将非空的加入 list.add(arr[i]); String ss“”separator; //使用转义字符 时间复杂度&#xff1a;…

HCIA——18实验:NAT

学习目标&#xff1a; NAT 学习内容&#xff1a; NAT 1.要求——基本的 2.模型 3.IP分配、规划、优化 1&#xff09;思路 R2为ISP路由器&#xff0c;其上只能配置ip地址&#xff0c;不得冉进行其他的任何配置—ospf配置 认证 、汇总、沉默接口、加快收敛、缺省路由 PC1-PC2…

制动盘市场分析:预计2029年将达到123亿美元

制动系统是高速列车动车组九大关键技术之一&#xff0c;制动性能的好坏将直接影响列车的行车安全及运行品质。制动系统按照操纵控制方式&#xff0c;主要分为电制动和空气制动。通常情况下&#xff0c;电制动和空气制动联合作用&#xff0c;但是在紧急制动情况下&#xff0c;只…

蓝桥杯备战 每日一题 (2)

今天的题目是回忆迷宫 这个题目我们来熟悉一下 弗洛伊德算法 的代码模板 弗洛伊德算法用来处理最短路径问题 弗洛伊德算法&#xff08;Floyd’s algorithm&#xff09;用于解决图中所有节点对之间的最短路径问题。算法的基本思路是通过逐步迭代更新节点对之间的最短路径长度&a…

Windows系统使用手册

点击前往查看&#x1f517;我的博客文章目录 Windows系统使用手册 文章目录 Windows系统使用手册Windows10解决大小核调度问题Windows系统安装软件Windows系统Typora快捷键Windows系统压缩包方式安装redisWindows安装dockerWindows系统的docker设置阿里源Windows系统下使用doc…

美颜SDK功能设计:定制化美颜滤镜的应用与开发教学

当下&#xff0c;美颜SDK成为开发者们追逐的焦点之一。然而&#xff0c;如何设计具有个性化特色的美颜滤镜&#xff0c;不仅能够满足用户的需求&#xff0c;还能够在激烈的市场竞争中脱颖而出&#xff0c;成为了一项技术上的挑战。 一、定制化美颜滤镜的重要性 为什么我们需要…

【迅搜19】扩展(二)TNTSearch和JiebaPHP方案

扩展&#xff08;二&#xff09;TNTSearch和JiebaPHP方案 搜索引擎系列的最后一篇了。既然是最后一篇&#xff0c;那么我们也轻松一点&#xff0c;直接来看一套非常有意思的纯 PHP 实现的搜索引擎及分词方案吧。这一套方案由两个组件组成&#xff0c;一个叫 TNTSearch &#xf…

Linux多线程——互斥锁

本质Gitee仓库:互斥锁、锁封装 文章目录 1. 线程互斥2. 互斥锁2.1 锁的初始化与释放2.2 加锁与解锁 3. 锁的原理4. 锁的封装5. 线程安全与可重入函数 1. 线程互斥 一个共享资源在被多个线程并发访问的时候&#xff0c;可能会出现一个线程正在访问&#xff0c;而另一个线程又来…