讨论文件输入输出

输入不超过1000的若干整数,输出最大、最小、平均值:

关键在于,输入数字个数是不确定的

一,利用scanf函数的返回值就是返回输入数字的个数,的,这个特性判断输入终止。

#include"iostream"
#include"ctime"
using namespace std; 

int main()
{
    int x,n=0,min,max,s=0;
    while(scanf("%d",&x)==1){
        s+=x;
        if(x<min)min=x;
        if(x>max)max=x;
        ++n;
    }
    printf("%d %d %d",min,max,(double)s/n);
    return 0;
}

这样子做可以输入无限多的数,但问题是,如何结束输入呢?

enter+ctrl z+enter可以结束输入.

另外值得注意的是,定义min与max时并未赋初值,如果直接将他们输出,会看出此时他们的值其实是任意的;所幸的是,我的电脑上min=41,max=0,还比较靠谱;如果min随机到了-100000,max随机到了100000,在这种情况下,当我们输入的数据都既不太小又不太大时,最大最小值就都得不到正确答案。

所以最好还是为min与max赋初值,例如定义INF=2147483648(2^32),max=-INF,min=INF-1.

二,利用文件读写

1.输入输出重定向:在main函数入口处加:

freopen("intput.txt","r",stdin);
freopen("output.txt","w",stdout);

这样,scanf函数将从input.txt中读入,printf写入文件output.txt。这样子一个巨大的好处就是,当题目需要输入很多数字,你一遍遍的验证自己的程序是否正确时,再也不用一遍遍的输入了,剩下好多时间!

但是,有些比赛不允许通过文件重定向来读写文件,这时可以用“开关”来控制是否使用文件重定向。

当定义了LOCAL,就执行 #ifdef LOCAL 与 #endif 之间的语句,因此,在提交时删除掉#define LOCAL即可。这使得我们可以继续享受输入输出重定向带来的便捷。

另还,还可以在编译选项里定义这个LOCAL符号,参考紫书附录A

#define LOCAL
#include"iostream"
#include"ctime"
using namespace std; 

int main()
{
    #ifdef LOCAL
    freopen("intput.txt","r",stdin);
    freopen("output.txt","w",stdout);
    #endif
    int x,n=0,min,max,s=0;
    while(scanf("%d",&x)==1){
        s+=x;
        if(x<min)min=x;
        if(x>max)max=x;
        ++n;
    }
    printf("%d %d %d",min,max,(double)s/n);
    return 0;
}

2.当比赛要求一定要用文件输入输出,但禁止用重定向的方式时,程序如下

阅读程序可了解具体语法

#include"iostream"
#include"ctime"
using namespace std; 

#define INF 1000000000

int main()
{
    FILE *fin,*fout;
    fin=fopen("data.in","rb");
    fout=fopen("data.out","wb");
    int x,n=0,min=INF,max=-INF,s=0;
    while(fscanf(fin,"%d",&x)==1)
    {
        s+=x;
        if(x<min)min=x;
        if(x>max)max=x;
        n++
    }
    fprintf(fout,"%d %d %.3f\n",min,max,(double)s/n);
    fclose(fin);
    fclose(fout);
    return 0;
}

原文地址:https://www.cnblogs.com/ucandoit/p/8229018.html

时间: 2024-08-27 06:48:11

讨论文件输入输出的相关文章

Python文件输入输出

http://blog.csdn.net/pipisorry/article/details/37769669python文件输入输出教程 python文件中的读入科学计数法的数字 float(word_dist) 皮皮blog python文件读取 内置函数open() 得到一个文件对象(file object):open(filename, mode='r') 函数参数 1. 模式mode: 模式 描述 r 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. rb 以二进制格式

【转】acm技巧 使用文件输入输出方便测试的方法

Felix大牛给了一种更简单使用文件输入输出的改进方法,在ACM中应用很广,而且超赞,现在来介绍一下. 这次用到的文件打开函数不再是fopen,而是stdio.h中包含的另一个函数freopen FILE * freopen ( const char * filename, const char * mode, FILE * stream ); [参数说明] filename: 要打开的文件名 mode: 文件打开的模式,和fopen中的模式(r/w)相同 stream: 文件指针,通常使用标准

文件输入输出

文件输入输出的例子 以输出任意一组数的最大最小值,平均值为例 input:2 8 3 5 1 7 3 6 output:1 8 4.375 1重定向式 如果有#define LOCAL的时候执行#ifdef LOCAL 和#endif之间的语句, 没有定义LOCAL的时候不执行: 两个fopen加在main函数入口处,他将使得scanf从文件input.txt读入,printf写入文件output.txt #include <stdio.h>#define LOCAL int main() {

Syetem Verilog 文件输入输出系统任务及函数

[1]文件的打开.关闭 函数: 打开文件 $fopen 关闭文件 $fclose 语法: 打开文件 fd = $fopen(filename, type); 关闭文件 $fclose(fd); 说明: filename 为string类型,指定所需要打开的文件 type为打开文件方式,主要有: "r":以只读方式打开 "w":以写方式打开 "a":append,写入到打开文件的结尾 fd 为打开的文件的文件描述符,对改文件的所有操作通过对fd操作

【足迹C++primer】22、文件输入输出

文件输入输出 使用文件流对象 创建文件流对象时,我们可以提供文件名(可选).如果提供了一个文件名,则open会自动被调用: ifstream in(ifile); //构造一个ifstream并打开给定文件 ofstream out; //输出文件流未关联到任何文件 用fstream代替iostream& 首先这里有一个头文件和一个定义的文件要使用 Sales_data.h #ifndef SALES_DATA_H_INCLUDED #define SALES_DATA_H_INCLUDED #

python 中文件输入输出及os模块对文件系统的操作

整理了一下python 中文件的输入输出及主要介绍一些os模块中对文件系统的操作. 文件输入输出 1.内建函数open(file_name,文件打开模式,通用换行符支持),打开文件返回文件对象. 2.对打开文件进行读取时,readline()与readlines()的区别在于是否一次性的读取所有的内容,并将每行的信息作为列表中的一个子项. 例如:文件test.txt中 1,3,4 2,35,6 分别用readline与readlines对其进行读取 r=file_object.readline(

利用数组的的文件输入输出

利用数组的文件输入输出 1. 将数组以二进制格式保存到磁盘 np.save和np.load是读写磁盘数组数据的两个主要函数.默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中的. import numpy as np arr=np.arange(10) np.save('some_array',arr) 如果文件路径末尾没有扩展名.npy,则该扩展名会自动加上.然后就可以通过np.load读取磁盘上数组: print(np.load('some_array.npy')) #

LibreOJ #3.Copycat 文件输入输出

题目描述 这道题用于测试文件输入输出,请注意使用文件输入输出,而非标准输入输出. 输入一个正整数 aa,输出这个数 aa. 输入格式 第一行一个正整数 TT,表示有 TT 组测试数据.接下来 TT 行,每行一个正整数 aa. 输出格式 输出 TT 行,每行一个正整数 aa. 样例 样例输入 1 3 1 2 3 样例输出 1 1 2 3 样例输入 2 1 1000000000000000000000000000000000 样例输出 2 100000000000000000000000000000

c语言 格式化文件输入输出

已经对普通的格式化输入输出函数scanf和printf很熟悉了,格式化文件输入输出函数是在两个函数名前加f,表明"读写对象是磁盘文件而不是键盘和显示器". 两个函数的原型为: int fprintf(FILE , const char , -); int fscanf(FILE , const char , -); fprintf和fscanf与普通的printf和scanf用法几乎一致,唯一的不同在于多了第一个参数-文件指针,用以标识输入的源文件或输出的目的文件. 当输入输出正确时,