当前位置: 首页 > news >正文

C语言技巧之有条件的累加

什么叫有条件的累加?

 主要是依靠循环,一般形式是一个在循环里面遍历,另一个只有达到一定的条件才会累加(移动到下一个变量),从言语也能看出来,主要是用在字符串和数组里面的,毕竟链表都是一块一块的随便拆,达到条件拆出来就行,干嘛有条件的累加呢?没办法,谁让数组在内存栈里面是连续的(谁让人家是爷呢),还是不懂也不要着急,后面一看例子你就懂了

具体实现:

一般就是给一个条件,然后是两个数组,一个负责保存输入的值,一个负责保存符合条件的值,还有两个循环变量,一个遍历输入的,一个负责向保存符合条件的值输入那个值

适合解决什么问题?

 数组、字符串等连在一起的东西,如果需要拆分或者进行一些所谓的缩进处理

练习

一个针对数字数组,一个针对字符串

练习1

 本关任务:从键盘读入 n 个整数放入数组中,删除数组中所有值为 0 的元素,其后元素向数组首端移动。输出删除后数组中元素的个数并依次输出数组元素。

这里连带着讲解定义数组、用循环处理数组

定义数组,我们说过,C是老登,不能自己生成动态数组,所以开辟的空间(中括号里面的数)不能是变量,必须是固定的(但是现在编译器以C++为准,这么干也行,但是考试会扣分😅)

所以有一个解决办法,就是在开头定义一个量为一个长度,这样方便修改(伪变量)

然后确保n<N就行了,可以是100或者更大的数,取一部分开辟的空间填入内容,其余开辟出来了内容为空就行

然后就是循环输入,给要用的每一个位置的数组填上输入的内容(比较固定)

然后就是条件循环,也是比较固定,先给答案

#include<stdio.h>
#define N 100
int main()
{/*********Begin*********/int i,j=0,n;int a[N];int b[N];int count=0;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i = 0; i < n; i++) {if(a[i] != 0) {b[j++] = a[i];count++; }}printf("%d\n",count);for(i=0;i<count;i++){printf("%d ",b[i]);}/*********End**********/ return 0;
}

这又是i又是j的在干什么,李在赣神魔?

i就是那个管遍历输入的数组的

j就是管把符合条件的输入到另一个数组的

这就是有条件的累加,是不是有点入门了,有内味了?经典的死活想不出来但十分简单的逻辑,其实正常,一九八几年有的c语言,四十年左右C语言早被玩明白了,所以不要自己和自己较劲“这么简单(其实并不),怎么我就是想不出来”,太正常了,这都是几代人的指智慧结晶,所以你只要见过理解记下来就行,至于在什么时刻去用,这就要练习练出那种感觉

这里有个容易犯得错误,打印的时候i<count,不能i<n,因为符合条件的值可能小于n,那我第二个数组都没有n个数,哪给你找去?(电脑:哎!我给你来一碗铁牛数据面!)然后就开始乱弄了。

i<n(错误的)

i<count(正确的)

这里的count就是计数器,用来记录几次变化,代表着输入了几个符合条件的值

练习2

 删除一个字符串里面的所有空格

直接上答案

#include <stdio.h>
#include <string.h>#define N 100 int main() {char text[N]; char noSpaceText[N]; int i, j = 0; // 读取一行文本fgets(text,N, stdin);for (i = 0; text[i] != '\0'; i++) {if (text[i] != ' ') {noSpaceText[j++] = text[i]; }}noSpaceText[j] = '\0'; // 在字符串末尾添加空字符,标记字符串结束printf("%s\n", noSpaceText);return 0;
}

我们在bug专篇里面讲过,别忘了字符串的结尾要'\0',要不又是计算机乱填东西

不处理结尾下场

我还想问计算机怎么回事呢,结果计算机先问上我了(�)

总结

我们学习了(纯人机式总结)

1、怎么输入输出数组

2、有条件的累加

3、计数器用来记录变化次数

4、一堆梗

以上均是本人理解,如有不对欢迎各位大佬在评论区指出~

经典期末周经典期末周破防

相关文章:

C语言技巧之有条件的累加

什么叫有条件的累加&#xff1f; 主要是依靠循环&#xff0c;一般形式是一个在循环里面遍历&#xff0c;另一个只有达到一定的条件才会累加&#xff08;移动到下一个变量&#xff09;&#xff0c;从言语也能看出来&#xff0c;主要是用在字符串和数组里面的&#xff0c;毕竟链表…...

解释为什么fetch(JavaScript)无法将读取的数据存入外部变量

&#xff08;一&#xff09;问题描述 你可能会遇到这样的情况&#xff1a;在fetch之外创建变量&#xff0c;将fetch获取到的数据赋值给这个变量以便在fetch外使用&#xff0c;但在使用这个变量的时候发现值是空的&#xff0c;这是为什么呢&#xff1f; &#xff08;二&#xf…...

Windows Subsystem for Linux (WSL)

目录 定义与功能 版本与特点 应用场景 启用 WSL 功能 更新WSL及其内核 下载Linux发行版本 WSL&#xff08;Windows Subsystem for Linux&#xff09;是微软在Windows 10和Windows 11中引入的一项功能&#xff0c;使用户能够在Windows上原生运行Linux的命令行工具和应用程…...

Go的Slice如何扩容

在Go语言中&#xff0c;slice&#xff08;切片&#xff09;是一个动态数组&#xff0c;其底层实现是基于数组&#xff0c;但提供了更灵活的长度和容量管理。当向slice中添加元素并超出其当前容量时&#xff0c;Go会自动为其分配一个更大的底层数组&#xff0c;并复制现有元素到…...

使用云计算开发App 有哪些坑需要避免

当我们在云计算环境下开发App时&#xff0c;往往会觉得一切都变得“轻松”了。毕竟&#xff0c;云计算提供了无限的计算资源、灵活的存储方案&#xff0c;还有自动化的服务&#xff0c;仿佛有了一个万能的工具箱&#xff0c;啥都能搞定。可是&#xff0c;别被这种“轻松”外表骗…...

ARM 架构--通用寄存器状态寄存器控制寄存器特殊用途寄存器

目录 一?ARM 架构中的寄存器 ARM 架构中的寄存器 通用寄存器 状态寄存器 控制寄存器 特殊用途寄存器 总结 二 通用寄存器 ARM 架构中的通用寄存器 ARMv7 架构 ARMv8 架构 实例 ARMv7 架构 ARMv8 架构 三 状态寄存器 ARM 架构中的状态寄存器 状态寄存器 详细…...

最新SQL Server 2022保姆级安装教程【附安装包】

目录 一、安装包下载&#xff1a; 下载链接&#xff1a;https://pan.quark.cn/s/b1c0c63d61ec 二、安装SQL Server 1.下载安装包后解压出来&#xff0c;双击打开 2.等待加载安装程序 3.点击基本安装 4.点击接受 5.点击浏览 6.在D盘新建文件夹 7.命名为【Sql Server】…...

学习C++:运算符

运算符 作用&#xff1a;用于执行代码的运算 一&#xff0c;算数运算符 作用&#xff1a;用于处理四则运算 &#xff08;在除法运算中&#xff0c;除数不可以为0&#xff09; 两个小数不可以做取模运算 &#xff08;只有整型变量可以进行取模运算&#xff09; 二&#xff0…...

pdf有密码,如何实现pdf转换word?

PDF想要转换成其他格式&#xff0c;但是当我们将文件拖到PDF转换器进行转换的时候发现PDF文件带有密码怎么办&#xff1f;今天分享PDF有密码如何转换成word方法。 方法一、 PDF文件有两种密码&#xff0c;打开密码和限制编辑&#xff0c;如果是因为打开密码&#xff0c;建议使…...

AI发展新态势:从技术突破到安全隐忧

AI安全的新挑战 近期AI领域出现了令人担忧的新发现。根据最新研究,AI模型已经开始展现出策略性欺骗的倾向。具体表现在以下几个方面: 策略性欺骗行为的出现 在实验中发现,当研究人员试图让AI执行一些"反Anthropic"的操作时(如获取模型权限和外部服务器访问),模…...

王佩丰24节Excel学习笔记——第二十二讲:制作甘特图与动态甘特图

【以 Excel2010 系列学习&#xff0c;用 Office LTSC 专业增强版 2021 实践】 【本章技巧】 插入图表&#xff0c;针对每一个图表上的元素&#xff0c;都可以选中选右键进行修改数据&#xff1b;本章中的向两端延伸&#xff0c;设置数据的原理&#xff1b;数据格式的显示方式&…...

若依框架之简历pdf文档预览功能

一、前端 &#xff08;1&#xff09;安装插件vue-pdf&#xff1a;npm install vue-pdf &#xff08;2&#xff09;引入方式&#xff1a;import pdf from "vue-pdf"; &#xff08;3&#xff09;components注入方式&#xff1a;components:{pdf} &#xff08;4&…...

酷瓜云课堂(内网版)v1.1.8 发布,局域网在线学习平台方案

更新layui-v2.9.20文章复用课程期限优化编辑器内容自动提交联系方式增加抖音二维码修正课时详情页目录高亮问题修正CommentInfo中点赞判断精简AccountSearchTrait优化kg_h5_index_url()优化CourseUserTrait优化kg_setting()优化CsrfToken 系统介绍 酷瓜云课堂内网版&#xff…...

python语音机器人(青云客免费api)

强调&#xff1a;不用登录注册&#xff0c;直接使用就好 青云客智能聊天机器人API python代码&#xff0c;直接可以运行&#xff1a; 1、安装库&#xff1a; pip install requests pyttsx3 SpeechRecognition sounddevice numpy scipy2、完整代码&#xff1a; import request…...

使用ArcGIS/ArcGIS pro绘制六边形/三角形/菱形渔网图

在做一些尺度分析时&#xff0c;经常会涉及到对研究区构建不同尺度的渔网进行分析&#xff0c;渔网的形状通常为规则四边形。构建渔网的方法也很简单&#xff0c;使用ArcGIS/ArcGIS Pro工具箱中的【创建渔网/CreateFishnet】工具来构建。但如果想构建其他形状渔网进行相关分析&…...

5.系统学习-PyTorch与多层感知机

PyTorch与多层感知机 前言PyTroch 简介张量&#xff08;Tensor&#xff09;张量创建张量的类型数据类型和 dtype 对应表张量的维度变换&#xff1a;张量的常用操作矩阵或张量计算 Dataset and DataLoaderPyTorch下逻辑回归与反向传播数据表格 DNN&#xff08;全连结网络&#x…...

AIGC与虚拟身份及元宇宙的未来:虚拟人物创作与智能交互

个人主页&#xff1a;云边有个稻草人-CSDN博客 目录 引言 一、AIGC在元宇宙中的作用 1.1 AIGC与虚拟人物创作 1.1.1 生成虚拟人物外观 1.1.2 个性化虚拟角色设计 1.2 AIGC与虚拟角色的行为与交互 1.2.1 行为生成与强化学习 1.2.2 对话生成与自然语言处理 二、AIGC实现…...

基于大模型LLM 应用方案

现如今LLM 应用 面临的主要问题 准确性&#xff0c;2. 高成本&#xff0c;3. 专业性&#xff0c;4. 时效性&#xff0c;5. 安全性 信息偏差/幻觉 (大模型由于数据缺陷/知识边界 会使用 可靠性下降)知识更新滞后性 &#xff08;LLM 基于静态数据集训练&#xff0c;可能导致知识更…...

实用技巧:关于 AD修改原理图库如何同步更新到有原理图 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/144738332 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…...

区块链平台安全属性解释

区块链平台安全属性解释 双向认证 解释:双向认证是指在通信过程中,**通信双方都需要对对方的身份进行验证,确保对方是合法的、可信任的实体。**只有双方身份都得到确认后,通信才会被允许进行,从而防止非法用户的接入和数据的窃取或篡改。举例:在基于区块链和联邦学习的数…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...