计算机二级 C程序设计(2020B场)全解

A选项:C语言中,一共有3种结构。分别是顺序结构、选择结构(else-if语句)、循环结构(for、while语句)。因此,C语言具有结构化特征。

B选项:不仅能解决简单问题,3种基本结构能够解决所有问题。复杂问题需要三种基本结构的结合使用;链表、二叉树等是程序的实现思想,而非程序的实现结构。

C选项:使用goto语句,程序员可以从程序的一个部分无条件跳转到另一个部分,这种跳转使得程序的流程不再是自顶向下的顺序流,而是变成了难以预测的跳跃流,大大破坏了程序的结构性。 在复杂的程序中,过多的goto语句会使得程序的执行流程变得极为复杂,导致程序难以理解和维护。 结构化编程提倡的是通过循环、条件判断等结构化的流程控制来管理程序的流程,这有助于保持程序的清晰和条理,也便于其他开发人员阅读和理解。

D选项:程序自顶向下运行,因此采用自顶向下的程序设计方法是最优的。

             逐步细化的例子:循环语句里内嵌多条选择语句,不断地加强程序健壮性。

标识符:在编程语言中,标识符是用户编程时使用的名字,变量、常量、函数、语句块都有名字。是用来标识某个实体的一个符号,是对变量名、函数名、标号和其他各种用户定义的对象命名。

C语言中标识符的命名规范:

  • 1.标识符由字母、数字、下划线组成,并且首字母不能是数字。
  • 2.不能把C的关键字作为用户的标识符,例如:if、for、while等。(注:标识符不能和C语言的关键字相同,也不能和用户自定义的函数或C语言库函数同名)
  • 3.标识符长度是由机器上的编译系统决定的,一般的限制为8字符,(注:8字符长度限制是C89标准,C99标准已经扩充长度,其实大部分工业标准都更长)。
  • 4.标识符对大小写敏感,即严格区分大小写。

(x+1)已经可以看作是常数3,++或--的算子只能是变量,若是常数即报错。

注:其他3个选项都是做了一定的计算后,进行了赋值操作。*= 会自动给赋值号右边的表达式加上一个括号。

通过高中知识,我们不难得出:(x-y)的区间在 (-10,10)。因此B选项正确,C选项错误。

C选项代表的是|x-y|>10的情况。

 

代码段功能:s为a即i=1,s为b即i=2,s为a、b以外的字符i保持未定义状态。

A、C、D选项:假设s为c,那么i=2,与代码段功能不同。

未进循环语句,因此循环0次。 

这个C语言程序中定义了一个函数fun,它有一个静态局部变量a,初始值为3。静态局部变量在函数第一次被调用时初始化,并在后续的函数调用中保持其值。

程序的main函数中,首先调用fun(k),此时k的值为1,因此a的值变为3 + 1 = 4,并且fun函数返回4。

接着,程序再次调用fun(m),此时m的值为2,但由于a是静态变量,它的值仍然是上一次调用fun时的值,即4。因此,a的值变为4 + 2 = 6,并且fun函数返回6。

最后,程序输出变量n的值,此时n的值为6。

因此,程序的输出结果是6,选项C是正确的。

C语言中,只有在初始化时可以对字符串数组进行代码端的赋值;赋值时可以是字符组成的数组形式,也可以是字符串字面量形式。并且初始化时可以不声明数组的大小,编译器会自行判断。因此A、B错误,D对。

C中要将str2的数据全部存入str1,需要用到strcpy函数;初始化以后要从程序端输入program这串字符需要使用getchar、gets或者scanf函数。

突发奇想的问题:

问题1:getchar、gets和scanf函数的区别是?

答:

  • getchar 用于读取单个字符,包括空白字符。函数无参数,可以通过 str[i] = getchar() 的方式来输入(结合循环语句,循环退出条件为遇见 '\0')。
  • gets 用于读取一行字符串,直到遇到换行符停止。函数参数为某个字符串数组。
  • scanf 可以读取不同类型的数据,包括整数、浮点数、字符和字符串。它使用格式字符串来指定输入的格式。对于字符串,scanf 会读取直到遇到空白字符(空格、制表符或换行符)为止。函数参数为某个字符串数组。

问题2:为什么对于scanf函数来说,输入字符串时,字符串数组不需要加上取地址符号?

答:对于整型数组,其元素都是整型,即使数组本身可以看作是一个指向整型的指针(例如arr[0]可以看作指针指向数组第一个元素),但因为想要通过函数来改变实参(scanf是库函数中的一员),那么就需要传整型数据的地址(&arr[0])。

       而对于字符串数组来说,其元素都是指向字符的指针(例如 'a',实际上是指向a的指针),所以不需要再加上取地址操作了。

在这段代码中,我们首先定义了一个整型数组 a,它包含10个元素,并且使用初始化列表来初始化这些元素。然后,我们定义了两个指针 p1p2,其中 p1 被初始化为指向数组 a 的第一个元素,而 p2 被初始化为指向数组 a 的第六个元素(索引为5)。

代码中的 printf 语句输出的是指针 p2p1 之间的差值。在C语言中,两个同类型指针相减得到的是它们之间的元素数量,而不是字节数。因此,p2 - p1 计算的是 p2p1 之间有多少个数组元素。

由于 p1 指向数组的第一个元素(索引为0),而 p2 指向数组的第六个元素(索引为5),它们之间的元素数量是 5 - 0 = 5

因此,正确的输出值是 5,选项 D 是正确的。

s的next搞成NULL,p往下走一个结点,p的下一个结点搞成data为30的那个。

 

传参时,数组名表示的是数组首元素。

由于gets函数会读取直到遇到换行符,因此应该使用strlen(s)来获取字符串s的长度,然后遍历到字符串的末尾。所以填空(1)的答案是strlen(s)

在C语言中,使用%s来表示字符串的格式占位符,所以填空(4)的答案是"%s"

第一处:因为宏定义是直接替换文本,而非赋值。因此无需等号。

              1.e-8 是科学计数法中10^(-8) 的表示方法,C语言同样支持科学计数法的表达方式。

第二处:前面定义了distance是float型数据,因此在使用scanf输入distance数据时,类型声明应该保持float型。

第三处:此处还需要进行不同情形的细化(即仍然需要有判断语句的出现),因此使用else if。

 

第一处:函数提前声明时,需要给到参数的类型。

第二处:题设中提到了最后一项的绝对值要小于1.e-5;然而原代码中,循环的进入条件是最后一项小于等于1.e-5,颠倒过来即可。

第三处(送分处,当然是我把分数送给出题老师啦 w v w):本处错误需要对照题设中的泰勒级数数字规律来进行修改。

        分子上,泰勒级数的数字规律为前后两项分别都有2个x,同时前后两项需要相乘,即 x*x*x*x;此外,我们可以发现 t 上分子已经有2k个x相乘(k>=1,k∈Z),所以就可以把 t 依然视作一个分数,与数学规律分式相乘;而数学规律分式的分子处使用 x*x。

        分母上,泰勒级数的数字规律是公差为1的等差级数(例如2!、3!、4!、……)。

 

第一、第二处:结构体声明需要加上名字;不加上0就处于未初始化的状态,有不满足需求的风险。

第三处:数组下标从0开始算,到4结束而非5。

第四处:结构体数组使用有问题。

 

#include <stdio.h>int main(void)
{int num1,num2,num;printf("请输入一个长度为2的正整数:");scanf("%d",&num);num1=num/10;num2=num%10;if(num1==1){switch(num2){case 1:printf("A楼干垃圾"); break;case 2:printf("A楼湿垃圾"); break;case 3:printf("A楼可回收垃圾"); break;case 4:printf("A楼有害垃圾"); break;default:printf("输入的整数不是有效标签!");}	}else if(num1==2){switch(num2){case 1:printf("B楼干垃圾"); break;case 2:printf("B楼湿垃圾"); break;case 3:printf("B楼可回收垃圾"); break;case 4:printf("B楼有害垃圾"); break;default:printf("输入的整数不是有效标签!");}}else{printf("输入的整数不是有效标签!");}return 0;
}

#include <stdio.h>int main(void)
{char ch[100];printf("请输入0和1组成的字符串:\n");scanf("%s",ch);int i,count=0;for(i=0;ch[i];i++){if(ch[i]=='1'){count++;}}if(count%2==1){ch[i]='1';ch[i+1]='\0';}if(count%2==0){ch[i]='0';ch[i+1]='\0';}printf("%s",ch);return 0;
}

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

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

相关文章

WPF MVVM如何在ViewModel直接操作控件对象

早些年在WPF中使用COM组件时&#xff0c;需要在ViewModel中操作COM组件中的控件对象&#xff0c;但是这个控件对象又不支持绑定&#xff0c; 后面的解决办法是在窗口加载时&#xff0c;将控件对象以参数传递到Loaded事件的处理命令中&#xff0c;然后将这个对象记录下来&#…

Ubuntu 18.04升级gclibc为2.28版本

一、查看系统支持的 GLIBC 版本号 ​strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_出现以下&#xff0c;说明到2.27版本&#xff0c;没有2.28版本&#xff0c;所以我们需要手动安装 GLIBC_2.2.5 GLIBC_2.2.6 GLIBC_2.3 GLIBC_2.3.2 GLIBC_2.3.3 GLIBC_2.3.4 GLIBC_…

Docker入门笔记

Docker 文章目录 Docker1. 下载 &#xff08;centos&#xff09;2. 部署 MySQL3. 常用命令4. 数据卷5. 自定义镜像6. Java 项目部署 1. 下载 &#xff08;centos&#xff09; 卸载旧版 yum remove docker \docker-client \docker-client-latest \docker-common \docker-lates…

84、 k8s的pod基础+https-harbor

一、pod基础&#xff1a; pod进阶&#xff1a;探针&#xff08;面试必问—扩缩容&#xff0c;挂载&#xff09; 1.1、pod的定义 pod是k8s里面的最小单位&#xff0c;pod也是最小运行容器的资源对象。 容器时基于pod在k8s集群当中工作。 在k8s集群当中&#xff0c;一个pod就…

第二阶段:机器学习经典算法-02决策树与随机森林-1.决策树概述

该视频主要讲述了决策树与随机森林算法的基本概念和构造过程。决策树是一个树形结构&#xff0c;用于进行一系列的决策&#xff0c;可以用于分类和回归问题。随机森林算法是基于决策树的集成学习算法&#xff0c;通过构建多棵决策树并结合它们的预测结果来提高分类准确率。视频…

asp.net core web api项目添加自定义中间件

前言 在asp.net core web api项目中&#xff0c;默认提供了很多的中间件&#xff0c;比如访问静态文件中间件UseStaticFiles&#xff0c;跨域配置中间件UseCors&#xff0c;路由中间件UseRouting,身份验证中间件UseAuthentication。 那么如何添加一些自定义的中间件呢。 需求…

java SpringBoot 使用ijpay对接微信支付-商家转账到零钱

使用的maven版本&#xff1a;2.9.11 由于ijpay中提供的实体类没有设置回调参数的属性&#xff0c; 这里是自定义一个实体类:InitiateBatchTransferRequest代码如下&#xff1a; package com.foo.web.controller.pay.wxpay;import com.ijpay.wxpay.model.v3.TransferDetailInput…

【办公软件】Excel如何开n次方根

在文章&#xff1a;【分立元件】电阻的基础知识中我们学习电阻值、电阻值容差标注相关标准。知道了标准将电阻值标准数列化。因此电阻值并非1Ω、2Ω、3Ω那样的整数&#xff0c;而是2.2Ω、4.7Ω那样的小数。 这是因为电阻值以标准数(E系列)为准。系列的“E”是Exponent(指数)…

react vant 在使用dialog.confirm取消报错 Uncaught (in promise) undefined

项目场景&#xff1a; 在使用react做移动端开发时&#xff0c;需要使用Dialog.confirm确认框来做弹框选项&#xff0c;这是在操作中非常常用的一种场景。 问题描述 在列表中&#xff0c;使用弹框时&#xff0c;点击取消时&#xff0c;语法报错&#xff1b;导致后面再触发弹框…

【RabbitMQ之一:windows环境下安装RabbitMQ】

目录 一、下载并安装Erlang1、下载Erlang2、安装Erlang3、配置环境变量4、验证erlang是否安装成功 二、下载并安装RabbitMQ1、下载RabbitMQ2、安装RabbitMQ3、配置环境变量4、验证RabbitMQ是否安装成功5、启动RabbitMQ服务&#xff08;安装后服务默认自启动&#xff09; 三、安…

作业0903

1.封装栈 #include <iostream>using namespace std;class myStack { private:int size; // 大小int capacity;int *ptr;int top; // 栈顶下标 public:// 无参构造函数myStack():size(0), top(-1), capacity(10) {ptr new int[capacity];}// 有参构造函数myStack(in…

Linux Debian12使用flameshot或gnome-screenshot和ImageMagick垂直合并多张图片后组成一张滚动长图

在发布博客&#xff0c;有时需要滚动截长图&#xff0c;虽然在windows系统有滚动截长图的工具&#xff0c;例如&#xff1a;FastStone Capture等&#xff0c;但是Linux Debian系统&#xff0c;这种滚动截长图的工具没有找到合适的。经过自己筛选验证&#xff0c;发现Linux Debi…

基于Bert-base-chinese训练多分类文本模型(代码详解)

目录 一、简介 二、模型训练 三、模型推理 一、简介 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是基于深度学习在自然语言处理&#xff08;NLP&#xff09;领域近几年出现的、影响深远的创新模型之一。在BERT之前&#xff0c;已…

Allure报告下载不同格式的文件

支持类型&#xff1a; class AttachmentType(Enum):def __init__(self, mime_type, extension):self.mime_type mime_typeself.extension extensionTEXT ("text/plain", "txt")CSV ("text/csv", "csv")TSV ("text/tab-sep…

搭建 xxl-job 调度中心

文章目录 1、初始化“调度数据库”2、修改“调度中心”配置3、打包运行”调度中心“ 1、初始化“调度数据库” 请下载项目源码并解压&#xff0c;获取 “调度数据库初始化SQL脚本” 并执行即可。 “调度数据库初始化SQL脚本” 位置为&#xff1a;/xxl-job/doc/db/tables_xxl_j…

【Qt】QLCDNumber | QProgressBar | QCalendarWidget

文章目录 QLCDNumber —— 显示数字QLCDNumber 的属性QLCDNumber 的使用 QProgressBar —— 进度条QProgressBar 的属性创建一个进度条修改为 红色的进度条 QCalendarWidget —— 日历QCalendarWidget 的属性QCalendarWidget 的使用 QLCDNumber —— 显示数字 QLCDNumber 的属…

C++基础多态

目录 学习内容&#xff1a; 1. 多态 1.1 多态的实现 1.2 函数重写&#xff08;override&#xff09; 1.3 虚函数 1.4 使用多态实现的实例 1.5 虚函数的底层实现 1.6 重载&#xff08;voerload&#xff09;、重写&#xff08;override&#xff09;和隐藏&#xff08;h…

DeepWalk【图神经网络论文精读】笔记

链接: DeepWalk【图神经网络论文精读】_哔哩哔哩_bilibili [内容总结::] - deep walk 解决图嵌入问题&#xff1a;将结点压缩成低维向量随机游走&#xff08;类似NLP生成句子&#xff09; 优点与缺点: 相关学习资料 - word2vec 开山必读论文 - DeepWalk 论文阅读 - 代…

若楠带你初识OpenCV(1)-- 视频、图片基础处理,颜色获取

文章目录 OpenCV一、核心功能二、初识OpenCV1. 安装OpenCV2. 读取图片3. 读取灰度图4. 图片保存5. 视频文件读取6. 区域截取7. 提取RGB通道颜色8. 合并颜色通道 总结 OpenCV OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学…

MES 系统中工艺管理--工艺指令管理

一.生产系统柔性&#xff0c;高复用性需求。 工艺路线---------生产线 工序------工位 工艺指令-----具体工步 二.工艺指令分类 1、工艺要求支持配置指令、站点后在过点时&#xff0c;自动调用指令执行。物料、工步、人员作为预留设置&#xff1b; 2、指令主要分ABCD四类&…