34.序列中删除指定数组以及编写代码过程中遇到的问题

news2024/9/29 11:38:35

描述

有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。

数据范围:序列长度和序列中的值都满足 1≤�≤501≤n≤50

输入描述:

第一行输入一个整数(0≤N≤50)。

第二行输入N个整数,输入用空格分隔的N个整数。

第三行输入想要进行删除的一个整数。

输出描述:

输出为一行,删除指定数字之后的序列。

 

示例3

输入:5

           1 2 2 3 5

           2

输出:1 3 5 

代码展示: 

#include <stdio.h>
#include <stdlib.h>

int deletsum(int arr[], int n, int flag) {
    int i;
    int count = 0;
    for (i = 0; i < n; i++) {
        if (arr[i] != flag) {
            arr[count] = arr[i];
            count++;
        }
    }
    n = count;
    return n;
}
int main() {
    int n, flag;
    scanf("%d", &n);
    int* arr = (int*)malloc(sizeof(int) * n);
    for (int i = 0; i < n; i++) {
        scanf("%d ", &arr[i]);
    }
    scanf("%d", &flag);
    n=deletsum(arr, n, flag);
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    free(arr);
    return 0;
}

我的想法: 

删除数组中指定的整数,同时保持剩余元素的相对顺序不变。

具体步骤如下:

  1. 输入序列的长度n和指定的整数flag。
  2. 动态分配一个大小为n的整型数组arr。
  3. 使用循环读取n个整数到数组arr中。
  4. 调用deletsum函数,传入数组arr、长度n和指定整数flag作为参数。
  5. 在deletsum函数中,遍历数组arr,将不等于flag的元素移动到数组的前部分,同时记录有效元素的个数count。
  6. 更新数组的长度n为count。
  7. 返回更新后的数组长度n。
  8. 在主函数中,使用循环打印数组arr中的元素,打印范围是从0到n-1。
  9. 释放动态分配的数组arr的内存。
  10. 返回0,表示程序执行成功。 

 

在编写以上代码的过程中,我也遇到了一些小问题, 在刚开始定义deletsum函数时,我尝试通过更新参数n的值来改变序列的长度,但实际上这样是无效的,因为C语言中函数参数是按值传递的,对参数的修改不会影响到原来的变量。

 为了解决这个问题,我将deletsum函数的返回类型改为int,并返回删除指定整数后的新序列的长度。然后在main函数中更新变量n的值,以反映出新序列的长度。

 

 

 

另一种方法来更新数组长度: 

void deletesum(int arr[], int* n, int flag) {
    int i, j;
    int count = 0;

    // 遍历数组,将不等于目标整数的元素前移
    for (i = 0; i < *n; i++) {
        if (arr[i] != flag) {
            arr[count] = arr[i];
            count++;
        }
    }

    // 更新数组长度
    *n = count;
}

在这段代码中,更新数组长度的用法是通过传递指向长度变量的指针来实现。

具体来说,主函数中的变量 n 是存储数组长度的整型变量。在调用 deletesum 函数时,传递了 &n 作为参数,即 deletesum(arr, &n, flag)。在函数内部,通过修改 *n 的值来更新数组长度。例如,*n = count; 表示将指针 n 所指向的变量的值更新为 count。由于 n 是指向主函数中变量 n 的指针,因此该操作实际上修改了主函数中的变量 n 的值,从而更新了数组的长度。

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

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

相关文章

外贸商城ERP系统-海外跨境电商平台【APP+小程序+PC多端同步商城系统】

外贸商城ERP跨境电商系统是帮助打开海外贸易&#xff0c;线上出海贸易的平台&#xff0c;欢迎名片探讨开发跨境电商系统&#xff0c;相互学习成长。 一、基础功能架构 跨境全球跨境贸易多语言无货源多国货币一键铺货后台采集多商户一件代发视频直播带货国JI化UI面板国际多类型…

音视频专栏-DTSPTS

一&#xff0c;网上很多人都在讲dts和pts&#xff0c;但是么有几个人把这个问题讲清楚&#xff0c;讲明白的&#xff0c;甚至很多做了很多年的音视频开发的人都搞不明白&#xff0c;今天我把原理图整理下&#xff0c;和大家一起学习&#xff0c;如有问题&#xff0c;欢迎批评指…

电子科技大学编译原理复习笔记(六):自上而下的语法分析

目录 前言 重点一览 引言 语法分析的功能 语法分析的分类 自上而下分析方法 回溯分析法 回溯分析法例子 方法 存在的问题 产生的原因 特点 解决缺陷 消除回溯&#xff08;重点&#xff09; 递归下降分析器 递归下降分析法 递归过程的构造 扩充BNF 改进的递…

MATLAB机器学习:分类、回归和聚类的算法实现和模型优化

第一章&#xff1a;引言 机器学习是当今IT领域最热门的话题之一&#xff0c;它为我们提供了解决复杂问题的新方法。MATLAB作为一种功能强大的编程语言和环境&#xff0c;提供了许多用于机器学习的工具和函数。本文将介绍MATLAB中常用的分类、回归和聚类算法的实现&#xff0c;…

chatgpt赋能python:Python中将数字倒序:一种简单的方法提高代码效率

Python中将数字倒序&#xff1a;一种简单的方法提高代码效率 数字倒序是Python中一种实用的操作。网站开发者和数据分析师通常需要对数字进行反转&#xff0c;以使其更容易阅读和理解。虽然有多种方法可以实现数字反转&#xff0c;但在绝大多数情况下&#xff0c;使用Python中…

详解浏览器渲染原理及流程

今天来分享一下浏览器的渲染原理及流程。 前言 先来看看 Chrome 浏览器的多进程架构&#xff1a; 通常&#xff0c;我们打包出来的 HTML、CSS、JavaScript 等文件&#xff0c;经过浏览器运行之后就会显示出页面&#xff0c;这个过程就是浏览器的渲染进程来操作实现的&#xf…

Windows安装和启动SSH服务

前言 作者在做项目时遇到需要从Windows系统远程传文件到Ubuntu系统&#xff0c;Ubuntu系统这边使用了gFTP的文件传输工具&#xff0c;但是远程Windows时发现老是连接不上&#xff0c;后面发现是Windows这边没有开启SSH服务。 找了一些文章&#xff0c;结合自己的操作把配置方法…

基于工业互联网的RV1126+AI安防单目/双目高清视觉分析计数仪方案

1产品简介 产品介绍 单目视觉分析计数器是信迈科技基于单目图像分析以及深度学习算法研发的一款区域统计计数器。它可以精确的识别监控区域内的物体&#xff0c;统计区域内停驻的人数/车辆等&#xff0c;也可以统计区域内进入以及离开人数。它可适用于公交车&#xff0c;大巴&…

旧衣回收小程序开发需具备哪些功能呢?

旧衣回收小程序开发需具备哪些功能呢&#xff1f; 1、预约回收。只要通过手机小程序进行预约就可以进行上门回收旧衣&#xff0c;平台会根据预约的时间安排就近回收员上门进行回收废旧衣服。或者用户直接在小程序上点击捐赠&#xff0c;填写地址信息、时间、联系方式等待…

Android进阶 View的工作原理:源码分析View的三大工作流程

Android进阶 View的工作原理&#xff1a;源码分析View的三大工作流程 导语 想象一下&#xff0c;如果我们要画画&#xff0c;把画画的流程拆分的话&#xff0c;那么应该分几个部分呢&#xff1f;一般来说&#xff0c;专业的画师会进行提前构图&#xff0c;然后再进行绘画最后上…

docker hub 访问不了,可以进行拉取和推送,但是不能进行注册登陆了,界面找不到了,大家一起讨论看看有什么好的解决办法。

1&#xff0c;docker hub 不能访问了 在 oschina 的地方找找了文章和原因&#xff1a; https://www.oschina.net/comment/news/241627 2&#xff0c;通过啥方式进行访问呢&#xff1f; 目前配置源还是可以正常的pull 和 push 的。 {"data-root": "/data/doc…

数据链路层:可靠传输

1.数据链路层&#xff1a;可靠传输 笔记来源&#xff1a; 湖科大教书匠&#xff1a;可靠传输的基本概念 湖科大教书匠&#xff1a;可靠传输的实现机制–停止等待协议SW 声明&#xff1a;该学习笔记来自湖科大教书匠&#xff0c;笔记仅做学习参考 1.1 可靠传输的基本概念 接收…

Rust 笔记:WebAssembly 的 JavaScript API

WebAssembly WebAssembly 的 JavaScript API 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/ar…

2023/5/29总结

abstract修饰符 抽象类就是当类和类之间有相同特征时&#xff0c;将这些共同的特征提取出来&#xff0c;形成的就是抽象类。 抽象类的特点&#xff1a; 抽象类和抽象方法必须使用abstract 关键字修饰&#xff1a;publicabstract class 类名 / public abstract void eat();抽象…

基于pytorch搭建多特征LSTM时间序列预测代码详细解读(附完整代码)

文章目录 LSTM时间序列预测数据获取与预处理模型构建训练与测试 LSTM时间序列预测 对于LSTM神经网络的概念想必大家也是熟练掌握了&#xff0c;所以本文章不涉及对LSTM概念的解读&#xff0c;仅解释如何使用pytorch使用LSTM进行时间序列预测&#xff0c;复原使用代码实现的全流…

【Python实战】Python采集小说文本内容

前言 今天,我们将采集某小说数据,通过这个案例,加深我们对正则表达式的理解。我们今天来通过使用正则表达式来获取我们想要的文本。 环境使用 python 3.9pycharm模块使用 requests模块介绍 requests requests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应…

MaxScript的Shape相关操作例子

MaxScript学习笔记目录 大家好&#xff0c;我是阿赵。之前有网友私信问了我一个相关的问题&#xff0c;我发现之前漏了MaxScript里面的Shape的内容&#xff0c;所以补一个例子&#xff0c;当做一个记录吧。 一、例子说明 这里做一个关于MaxScript读取二维形状(Shape)数据的例…

加盐加密——保障你的数据安全

目录 今日良言:理性和激情是生活不可或缺的调味品 一、加盐加密 1.普通密码的缺点 2.什么是加盐加密 3.加盐加密的过程 4.加盐加密的实现 今日良言:理性和激情是生活不可或缺的调味品 一、加盐加密 1.普通密码的缺点 在介绍加盐加密之前&#xff0c;先想想为什么普通密…

STM32F4_指针(单片机)

目录 前言 1. 计算机存储机制 2. 定义指针 2.1 指针操作 2.2 数组与指针 前言 指针(Pointer)是C语言的一个重要知识点&#xff0c;其使用灵活、功能强大&#xff0c;是C语言的灵魂。指针与底层硬件联系密切&#xff0c;使用指针可操作数据的地址&#xff0c;实现数据的间…

PreSumm模型

Text Summarization with Pretrained Encoders&#xff08;PreSumm模型&#xff09; 论文地址 摘要 在本文中&#xff0c;我们展示了如何在文本摘要中有效地应用BERT&#xff0c;并为提取性模型和抽象模型提出了一个通用框架。我们介绍了基于BERT的新颖文档级编码器&#xf…