算法竞赛入门经典 文件输入输出 重定向和fopen

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

问题重述:输入一些整数,求出它们的最小值、最大值和平均值(保留3位小数)。输入保证这些数都是不超过1000的整数。样例输入:2 8 3 5 1 7 3 6样例输出:1 8 4.375


问题分析:

1.如果是先输入整数n,然后输入n个整数,相信读者能够写出程序。关键在于:整数的个数是不确定的。在Windows下,输入完毕后先按Enter键,再按Ctrl+Z键,最后再按Enter键,即可结束输入。在Linux下,输入完毕后按Ctrl+D键即可结束输入。

2.另一个问题就是max和min的初值问题:一开始要设置max与min为什么值才能与待输入的
   数据正确地比较呢? 
 
   一种比较直观的方法是把max设为一个很小的值,把min设为一个很大的值.但是,这样做有
   一定的风险,因为你不能确定接下来输入的数据到底有多大,或者有多小(本题中做了约束
   是1000).比如你设min初值是1000.但是接下来输入的数据都是比1000大的数据,那么最小
   值结果就是错误的.
 
   另一种比较稳妥的方法是将max与min都赋予第一个输入的数据的值,这样,无论如何都不会
   出现上面描述的那种情况了.但是程序要稍长一点.

3.每次测试可能需要手动输入大量数据,过程繁琐,或者输出大量数据导致一卷屏就看不见数据,则可采用文件输入输出方法解决.

问题解决:

1.重定向:所谓重定向,即是为了解决繁琐的输入输出问题而将标准I/O转向文件或其他方式的手段,重定向版本代码如下:

#define LOCAL
#include<stdio.h>
#define INF 1000000000
int main()
{
#ifdef LOCAL
freopen("data.in", "r", stdin);
fre

C++基础算法教程|文件操作 欢迎来到沾花把玖的C++算法课堂! 文件结构体——文件操作 C++语言提供了一批用于文件操作的标准函数,基本操作如下: (1)打开文件,将文件指针指向文件,决定打开文件类型; 阅读详情

相关推荐

C与C++文件输入输出效率简单研究 上篇

最近在读《算法竞赛 入门经典》觉得这本书蛮好的,不知道是否有人读过。 里面的一段特别有意思,讲的是CC++里面从文件输入输出的方法,下面我来简单的介绍一下。 对于C来说,文件输入有下面两种方式: 1. fopen方法 fopen方法是C语言中对文件操作的最简单的方法也是我最常用的方法,它是通过操作文件指针相关文件输入输出函数来实现的,下面简单给出代码。(文件默认为data.in

代码小作坊 1279

文件输入输出重定向fopen

一、重定向: 使用文件最简单的方法是使用输入输出重定向,只需在main函数的入口处加入以下两条语句: freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); 上述语句将使得scanf从文件input.txt读入,printf写入文件output.txt。事实上,不只是scanfprintf,所有读键盘输入...

Lili Liang的博客 1967

C语言输入输出重定向fopen函数使用详解

C语言输入输出重定向fopen函数使用详解

Lijueqi001的博客 1031

使用文件进行读取或输出的两种方式(重定向fopen版)

1.重定向版//利用文件进行读取输出(重定向版) //如果想要标准输入而文件输出时,只需将关于文件输入的语句注释掉即可,文件输入标准输出同理 //如果想回到标准输入输出时,只需将下一行的本地定义注释掉即可 #define LOCAL #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;fstream&gt; using name...

老铁,干了这碗algorithms的博客 2625

Linux--文件C接口--系统接口--fd--输出重定向--多进程打开同一文件--1010--1014

文件,C语言接口,系统接口,文件描述符fd,输出/输入重定向

qq_68741368的博客 1334

第二周学习笔记

【代码】第二周学习笔记。

222

算法竞赛之【输入输出重定向

算法竞赛之【输入输出重定向】 当我们求解acm题目时,通常在设计好算法程序后,要在调试环境(例如VC等)中运行程序,输入测试数据,当能得到正确运行结果后,才将程序提交到oj中。但由于调试往往不能一次成功,每次运行时,都要重新输入一遍测试数据,对于有大量输入数据的题目,输入数据需要花费大量时间。 一个好的方法是用文件一一把输入数据保存在 文件中,...

底层码农 1万+

输入输出重定向fopen函数——C语言进阶

浅谈 fopen与 freopen 函数

qq_61500888的博客 1626

算法竞赛文件输入输出

算法竞赛输入输出

tigerfish121的博客 1458

算法竞赛入门经典(第 2 版)——语言篇

程序中的计时 #include<time.h> printf("Time used=.%2lf\n" ,(double)clock() / CLOCKS_PER_SEC); Π(圆中的 pai 的表示) #include<math.h> const double pi = acos(-1.0); 算法竞赛中的输入输出框架 重定向版 #define LOC...

qq_41668789的博客 413

使用文件进行输入输出的两种方式(算法竞赛入门经典第2章)

使用文件进行输入输出的两种方式: 1,  重定向       freopen("input.txt", "r", stdin);       freopen("output.txt", "w", stdout);       上述语句将使得scanf从文件input.txt读入,printf写入文件output.txt。事实上,不只是scanfprintf,所有读键盘输入、写屏幕输出的函...

weixin_39450145的博客 1313

【C/C++】freopen与fopen实战指南:从标准流重定向文件交互编程

本文深入探讨了C/C++中freopen与fopen的核心差异及实战应用。freopen适用于标准流重定向,特别适合算法竞赛日志记录;而fopen则提供更精细的文件控制,适合多文件处理二进制操作。文章通过代码示例详细展示了两种方法的最佳实践常见陷阱,帮助开发者根据场景选择合适方案。

weixin_30861797的博客 555

{算法竞赛入门经典}第二章 文件操作 重定向fopen版本

  例题2-4 数据统计    输入一些整数,求出它们的最小值,最大值平均值(保留3位小数).输入保证这些数都是不超过1000的整数.  #include#define INF 1000000int main(){ int x,n,sum,min,max; min = INF; max = -INF; sum = 0;

空白 2579

算法竞赛中的输入输出框架

算法竞赛入门到精通

m0_72674633的博客 406

算法竞赛入门经典第二章习题解答

本章的题目需用文件输入输出,如果题目代号为abc,那么输入文件为abc.in,输出文件为abc.out。如果对文件操作不熟练,请尽量把fopenfreopen两种方法都尝试一下。 注:本次解答中前4题给出两种方法,其余均采用重定向方法。 习题2-1 位数(digit) 问题描述:输入一个不超过10^9的正整数,输出它的位数。例如12735的位数是5.请不要使用任何数学函数,只用四则运算

Yesterday You Said Tomorrow. 1330

2.4 算法竞赛中的输入输出框架

freopen 、fopen 函数

applehth的博客 505

算法竞赛入门经典_2.4_算法竞赛中的输入输出框架

  很久没写博客了,我偷奶(懒)了这个月. 今天的一节是算法竞赛中的输入输出框架,比较实用.   我们先看一个demo #include "stdio.h" //数据统计 2017-8-14 #define LOCAL #define INF 1000000000 int main(int argc, char* argv[]) { #ifdef LOCAL ...

weixin_30797199的博客 187

【随笔】关于算法竞赛中使用文件输入输出文件名的规定等问题

近日有网友在百度提问关于算法竞赛中使用文件输入输出文件名的规定等问题。 回答: 算法竞赛文件名有着严格的规定,包括程序名输入输出文件名,不要使用绝对路径或者相对路径。 你的这个题目规定程序名是cross,那么程序的源代码就要存为cross.c,输入文件为cross.in,输出文件名为cross.out,一般来说的话都是这样要求的。比赛的时候代码手册上面应该也会有说明DEMO的。 文...

weixin_33725270的博客 198
下一篇: Maven导入项目出现类似"Cannot read lifecycle ..invalid END header "问题的解决办法
Lemoxx
博客等级 码龄9年 19粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值