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

news2024/9/24 1:24:18
/*---------------
【程序填空】
-----------------
题目:验证任意一个大于1的正整数都可以找到
一串连续奇数,它们的和等于该整数的立方。
例如:4的立方等于64,64=1+3+5+7+9+11+13+15

程序运行结果如下:
      3的立方等于27, 27=7+9+11
      4的立方等于64, 64=1+3+5+7+9+11+13+15
      6的立方等于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.coloradmin.cn/o/1397770.html

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

相关文章

Vue四个阶段,八个钩子函数

- 创造阶段&#xff1a;创建Vue实例和初始化数据事件&#xff0c;数据代理&#xff0c;监测watch - beforeCreate&#xff0c;只是创建实例&#xff0c;不能this.$el,this.msg,this.方法名&#xff08;&#xff09; - created&#xff0c;数据代理了&#xff0c;能v…

上位机编程:CP56Time2a格式精讲

Cp56Time2a介绍&#xff1a; Cp56Time2a是西门子PLC&#xff08;可编程逻辑控制器&#xff09;中用于时间数据传输的一种特殊格式&#xff0c;主要用于PCS7和基于TCP/IP的S7通信过程中。这种时间格式主要为了确保在不同的系统和设备之间进行精确的时间同步。 Cp56Time2a格式&a…

CodeReview 小工具

大家开发中有没有遇到一个版本开发的非常杂&#xff0c;开发很多个项目&#xff0c;改动几周后甚至已经忘了自己改了些什么&#xff0c;领导要对代码review的时候&#xff0c;理不清楚自己改过的代码&#xff0c;只能将主要改动的大功能过一遍。这样就很容易造成review遗漏&…

力扣日记1.19-【二叉树篇】538. 把二叉搜索树转换为累加树

力扣日记&#xff1a;【二叉树篇】538. 把二叉搜索树转换为累加树 日期&#xff1a;2023.1.19 参考&#xff1a;代码随想录、力扣 ps&#xff1a;因为准备组会汇报又搁置了好久&#xff08;其实就是懒逃避T^T)&#xff0c;但这是最后一道二叉树啦啊啊啊&#xff01;&#xff01…

calloc与realloc和malloc的区别以及new

目录 calloc、realloc 和 malloc 三个函数的区别在于 更详细的示例代码 交叉使用 内存泄漏 悬空指针 内存重叠 new 的语法 使用 new 运算符在堆上创建学生对象的示例 new和malloc都可以用于在堆上分配内存 calloc、realloc 和 malloc 是 C/C 中用于动态内存分配的函…

PrestaShop购物系统 SQL注入漏洞复现(CVE-2023-30150)

0x01 产品简介 PrestaShop 是一个功能丰富,基于 PHP5 开发的 Web2.0 网上购物系统。PrestaShop 具有可定制,稳定等特点。整个系统只有 5.8MB,易于快速安装。 0x02 漏洞概述 PrestaShop 的部分主题中使用Leo Custom Ajax模块拓展,Leo Custom Ajax模块中可以在/modules/le…

ValueError: Unable to read workbook: could not read strings from data.xlsx解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

RNN:Long Short-term Memory(中)

目录 1 LSTM 的简图 2 LSTM 的整体结构 2.1 结构图 2.2 流程图 3 举个例子 3.1 简单看看 3.2 代入 LSTM 4 Original Network v.s. LSTM 5 细看 LSTM 原视频&#xff1a;李宏毅 2020&#xff1a;Recurrent Neural Network (Part I) 1 LSTM 的简图 LSTM 实际…

css3+javaScript实现一个左右钟摆-摇晃的红灯笼网页特效

css3javaScript实现一个左右钟摆-摇晃的红灯笼网页特效&#xff01;前天逛博客时无意中看见了&#xff0c;别人的博客顶部有一个会左右钟摆的摇晃的红灯笼&#xff0c;产生了想法&#xff0c;我也想给自己做一个&#xff0c;但是网上找了很多方案&#xff0c;都没有实现。终于在…

教您如何下载保存钉钉视频到电脑本地

教您如何下载保存钉钉视频到电脑和手机相册地瓜网络技术 大家好&#xff0c;我们这边是地瓜网络技术&#xff01;30秒教会你下载钉钉视频&#xff01;现在很多群管理员把视频设置为禁止下载&#xff0c;导致我们无法正常的下载群直播回放视频&#xff0c; 今天我们就教大家如何…

第十二篇【传奇开心果系列】Ant Design Mobile of React开发移动应用:内置组件实现酷炫CSS 动画

Ant Design Mobile of React 开发移动应用示例博文系列 第一篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:从helloworld开始 第二篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:天气应用 第三篇【传奇开心果系列】Ant Design Mobile of Reac…

flutter获取地理定位:geolocator依赖详细用法

本文使用geolocator插件实现app物理定位功能。 该插件的主要功能有&#xff1a; 获取最后已知位置&#xff1b;获取设备当前位置&#xff1b;获取连续的位置更新&#xff1b;检查设备是否启用了定位服务&#xff1b;计算两个地理坐标之间的距离&#xff08;米&#xff09;&am…

linux网络协议栈2--网络包接收发送流程

上文我们讲了报文格式&#xff0c;应该对数据传输格式有了一定了解&#xff0c;这篇文章主要讲述的是网络包接收和发送的流程&#xff0c;主要是大方面来介绍。 网络包接收流程 当网络数据帧通过网络传输到达网卡时&#xff0c;网卡会将网络数据帧通过DMA的方式放到环形缓冲区…

Flutter轮播图Banner

使用插件&#xff1a;flutter_swiper 实现轮播图 pubspec.yaml 增加 &#xff1a;flutter_swiper : ^lastest_version 在项目文件夹下打开命令行执行&#xff1a;flutter packages get 安装插件 home_page.dart中使用swiper 程序运行:先启动虚拟设备后&#xff0c;执行命令f…

【C语言】linux内核ipoib模块 - ipoib_send

一、ipoib_send函数定义 int ipoib_send(struct net_device *dev, struct sk_buff *skb,struct ib_ah *address, u32 dqpn) {struct ipoib_dev_priv *priv ipoib_priv(dev);struct ipoib_tx_buf *tx_req;int hlen, rc;void *phead;unsigned int usable_sge priv->max_sen…

redis数据安全(一)数据持久化

一、Redis数据安全措施: 1、将数据持久化至硬盘 2、将数据复制至其他机器&#xff1b; 复制是在数据持久化的基础上进行的。 二、将数据持久化至硬盘 1、介绍&#xff1a;Redis是一个基于内存的数据库&#xff0c;它的数据是存放在内存中&#xff0c;内存有个问题就是关闭…

大模型 RAG 面试篇

1.LLMs 存在模型幻觉问题&#xff0c;请问如何处理&#xff1f; 检索LLM。 先用问题在领域数据库里检索到候选答案&#xff0c;再用LLM对答案进行加工。 2.基于LLM向量库的文档对话 思路是怎么样&#xff1f; 加载文件读取文本文本分割文本向量化问句向量化在文本向量中匹配…

构建高效外卖系统:技术实践与代码示例

外卖系统在现代社会中扮演着重要的角色&#xff0c;为用户提供了便捷的用餐解决方案。在这篇文章中&#xff0c;我们将探讨构建高效外卖系统的技术实践&#xff0c;同时提供一些基础的代码示例&#xff0c;帮助开发者更好地理解和应用这些技术。 1. 技术栈选择 构建外卖系统…

Python爬虫从入门到入狱系列合集

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

【Qt5】QString的成员函数chop

2024年1月19日&#xff0c;周五下午 QString 的 chop 方法用于从字符串的末尾移除指定数量的字符。这个方法会修改原始字符串&#xff0c;并返回 void。 下面是一个简单的示例&#xff1a; #include <QString> #include <QDebug>int main() {QString originalStr…