玩转N组输入和多组输入

超越人口学:用双侧堆叠条形图玩转甲基化数据可视化(微生信实战案例) 本文介绍如何将常用于人口学的双侧堆叠条形图创新应用于DNA甲基化数据可视化。通过微生信平台,将基因组特征映射为Y轴,甲基化β值作为X轴,左右两侧清晰对比癌症与正常组,并可利用堆叠展示样本亚型或临床特征。该方法为多维组学数据提供了直观、高效的发表级图表解决方案。 阅读详情

title: 玩转N组输入和多组输入
date: 2023-10-18 22:39:57
tags: C语言 多组输入
cover: https://picbed0521.oss-cn-shanghai.aliyuncs.com/blogpic/Snipaste_2023-10-20_07-34-35.jpg

原文见我的网站: www.supdriver.top

引入

当我们在写IO型OJ时,多组输入便是我们绕过不开的话题了,但不用担心,可能初见多组输入会觉得难以理解,但用多了之后就会发现,多组输入 花样并不多,混熟了就很简单了

先看看一组输入输出如何完成的

如图:一组输入时,用scanf获取一组输入,并在主体部分完成数据的处理,产生结果,最后用printf输出产生的一组结果。

以下用实现加法的程序做演示

#include <stdio.h>

int main()
{
    int a,b;
    scanf("%d %d",&a,&b);//获取一组输入
    int sum = a + b;//产生结果
    printf("%d\n",sum);//输出结果
    return 0;
}

然后升级到N组输入

有的OJ题在一个测试文件中会先输入一个n,告诉你接下来有n组输入,你就要产生n组输出,也就是说要将一组输入输出重复性地完成n次。难道我们要把代码重复n次吗?显然不现实。

所以是时候使用循环了,具体用法如下

如图,先用一个scanf获取循环次数n,然后创建一个循环,将一组输入输出放入循环体,一次一次循环处理即可

变量的重置

为防止前后两次循环产生干扰,有两种处理变量的方式

1.(推荐)除了输入的变量,其它所有变量在循环体内声明,这些变量会在一次循环后销毁,下一次循环开始时自动重新声明,从而完成变量的自动重置

以下面这个一次求和3个数的程序为例

#include <stdio.h>

int main()
{
    int n = 0;
    scanf("%d",&n);//获取循环次数n
    for(int i =0;i<n;i++)//创建循环
    {
        //以下完成一组输入输出
        int sum = 0;//声明一个局部变量,下次循环时会自动重声明
        int num = 0;//储存输入的数字
        for(int j =0;j<3;j++)
        {
            scanf("%d",&num);
            sum+=num;
        }
        printf("%d\n",sum);//完成输出
        //本次循环走完后变量sum被销毁,然后进入下一次循环,完成重置
    }
    return 0;
}

2.在循环外部声明变量,然后在循环末尾手动重置变量

以下面这个一次求和3个数的程序为例

#include <stdio.h>

int main()
{
    int sum = 0;//声明在循环外部
    int n = 0;
    scanf("%d",&n);//获取循环次数n
    for(int i =0;i<n;i++)//创建循环
    {
        //以下完成一组输入输出
        int num = 0;//储存输入的数字
        for(int j =0;j<3;j++)
        {
            scanf("%d",&num);
            sum+=num;
        }
        printf("%d\n",sum);//完成输出
        sum = 0;//重置sum
    }
    return 0;
}

要不要用数组储存输入,或储存结果再一次性输出?

答案是:可以,但没必要。

只需要像上图那么写即可,因为输入是一次性喂进去的 。存数组再输出,和每产生一个结果就输出一次,最终呈现出来是一样的(如下图)

现在,勇士,来挑战多组输入吧

scanf的返回值

多组输入时,究竟会输入多少组数据,也不告诉你了,但是,此时scanf的返回值就派上用场了。和我们在终端手打输入不同,OJ的输入是喂一个文件进去,所以当输入结束时,scanf的返回值是EOF(意为文件结尾end of file),而当成功输入数据时,则会返回输入数据的个数(文档截图如下)

结合循环

那么就把scanf放入while循环吧,每次试图获取下一组输入时,检测是否返回值为EOF,若是,则跳出循环,结束程序;若否,则继续循环

以下面这个一次求和3个数的程序为例

#include <stdio.h>
int main()
{
    int num = 0;//先声明至少一个待输入的变量
    while(scanf("%d",&n) != EOF)//创建循环,每次循环开始时scanf一次,并检测是否返回EOF
    {
        //开始构建循坏体
        int sum = 0;
        sum+=n;
        //完成剩下的两次输入
        for(int i =0; i < 3 - 1;i++)
        {
            scanf("%d",&n);
            sum+=n
        }
        printf("%d\n",sum);//完成一次输出
    }
    //scanf返回EOF后跳出循环
    return 0;
}

基本架构

以后再要写多组输入,基本就像上面那个程序一样

1.先声明至少一个待输入的变量

2.创建循环,每次循环开始时scanf一次,并检测是否返回EOF

3.开始构建循坏体(包括完成剩下的输入,完成一组输出)别忘了回车!!!

4.直至scanf返回EOF后跳出循环

想模拟一下多组输入看看?

像下图一样每组数据间加个空格就行,什么?题目的样例输入有回车?不用管它,放心大胆地换成空格就行。自己测试程序,只需要输出一样就行,至于怎么输入,没必要和题目一模一样

注意!!!不要试图在终端停止程序

因为和OJ不同,在本地运行程序时,不是文件输入,而是终端输入,没法让scanf返回EOF,炫迈,根本停不来

*一样就行,至于怎么输入,没必要和题目一模一样

[外链图片转存中…(img-IhjFdshi-1747377476712)]

注意!!!不要试图在终端停止程序

因为和OJ不同,在本地运行程序时,不是文件输入,而是终端输入,没法让scanf返回EOF,炫迈,根本停不来

你要是想立即中断程序,那就按ctrl+c

高效PCB设计第一步:用OrCAD Capture CIS玩转总线与差分对布线(附实战案例) 本文详细解析了如何利用OrCAD Capture CIS进行高效PCB设计,重点介绍了总线与差分对布线的实战技巧。通过规范化的总线命名和差分对创建,工程师可以显著提升设计效率,确保高速信号完整性。文章包含USB3.0接口的完整设计案例,帮助读者掌握从原理图到PCB的无缝衔接。 阅读详情

相关推荐

RK3588开发板调试串口入门:无屏无键鼠也能玩转嵌入式Linux

UART串口作为嵌入式系统最基础的通信接口,在SOC开发板调试中扮演着不可替代的角色。对于RK3588、RK3568等高性能ARM平台,当没有HDMI显示器和键鼠时,调试串口成为查看启动日志、操作U-Boot命令行、登录Linux系统的唯一入口。理解其工作原理——从BootROM到Loader、U-Boot再到内核与文件系统的完整日志输出,能帮助开发者快速定位DDR初始化失败、内核崩溃等问题。在实际工程中,只需一根USB转TTL模块连接开发板的TX、RX和GND,配置115200 8N1参数,即可在电脑终端

weixin_29168393的博客 417

【玩转动态规划专题】62. 不同路径【中等】

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。由于dp[i][0]和dp[0][j] 这一层上都是已知的。dp[m][n] 表示 在m、n网格中共有多少种路径。从左上角开始,总共有 3 条路径可以到达右下角。输入:m = 3, n = 7。输入:m = 3, n = 2。输入:m = 7, n = 3。输入:m = 3, n = 3。问总共有多少条不同的路径?

sadsasdsdsdasda的博客 546

7-4 二叉树的遍历!(简单) (25 分)

在开头跟大家分享的时候我就说,面试我是没有做好准备的,全靠平时的积累,确实有点临时抱佛脚了,以至于我自己还是挺懊恼的。(准备好了或许可以拿个40k,没做准备只有30k+,你们懂那种感觉吗)如何准备面试?1、前期铺垫(技术沉积)程序员面试其实是对于技术的一次摸底考试,你的技术牛逼,那你就是大爷。大厂对于技术的要求主要体现在:基础,原理,深入研究源码,广度,实战五个方面,也只有将原理理论结合实战才能把技术点吃透。

2301_79655576的博客 1403

axure 图片切换图片的交互_玩转GO和KEGG富集因子图的N种姿势:3种数据处理(含在线筛选条目),3种排序方式,本地交互图片...

适用场景富集性分析是各组学进行数据分析的必备分析项,其中,尤以GO和KEGG富集因子图最为常见,见例图。这张图非常经典,相比于其他富集分析结果,它包含了基因数目、p值和富集因子三个维度的信息量,更全面,更能辅助下结论。得到这张图有两种方式:1.从挑选基因开始做富集性分析,做完一套分析得到此图;针对这个需求,出门左转,请使用【通用版富集分析】 (https://www.omicstudio...

weixin_42151036的博客 225

TAS6421-Q1评估模块实战指南:从硬件剖析到软件调试

数字音频放大器(D类放大器)是现代音频系统的核心,它通过高效的开关调制技术,将数字音频信号转换为大功率模拟信号,在汽车音响、多媒体等领域广泛应用。其核心原理在于利用脉宽调制(PWM)驱动功率开关管,相比传统AB类放大器,具有效率高、体积小、发热低的显著优势。这项技术为高保真、高可靠性的音频方案提供了可能,尤其在空间和散热受限的车载环境中价值凸显。本文聚焦于德州仪器(TI)的汽车级D类放大器芯片TAS6421-Q1,通过深度解析其官方评估模块(EVM),详细阐述了从硬件接口、电源设计到使用PurePath C

weixin_29161785的博客 169

基于MATLAB/Simulink的电流互感器饱和特性建模与仿真优化

本文深入探讨了电流互感器的饱和特性,并详细介绍了如何利用MATLAB/Simulink进行精确建模与仿真分析。通过构建非线性模型,系统研究了短路电流、系统时间常数、二次负载及剩磁等关键因素对饱和的影响,为互感器选型、二次回路设计及保护算法优化提供了数据支持与解决方案。

weixin_29043895的博客 412

玩转大模型之学习笔记 | Transformer,一个神奇的算法模型

我的研究方向是显著性目标检测,毕业论文方向是基于Transformer的显著性目标检测研究,随着Transformer机制在自然语言方向逐渐取得巨大突破,有很多学者都把目光投向了计算机视觉方向,显然Transformer在计算机视觉方向也有巨大进展,带着这样的学习目的,我参加了昇思MindSpore技术公开课,希望对Transformer有一个更加深刻而全面的认识,可以更好地开展我的毕业设计。注意力机制的基本思想是在处理输入序列时,不同位置的信息被赋予不同的权重,以便网络更集中地关注对当前任务有用的部分。

weixin_59191169的博客 770

深入解析DSP系统时钟配置与优化策略

本文深入解析DSP系统时钟配置与优化策略,从晶振到CPU的时钟路径设计,详细介绍了PLL配置、外设时钟树管理及动态调频技术。通过实战案例和代码示例,帮助工程师掌握DSP时钟系统的精细化管理,提升系统性能和能效比。特别适用于电机控制、数据采集等实时性要求高的应用场景。

weixin_28684757的博客 414

别再死记字典序了!这道ZZULIOJ字符串题教你玩转自定义排序(附避坑指南)

本文深入解析ZZULIOJ 1155题中的字符串自定义排序技巧,通过规则抽象和数学建模,教你如何实现非标准字典序的比较逻辑。文章详细介绍了字符权重映射、多实例处理陷阱及性能优化方法,并提供了通用自定义排序框架,帮助算法学习者掌握这一核心技能。

weixin_30907935的博客 621

Selenium数据驱动测试实战:告别硬编码,构建可维护的UI自动化框架

数据驱动测试是一种核心的自动化测试设计思想,其核心原理是将测试脚本逻辑与测试数据分离,通过外部数据源(如CSV、JSON)驱动测试执行。这种模式的技术价值在于显著提升了测试用例的可维护性和可扩展性,避免了脚本的重复与臃肿。在UI自动化测试领域,结合Selenium与Pytest等框架,数据驱动能高效应对多场景、多参数的测试需求,例如电商网站的搜索功能验证、登录表单的多组数据测试等。本文以Selenium实战为例,深入讲解如何利用Pytest参数化、Page Object Model(POM)以及CSV数据文

weixin_28839549的博客 306

Selenium数据驱动测试实战:从原理到框架搭建与避坑指南

数据驱动测试是一种核心的软件测试方法论,其核心原理在于将测试脚本(逻辑)与测试数据(输入与预期)进行分离。这种分离模式通过参数化、关键字驱动等技术实现,其核心价值在于极大地提升了测试用例的复用性、可维护性和场景覆盖的全面性,是构建健壮、高效自动化测试体系的基石。在Web UI自动化测试领域,这一方法论与Selenium等工具结合,能有效应对复杂的业务验证场景。随着AI自动化测试等技术的发展,数据驱动作为底层支撑框架的重要性愈发凸显。本文将以Selenium和pytest为核心,深入探讨如何设计数据源、搭建测

weixin_28836989的博客 288

零基础玩转Qwen3-Reranker-4B:手把手教你搭建多语言排序服务

本文介绍了基于星图GPU平台自动化部署Qwen3-Reranker-4B镜像的完整流程,助力用户快速搭建多语言文本重排序服务。通过vLLM高效推理与Gradio可视化界面,实现模型在检索系统、推荐引擎等场景中的低门槛应用,显著提升结果相关性排序精度。

weixin_42611177的博客 143

Dobot Magician机械臂二次开发指南:如何利用Python脚本和I/O接口实现自动化任务

本文详细介绍了Dobot Magician机械臂的二次开发方法,重点讲解如何通过Python脚本和I/O接口实现高级自动化任务。内容包括开发环境搭建、运动控制API解析、I/O接口应用以及典型场景实现,帮助开发者充分发挥Dobot Magician的潜力,适用于工业自动化、教育科研等领域。

weixin_26968079的博客 267

用快马AI三分钟生成场效应管仿真器:零基础玩转电子设计自动化

的AI辅助,从构思到可用的仿真工具只用了不到半小时。作为一个电子设计爱好者,我一直想找个简单的方法来模拟场效应管的电路特性。通过快马平台的AI对话功能,我直接输入需求:"生成一个能调节场效应管参数、显示特性曲线的网页工具"。生成的网页应用可以实时调节MOSFET的栅极电压,观察输出波形如何从截止区过渡到饱和区,比教科书上的静态图表直观多了!,居然能用AI快速生成可交互的场效应管仿真器!下面分享我的实践过程。这个项目最让我惊喜的是,即使没有电子专业的编程经验,通过。- 输入输出特性曲线(Id-Vds曲线等)

GoldenleafLynx28的博客 670

科普:Frenet坐标

理想情况下,描述这种常见驾驶行为在数学上应该很容易。一种方法是使用新的坐标系。现在,而不是放下一个正常的笛卡尔网格,我们做一些事情,就像你看到下面…Frenet Coordinates是一种以比传统x,y笛卡尔坐标更直观的方式表示道路位置的方式。如果我们想要方程式来描述这个动作,那就不容易了!想象一下像下面这样一条弯曲的道路,笛卡尔坐标系就位于它的上面…使用这些笛卡尔坐标,我们可以尝试描述车辆通常在路上行驶的路径…那么在Frenet坐标系下呈现的典型轨迹是什么样的?在这里,我们定义了一个新的坐标系统。

OceanStar的博客 1万+

fanuc机器人KAREL中 函数的应用

本次课程讲解编程的思路。很多的同学都玩过积木,一个一个的模块逐渐累积起来,通过彼此之间的相互联系,最终形成一个完整的整体。其实编程也是这样。 将一个对象根据其特点进行模块化拆分,尤其是一些特点非常相似的内容,将其变成一个模块。然后通过传递参数,实现不同的功能,这就是模块化编程。

haier123888的博客 2744

优快云之编程挑战赛-玩转算法:最小向量乘积

最小向量乘积15剩余时间:236天14小时59分53秒 编程语言:C C++ Java C# 答题时长:120分钟难度等级:  两个N维向量的点积定义为,对应维度上的数的乘积之和。 两个三维向量[1, 3, −5]和[4, −2, −1]的点积是1 * 4 + 3 * (-2) + (-5) * (-1) = 3 现在允许我们对两个向量里的维度重新排列,让

bblr001的专栏 635

Python爬虫实战:抓取全球各国海关进出口数据的全流程教程

本文系统介绍了用Python采集全球各国海关进出口数据的完整流程,从数据源调研、技术选型,到代码实战、数据处理和存储,最后还拓展了进阶反爬和动态内容处理方法。希望这篇博文能帮助你掌握专业的数据采集技能,为后续数据分析和商业应用奠定坚实基础。

2201_76125261的博客 2362

树莓派pico MicroPython串口通信实战案例详解

通过树莓派pico与MicroPython结合,实现高效的串口通信,适用于物联网与嵌入式开发场景。深入剖析实际案例,帮助开发者快速掌握树莓派pico在真实项目中的应用技巧。

weixin_42376614的博客 1096

实干派!网易易盾增强版滑块验证码,全方位讲解识别思路(含源码)

该验证码是异形滑块验证码中的一种,缺口旋转+偏移的处理需要你有很好的图像处理知识,能很好的处理透明通道,同时,该验证码需要你能很好的处理缺口和背景之间匹配的关系,该验证码的处理难点就是两个缺口之间如何找到正确的,两个检测框都有很强的相似度,且加上背景图的干扰,在图像处理和有优化上难度大大增加。

码王吴彦祖的博客 2015

手把手教你学PCIE--PCIe架构详解 - 物理层结构

在前一篇文章中,我们对PCIe与其他总线协议进行了对比分析。本文将深入探讨PCIe的物理层结构,这是PCIe协议的核心组成部分之一。物理层负责实际的电气信号传输,理解其工作原理对于设计和调试PCIe系统至关重要。PCIe的物理层是协议栈的最底层,负责将数据从链路层转换为电信号进行传输,并在接收端将电信号还原为数据。差分信号传输:通过一对差分信号线实现高速、低噪声的数据传输。时钟恢复:从数据流中提取时钟信号以同步收发双方。均衡与预加重:补偿信号在传输过程中的损耗,提高链路可靠性。

MHD0815的博客 362

基于 PyTorch 的 Tacotron 2 语音合成实战:环境搭建、分布式训练与文本到语音推理

本文以 NVIDIA 官方 PyTorch 版 Tacotron 2(无 WaveNet 解码器)仓库为对象,系统讲解从论文复现到实际使用的完整链路:数据准备、单卡与多卡训练、混合精度加速、预训练模型续训,以及通过 WaveGlow / Griffin-Lim 把文本合成为语音的推理流程。读完本文,你将掌握该仓库 `train.py` 的全部命令行入口、`hparams.py` 中的核心超参数语义

gitblog_00514的博客 148

从代码仓库到知识库:自动化构建与RAG技术实践

在软件工程领域,代码库的规模与复杂性日益增长,如何高效管理和利用其中的知识成为关键挑战。传统文档工具主要依赖注释提取API信息,而现代知识构建技术则通过抽象语法树(AST)解析、自然语言处理等手段,深入理解代码结构、调用关系和业务逻辑。其核心价值在于将非结构化代码转化为机器可理解、可检索的结构化知识,显著提升代码资产的可维护性和团队协作效率。这一过程通常涉及代码解析、信息提取、向量化表示和存储索引四个关键阶段,其中向量化技术将代码语义转化为高维向量,为语义搜索奠定基础。结合检索增强生成(RAG)架构,开发者

weixin_42545292的博客 415

盗版Huybery系列之手抓饼赛马

题目描述:大家听说过“田七赛马”的故事吗?那是在遥远的战国时期了,当时的齐国上流社会赛马成风,上至国君下至大臣,常常以重金赌赛马的输赢。而田七是一个没什么心眼却很爱面子的大臣,别人找他赛马他不好意思拒绝。但由于策略不当,屡赌屡输。终于,在他将要把所有的俸禄都输光的时候,他找到从小长在大草原,对各种马的习性,能力都很熟悉的朋友手抓饼,请他帮自己赢得下一场比赛。手抓饼暗中观察了对手的马,发现田七的马和...

Reticent_Man的博客 867

【AI智能体】Codex AI 辅助编程高级技能实战操作详解

Codex AI 辅助编程高级技能实战操作详解

congge 6759

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

NEUQ 1410: 屌丝的逆袭

1410: 屌丝的逆袭 时间限制: 1 Sec  内存限制: 128 MB 题目描述 毕业于普通本科的小Q一直自称是资深屌丝,不仅学校不知名,甚至他自己在这个普通学校也是默默无闻——直到临近毕业的时候,班里5朵金花中的2位甚至从没和他说过话!   谁又能想到,如此不起眼的小Q在历经重重面试环节后,竟然如愿以偿加入了心仪已久的腾讯公司!消息刚刚传开的那几天,这在他们班甚至

Han_kin的专栏 840

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: =C语言实践= 手把手教你做高端cmd简单扫雷
下一篇: 如何在VS里使用scanf
supdriver
博客等级 码龄3年 192粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值