拒绝摆烂!C语言练习打卡第五天

news2024/12/25 9:16:19

🔥博客主页:小王又困了

📚系列专栏:每日一练

🌟人之为学,不日近则日退 

❤️感谢大家点赞👍收藏⭐评论✍️

 


目录

一、选择题

📝1.第一题 

📝2.第二题

📝3.第三题

二、编程题

📝1.第一题 

📝2.第二题


🗒️前言:

在前面我们学习完C语言的所以知识,当然练习巩固也不能落下。俗话说:“无财之谓贫,学而不能行之谓病。”可见实践对我们学习的重要。接下来就让小王带着大家进行练习,巩固我们C语言的学习。

一、选择题

📝1.第一题 

请指出以下程序哪步有错误【多选】( )

void GetMemory(char** p, int num)
{
    if (NULL == p && num <= 0)//1
    {
        return;
    }
    *p = (char*)malloc(num);
    return;
} 

int main()
{
    char* str = NULL;
    GetMemory(&str, 80); //2
    if (NULL != str)
    {
        strcpy(&str, "hello"); //3
        printf(str); //4
    } 
    return 0;
}

💡解题思路:

  • 代码1错误:通过观察代码我们可以知道这个函数的功能是要动态开辟空间,num 是开辟空间的大小不能为0,p 是二级指针不能为空指针,这两个条件有一个不满足,程序就会出错,所以应该使用 || 。
  • 代码2正确:在代码2中传入 str 的地址,在语句 char*str=NULL;中str初始化为空指针,但是 str 指针变量也有地址,所以 p 保存的是指针变量 str 的地址,所以调用GetMemory函数之后,动态开辟的空间的地址存放在了str中。
  • 代码3错误:这里是要进行字符串的拷贝,要传递的是字符串的地址,而这里使用了&符号,传递的是地址的地址,所以是错误的。

📝2.第二题

已知 i,j 都是整型变量,下列表达式中,与下标引用 X[i][j] 不等效的是【多选】( )

A、*(X[i]+j)    B、*(X+i)[j]     C、*(X+i+j)        D、*(*(X+i)+j)

💡解题思路:

X [ i ][ j ]表示取二维数组的第 i 行,第 j 列

  • A选项:在二维数组中X[ i ]表示的是第 i 行首元素的地址,再加 j,表示找到第 i 行的第 j 个元素的地址,在解引用就可以找到这个元素啦。
  • B选项:我们知道数组名是首元素的地址所以 X 是二维数组第一行的地址,加 i 找到第 i 行,这里要注意 ()、[] 的优先级比 * 的优先级高,所以 * 最后执行。由 arr[i]=*(arr+i),可得 *(*( (X+i)+j) ),这样是错误的。
  • C选项:X是二维数组的数组名,数组名相当于第一行的地址,X+i+j,跳过了i+j行,就越界了,也是错误的。
  • D选项:*(X+i) 等价于 X[ i ], *(X[ i ]+j) 就等价于 X[ i ][ j ]。

📝3.第三题

下面这个程序执行后会有什么错误或者效果【多选】( )

#define MAX 255
int main()
{
    unsigned char A[MAX], i;
    for (i = 0; i <= MAX; i++)
    {
        A[i] = i;
    }
	return 0;
}

 💡解题思路:

  • 我们通过观察代码可以看到数组的大小为255,所以它的下标是 0-254,i<=MAX 条件都满足,i=255,进入循环 A[255]=i 会出现越界访问。
  • A是无符号字符型,它的取值范围是 0-255,255在加1时,就会变成0重新循环,所以程序会陷入死循环

二、编程题

📝1.第一题 

💡解题思路:

我们要统计连续1的个数,使用一个计数器,当遇到连续的1时就++,遇到0时,将计数器清0,重新记录连续1的个数。每次连续的个数记录起来,与上一次的比较,如果当前的个数大于之前的个数就替换,如果不大于就不替换,最终就可以得到最大连续1的个数。

int findMaxConsecutiveOnes(int* nums, int numsSize)
{
    int count = 0;
    int max = 0;
    for (int i = 0; i < numsSize; i++)
    {
        if (nums[i] == 1)
        {
            count++;
        }
        else
        {
            count = 0;
        }
        if (count > max)
        {
            max = count;
        }
    }
    return max;
}

📝2.第二题

 💡解题思路:

我们遍历数组中的每个元素,数组元素的绝对值为几,就把数组第几个元素置为负数,也就是n-1下标的元素。因为数组的元素是1~n,下标的元素是0~n-1。

abs函数是对整数进行取绝对值。因为对一个位置加两个负号,就会变成正数,所以要取绝对值。

 

int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize)
{
    *returnSize = 0;
    int* new = (int*)malloc(sizeof(int) * numsSize);

    for (int i = 0; i < numsSize; i++)
    {
        //把(元素-1)作为下标
        int index = abs(nums[i]) - 1;
        //将下标对应的值置为负数
        //这里取绝对值是防止对重复的位置置为负数
        nums[index] = -abs(nums[index]);
    }
    for (int i = 0; i < numsSize; i++)
    {
        if (nums[i] > 0)
        {
            new[*returnSize] = i + 1;
            (*returnSize)++;
        }
    }
    return new;
}

本次的内容到这里就结束啦。希望大家阅读完可以有所收获,同时也感谢各位读者三连支持。文章有问题可以在评论区留言,博主一定认真认真修改,以后写出更好的文章。你们的支持就是博主最大的动力。

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

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

相关文章

论文复现--关于yolov8在姿态估计方面的研究

分类&#xff1a;动作捕捉 github地址&#xff1a;https://github.com/ultralytics/ultralytics 所需环境&#xff1a; Windows10&#xff0c;CUDA11.6&#xff0c;conda 4.13.0&#xff0c;Visual Studio 2017&#xff1b; 目录 环境搭建Conda list使用测试 环境搭建 # 创建环…

企业出海营销:如何借助HubSpot将潜在用户引导为忠实客户

在全球化的商业环境中&#xff0c;企业出海营销已成为实现可持续增长的重要策略之一。然而&#xff0c;成功吸引潜在客户并将其转化为忠实客户并非易事。 这正是HubSpot这款强大的综合性平台发挥作用的时候&#xff0c;它不仅帮助企业引导潜在客户进入销售漏斗&#xff0c;还在…

PyQty5—第一课:安装及简单的界面设计(附代码)

在日常办公中我们将经常使用的代码与PyQty5进行配合&#xff0c;从而设计出GUI的小程序&#xff0c;这样不经界面好看而且可以进行打包&#xff0c;发给自己的亲朋好友们进行使用&#xff0c;那么今天我们就来进行PyQty5的第一节课 1、首先我们需要安装PyQty5的库 库名安装si…

Jmeter压测 —— 动态数据关联

在进行压测时&#xff0c;经常需要对一些动态的数据进行数据关联。要不然容易造成脚本回放失败&#xff0c;或者多个虚拟用户执行时&#xff0c;只有一个用户运行成功。如下图&#xff1a;未关联数据时&#xff0c;脚本参数及回放结果 因此&#xff0c;在进行压测时&#xff0c…

opencv 进阶15-检测DoG特征并提取SIFT描述符cv2.SIFT_create()

前面我们已经了解了Harris函数来进行角点检测&#xff0c;因为角点的特性&#xff0c;这些角点在图像旋转的时候也可以被检测到。但是&#xff0c;如果我们放大或缩小图像时&#xff0c;就可能会丢失图像的某些部分&#xff0c;甚至有可能增加角点的质量。这种损失的现象需要一…

纯js封装一个弹出窗口

先上效果图&#xff1a; 左图是默认的样式(默认标题是黑色的。不是橙色的。截图时我改了点东西所以变了色。。。)。右图是通过传递参数自定义了外观的样式。 封装实现&#xff1a; function showWindow() {this.rnd Math.random();this.obj null;this.title ;this.content …

NER(命名实体识别)的介绍与使用--附源码

概述 本文将向您简要介绍命名实体识别,这是一种用于识别文本文档中存在的实体的流行方法。本文针对 NLP 领域的初学者。在本文末尾,已经实现了预训练的 NER 模型来展示实际用例。 为什么是NER? 图1 通过观察上

排序算法之详解选择排序

引入 选择排序顾名思义是需要进行选择的&#xff0c;那么就要问题了&#xff0c;选择到底是选择什么呢?选择排序的选择是选择数组中未排序的数组中最小的值&#xff0c;将被选择的元素放在未排序数组的首位 如果你对 ‘未排序数组’ &#xff0c; ‘选择’ 的概念不理解&#…

C++中机器人应用程序的行为树(ROS2)

马库斯布赫霍尔茨 一、说明 以下文章为您提供了对机器人应用程序或框架中经常使用的行为树的一般直觉&#xff1a;ROS&#xff0c;Moveit和NAV2。了解行为 Tress &#xff08;BT&#xff09; 框架的原理为您提供了在游戏领域应用知识的绝佳机会。BT可以与Unity或Unreal集成。 由…

淘宝有哪些值得抓取的数据?通过API可以获取到哪些数据?

淘宝是中国最大的在线购物平台&#xff0c;有丰富的数据可供抓取。以下是一些值得抓取的数据以及通过API可以获取到的数据&#xff1a; 1. 商品信息&#xff1a;包括商品标题、价格、销量、评价等。 2. 店铺信息&#xff1a;包括店铺名称、店铺信用、开店时间等。 3. 物流信…

java测试抽红包接口概率《搬代码》

1.首先我们进行抽红包概率测试的时候&#xff0c;为了测试抽取红包的概率完全正确。个人建议不使用线程池多线程执行&#xff0c;建议直接使用for循环执行 2.我们调取抽红包接口返回的信息值进行判断 3.下面就是判断代码&#xff0c;然后是抽红包接口代码 Test public static …

探索智能文字识别:技术、应用与发展前景

探索智能文字识别&#xff1a;技术、应用与发展前景 前言一张图全览大赛作品解读随心记你不对我对小结 智能文字识别体系化解读图像预处理文字定位和分割文字区域识别图像校正字体识别和匹配结果后处理小结 如何应对复杂场景下挑战复杂场景应对方法小结 人才时代对人才要求合合…

源代码审计对企业有哪些好处?

源代码扫描 源代码扫描&#xff0c;对应用程序进行静态漏洞扫描&#xff0c;分析源代码中存在的安全风险&#xff0c;运行应用于模拟器中对应用进行实时漏洞攻击检测。 你是否了解源代码扫描对企业的好处&#xff1f; 一、源代码扫描&#xff0c;通常能够帮助企业解决这些问题…

docker 01(初识docker)

一、docker概念 Docker是一个开源的应用容器引擎&#xff1b;诞生于2013年初&#xff0c;基于Go 语言实现&#xff0c;dotCloud公司出品(后改名为Dockerlnc);Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的Linux …

KCC@杭州-在初秋,来一场智力与体能的比拼

本次主题&#xff1a; 开源知识问答桌游/运动&#xff08;一场智力与体力的比拼&#xff09; KCC杭州活动又来啦&#xff01; 在这个如火的八月&#xff0c;我们将要开启KCC杭州的一场特色开源活动。 为了让活动更加有趣味&#xff0c;更加具有互动性&#xff0c;我们将采用知识…

QTreeWidget和QTreeWidgetItem

QTreeWidget介绍 QTreeWidget 是一个用于显示层次结构数据的 Qt 控件&#xff0c;它以树状结构的形式展示项目和子项。每个项目都可以包含子项&#xff0c;并且可以通过展开和折叠来浏览整个树。 QTreeWidget类是一个方便的类&#xff0c;它提供了一个带有经典基于项目的界面…

AI极客日报0822 - AI创作是否应该有版权?

&#x1f440;AI 日报合集 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; 人工智能系统依法享有版权吗&#xff1f;这位法官给出了肯定的答案。让我们开始吧。 今日看点&#xff1a; 一位联邦法官明确表示&#xff0c;AI创作的艺术品没有版权&#xff01;中国&#xff0c…

WGS84地球坐标系,GCJ02火星坐标系,BD09百度坐标系简介与转换 资料收集

野火 ATGM332D简介 高性能、低功耗 GPS、北斗双模定位模块 STM32 GPS定位_为了维护世界和平_的博客-CSDN博客 秉火多功能调试助手上位机开源&#xff01;共六款软件&#xff0c;学到你吐... , - 电脑上位机 - 野火电子论坛 - Powered by Discuz! https://www.firebbs.cn/for…

静态代码扫描工具 Sonar 配置及使用

概览 Sonar 是一个用于代码质量管理的开放平台。通过插件机制&#xff0c;Sonar 可以集成不同的测试工具&#xff0c;代码分析工具&#xff0c;以及持续集成工具。与持续集成工具&#xff08;例如 Hudson/Jenkins 等&#xff09;不同&#xff0c;Sonar 并不是简单地把不同的代…

定向流量卡怎么没人买了呢?你知道定向流量卡有多坑吗?

在购买流量卡的时候大家可能都注意了&#xff0c;市面上的流量卡有三种&#xff0c;定向流量卡&#xff0c;通用流量卡&#xff0c;通用流量定向流量卡&#xff0c;据小编了解&#xff0c;现在越来越多的人比较喜欢购买后两者&#xff0c;而关注定向流量卡越来越少了。 其实用过…