2019年江苏省职教高考计算机技能考试——一道程序改错题的分析
题目:函数将str字符串中的5个数字字符串转换为整数,并保存在二维数组m的最后一行,各元素为3、-4、16、18、6。并经函数move处理后,运行结果如下:
18 6 3 -4 16
16 18 6 3 -4
-4 16 18 6 3
3 -4 16 18 6
注意:不得增行或删行,也不得更改程序的结构。
分析:
第1步:先从字符串中把5个数字字符串抽取出来,存放在二维数组m的最后一行。对于这一步,从字符串中抽取5个数字字符串转换为整数比较容易,但将转换后的整数放在数组的最后一行,对于中职生来说有点难度,因为这项工作是通过abstract函数来实现的,这个函数的声明为:
void abstract(char str[],int m[]);
该函数的第一个形参char str[]表示要处理的字符串,第二个形参int m[]是一个一维数组,这与题目中所说的二维数组是不相同的,但在学习二维数组时,教课书中对二维数组介绍时写道:可以将二维数组看作是一维数组的一维数组,即可以将一个二维数组看成是一个特殊的一维数组,这个一维数组的元素又是一个一维数组,即二维数组是由嵌套的一维数组组成。因此,我们仅需把二维数组m的最后一行传递给第二个形参即可。
第2步,执行函数move对二维数组m进行处理,在这步分析时,一定要联想到第1步,即,抽取出来的整数是放在最后一行。针对最后一行我们发现其他各行是下一行向右循环移动一个元素得出的结果。

如果这样分析,就能理解编程的思路,如果没有仔细分析题目,仅看到题目中二维数组各元素的排列,那么,有可能认为二维数组中的元素是按下图所示方法产生的。如果是这样想的,那就无法正确修改题目中的错误。

有了正确的编程思路,再看程序就很容易改正错误了。程序如下:
#include<stdio.h>
#define ROW 4
#define COL 5
void abstract(char str[],int m[]){int i,j,k,sign=1;for(k=j=i=0;str[i];i++) {if(isdigit(str[i])) {if(str[i-1]=='-')sign=-1;k=k*10+str[i]-'0';}
/***********FOUND***********/if(isdigit(str[i])&&str[i+1]!=0){m[j++]=k*sign;sign=1;k=0; }}
}
void move(int m[][COL]){int i,j;for(i=ROW-2;i>=0;i--)for(j=0;j<COL;j++)
/***********FOUND***********/m[i][j]=m[i+1][j+1];
}
int main()
{char str[]="digit3posi-4plus16zero18six6 ";int m[ROW][COL];int i,j;
/***********FOUND***********/abstract(str,m[0]);move(m);for(i=0;i<ROW;i++){for(j=0;j<COL;j++)printf("%4d",m[i][j]);printf("\n");}return 0;
}
先来看主函数main,它所做的工作就是调用abstract函数将字符串中的数字字符串抽取出来转换为整数存放到m的最后一行,然后,调用move对数组m进行处理,最后输出结果。
在main中有个错误点,就是调用abstract,其中的两个实参,一个是str,一个是m[0],其中实参str对应的形参为char str[],符合调用规则。实参m[0]对应的形参为int m[], 也符合调用规则,因为m[0]的类型式int []与形参的类型int []匹配,但题目要求将str中的整数存放在二维数组m的最后一行,因此,需要修改其为m[ROW-1],即将二维数组的最后一行传递给形参m[]。
分析函数abstract。6到11行是从字符串中抽取整数,当遇到数字时要判断该数字的上一个字符是否为'-',如果是,说明这个数是负数,改变sign变量,使其记录正在处理的数的正负号。13到17行的功能是判断如果下一个字符不是数字,当前处理的数结束,并为处理下一个数初始化变量。按此思路,就知道第11行错在哪了,修改第11行为:
if(isdigit(str[i])&& !isdigit(str[i+1])){
如果将第11行改为:
else if(isdigit(str[i-1])) {
是否可行?
请参看文章:C程序训练:程序改错题目分析(2019)
这个答案是错的。
相关文章:
2019年江苏省职教高考计算机技能考试——一道程序改错题的分析
题目:函数将str字符串中的5个数字字符串转换为整数,并保存在二维数组m的最后一行,各元素为3、-4、16、18、6。并经函数move处理后,运行结果如下: 18 6 3 -4 16 16 18 6 3 -4 -4 16 …...
邦芒支招:职场白领必备的10条护身符
在职场生存除了小心驶得万年船,怎样躲过不长眼的办公室风暴,职场八卦及不成为上司利益的牺牲品呢?职场就是个小社会,人际关系说复杂也复杂,说简单也简单。现在送你10道有用的职场护身符,希望你能够通过利…...
python实现飞书群机器人消息通知(消息卡片)
python实现飞书群机器人消息通知 直接上代码 """ 飞书群机器人发送通知 """ import time import urllib3 import datetimeurllib3.disable_warnings()class FlybookRobotAlert():def __init__(self):self.webhook webhook_urlself.headers {…...
网站服务器中毒或是被入侵该怎么办?
随着互联网的普及和发展,网站服务器已经成为企业和个人不可或缺的资源。然而,网络安全问题也日益突出,其中服务器中毒或被入侵是常见的问题之一。一旦服务器中毒或被入侵,不仅会导致数据泄露、网站瘫痪等严重后果,还可…...
Skywalking 学习之ByteBuddy 方法执行时间监控
Skywalking git: GitHub - apache/skywalking: APM, Application Performance Monitoring System 集成入门: 10分钟3个步骤集成使用SkyWalking - 知乎 企业级监控项目Skywalking详细介绍,来看看呀-CSDN博客 下面自己学习了一下ByteBuddy的…...
idea vim配置
"basemap "source $cnfpath/nvim/cnf/basemap.vim """"""""""""""""""""" " 自动设置 """""""""…...
kafka排除zookeeper使用kraft的最新部署方案
kafka在新版本中已经可以不使用zookeeper进行服务部署,排除zookeeper的部署方案可以节省一些服务资源,这里使用 kafka_2.13-3.6.1.tgz 版本进行服务部署。 测试部署分为三个服务器: 服务器名称服务器IP地址test01192.168.56.101test02192.1…...
SQL Server数据库日志查看若已满需要清理的三种解决方案
首先查看获取实例中每个数据库日志文件大小及使用情况,根据数据库日志占用百分比来清理 DBCC SQLPERF(LOGSPACE) 第一种解决方案: 在数据库上点击右键 → 选择 属性 → 选择 文件,然后增加数据库日志文件的文件大小。 第二种解决方案 手动…...
人工智能 | 深度学习的进展
深度学习的进展 深度学习是人工智能领域的一个重要分支,它利用神经网络模拟人类大脑的学习过程,通过大量数据训练模型,使其能够自动提取特征、识别模式、进行分类和预测等任务。近年来,深度学习在多个领域取得了显著的进展&#…...
玩转Java8新特性
背景 说到Java8新特性,大家可能都耳濡目染了,代码中经常使用遍历stream流用到不同的api了,但是大家有没有想过自己也自定义个函数式接口呢,目前Java8自带的四个函数式接口,比如Function、Supplier等 stream流中也使用…...
EasyRecovery2024永久免费版电脑数据恢复软件下载
EasyRecovery数据恢复软件是一款非常好用且功能全面的工具,它能帮助用户恢复各种丢失或误删除的数据。以下是关于EasyRecovery的详细功能介绍以及下载步骤: EasyRecovery-mac最新版本下载:https://wm.makeding.com/iclk/?zoneid50201 EasyRecovery-win…...
QQ音乐新版客户端的音乐无法解密?来看看解决方法!音乐解锁工具Web+批处理版本合集,附常见问题及解决方法!
一、软件简介 一般会员制音乐软件(如某抑云,某鹅,某狗音乐)的歌曲下载后都是加密格式,加密格式的音乐只能在特定的播放器中才能播放,在其他音乐播放器和设备中则无法识别和播放。音乐解锁工具的作用就是将…...
2023年12月CCF-GESP编程能力等级认证C++编程一级真题解析
一、单选题(共15题,共30分) 第1题 以下C++不可以作为变量的名称的是( )。 A:CCF GESP B:ccfGESP C:CCFgesp D:CCF_GESP 答案:A 第2题 C++表达式 10 - 3 * (2 + 1) % 10 的值是( )。 A:0 B:1 C:2 D:3 答案:B 第3题 假设现在是上午十点,求出N小时(正整数…...
如何决定K8S Pod的剔除优先级
在Kubernetes(k8s)中,当节点资源面临压力时,如何决定Pod的优先级是一个关键问题。在Kubernetes 1.8版本之后,引入了基于Pod优先级的调度策略,即Pod Priority Preemption。这种策略允许在资源不足的情况下&a…...
【JavaScript】数据类型
文章目录 1. 数字(Number)2. 字符串(String)3. 布尔(Boolean)4. 对象(Object)5. 数组(Array)6. Undefined 和 Null7. typeof 操作符总结 在 JavaScript 中&am…...
JAVA:单例模式提高性能和安全性的优化技巧
1、简述 单例模式是一种常用的设计模式,用于确保一个类只有一个实例,并提供全局访问点。在 Java 中,单例模式的优化不仅可以提高性能,还可以增强安全性和可维护性。本文将介绍一些关键的技巧和最佳实践,帮助你优化单例…...
如何在 Ubuntu 上安装 ONLYOFFICE 文档 8.0
通过使用社区版,您有能力在您自己的服务器上部署 ONLYOFFICE 文档,从而使在线编辑器与 ONLYOFFICE 协作平台或其他热门系统进行无缝集成。 ONLYOFFICE 文档是什么 ONLYOFFICE 文档是一款全面的在线办公工具,提供了文本文档…...
什么是大模型
目录 让你了解什么是大模型什么是大模型?大模型的应用场景常见的大模型技术实例分析:深度学习语言模型GPT-3 让你了解什么是大模型 大模型(Big Model)是指在机器学习和人工智能领域中处理大规模数据和复杂模型的一种方法或技术。…...
C#在既有数组中插入另一个数组:Array.Copy方法 vs 自定义插入方法
目录 一、使用的方法 1.使用Array.Copy方法 2.Copy(Array, Int32, Array, Int32, Int32) 3. 使用自定义的方法 二、实例 1.示例1:使用Array.Copy方法 2.示例2:使用自定义的方法 一、使用的方法 1.使用Array.Copy方法 首先定义了一个名为InsertAr…...
上位机图像处理和嵌入式模块部署(linux开发板的选择)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 很多图像算法是通过上位机来完成的,比如说工业视觉当中的halcon,一般都是要运行在windows平台上面,并且需要高性…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
