数据统计(基于文件输入输出)

2023-11-09

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

基于文件重定向:

#define LOCAL         //作用:仅在本机使用重定向,提交时将其删掉 
#include <stdio.h>

const int INF=10000;

int main(){
#ifdef LOCAL  // 只有在定义了LACAL的情况下才编译下面两条freopen语句 
    freopen("datain.txt","r",stdin);
    freopen("dataout.txt","w",stdout);
#endif
    int n=0,x,sum=0,max=-INF,min=INF;//允许这样子定义和赋值交错;不是max=INF,min=-INF 
    while(scanf("%d",&x)==1){
        sum+=x;
        n++;
        if(max<x) max=x;
        if(min>x) min=x;
    }
    printf("%d %d %.3f\n",min,max,(double)sum/n);//若sum=6,n=4,(sum和n均为int) 答案为1.500 而非1.000 
    return 0;
} 

注意点:1.#ifdef #endif 是写在main函数里面
2.当把freopen语句删掉之后,就是很普通的标准输入输出了

基于fopen:

#include <stdio.h> 

const int INF=10000;

int main(){
    FILE *fin,*fout;                //声明变量 
    fin=fopen("datain.txt","rb");
    fout=fopen("dataout.txt","wb");

    int n=0,sum=0,max=-INF,min=INF,x;
    while(fscanf(fin,"%d",&x)==1){  
        sum+=x;
        n++;
        if(max<x) max=x;
        if(min>x) min=x;
    }
    fprintf(fout,"%d %d %.3f\n",min,max,(double)sum/n);
    fclose(fin);                          //关闭文件 
    fclose(fout);
    return 0;
}

注意点:1.fscanf 和fprintf 只是在scanf和printf中添加了一个目标文件参数而已。

备注:上面代码跑不出来,并没有成功读取文件。


关于输入方式的总结:

标准输入输出:即读键盘、写屏幕
文件输入输出:

  • 重定向
    注意的问题:遵循比赛中的文件名规定(程序文件名、输入输出文件名)、注意大小写、不要拼错文件名、不要使用相对路径或者绝对路径、、
    使用特定方法使得只在本地进行文件重定向
  • fopen
    使用框架:
    ① File *fin,*fout; (定义)
    fin=fopen(“data.in”,”rb”);
    fout=fopen(“data.out”,”wb”);
    ② fscanf(fin,”%d”,&x); (输入输出)
    fprintf(fout,”%d”,x);
    ③ fclose(fin); (关闭)
    fclose(fout);
  • 优劣比较
    重定向:简单,但是不可以同时读写文件和标准输入输出
    fopen:复杂,但是灵活度较大(如可以反复打开并读写文件)
    其中,如果想要把fopen版的程序改写为标准输入输出型,只需赋值fin=stdin,fout=stdout, 并且不需要调用fopen 和 fclose。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据统计(基于文件输入输出) 的相关文章

随机推荐

  • python3 面试题总结

    Python global 语句的作用 lambda 匿名函数好处 Python 错误处理 Python 内置错误类型 简述 any 和 all 方法 Python 中什么元素为假 提高 Python 运行效率的方法 Python 单例模式
  • LeetCode63. 不同路径 II

    不同路径 II 一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 Start 机器人每次只能向下或者向右移动一步 机器人试图达到网格的右下角 在下图中标记为 Finish 现在考虑网格中有障碍物 那么从左上角到右下角将会有
  • Halcon三维模型预处理(1):调平的三大手法

    面结构光拍摄生成的点云模型 往往相对系统坐标系是有角度的 首先讲一下调平的目的 1 为接下来的预处理切除背景面做准备 3 不做调平 后续处理会很麻烦 因为不清楚坐标系在平台的为位置 2 对于无序抓取项目 平台相对相机可能是有角度的 将抓取平
  • socket和mongodb

    socket 创建一个socket 然后连接server url net Socket 发送信息给服务器 socket通信 client可以进行数据的编写和发送 服务器 只有一个 只有开启了服务器 客户端才能进行连接 mongodb 关系型
  • 归并排序(简单易懂的代码)

    归并排序是一种很重要的排序算法 体现的是分而治之的思想 很多的算法题的解法会借用这种算法思想 在这里使用C 编程实现归并排序 供自己回忆 供他人参考 include
  • 单元测试--重构

    一 单元测试 1 在没写函数内容代码前 就要写单元测试类 每个测试类中有TestSuite 2 如果写单元测试很困难 那么可能是你对要测试的函数不是很了解 如果不是则可能是设计的问题 也许要重构 二 重构1 不要存在代码重复的现象 若有 且
  • Android-布局管理器

    线性布局 Linearlayout 属性 orientation 布局管理器内组件的排列方式 horizontal 水平 和vertical 垂直 默认值为 horizontal layout weight 权重 用于设置组件占父容器剩余空
  • 网易云音乐播放器部分问题集

    这周在做网易云音乐播放器 这期间遇到了不少问题 下面就来记录一下我所遇到的部分问题 一 接口问题 调用网易云的接口 网上一搜方法一大堆 但是我的理解有些问题 硬生生搞了好久 下面就给那个方法再重新小白化一遍TAT 安装环境 首先你要有nod
  • FastAPI Web框架 [Pydantic]

    学习一下 做个记录 Starlette Pydantic 与 FastAPI 的关系 Python 的类型提示 type hints Pydantic 是一个基于 Python 类型提示来定义数据验证 序列化和文档 使用JSON 模式 库
  • 基于Arduino IDE 和ESP32-CAM 制作远程摄像头

    说明 具体教程及详细步骤参考 arduino esp32 cam环境配置和例程使用 在这里仅仅针对个人在开发过程中的一点经验及上文帖子没提到的一些部分做一个总结 因为我当初根据这个教程做的时候有以下几点是导致我一开始浪费了大量时间精力的 特
  • redis设计与实现读书笔记-主从复制

    主从复制 在Redis中 用户可以通过执行SLAVEOF命令或者设置slaveof选项 让一个服务器去复制 replicate 另一个服务器 我们称呼被复制的服务器为主服务器 master 而对主服务器进行复制的服务器则被称为从服务器 sl
  • git使用X篇_2_Git全套教程IDEA版(git、GitHub、Gitee码云、搭建公司内部GitLab、与IDEA集成等内容)

    本文是根据以下视频及网上总结进行更新后的介绍git使用的博文 包含了git GitHub Gitee码云 搭建公司内部GitLab 与IDEA集成等内容 笔记来源 尚硅谷 5h打通Git全套教程IDEA版 涵盖GitHub Gitee码云
  • 初识docker之如何运行一个容器

    手把手运行一个镜像 1 容器的特点2 启动容器的参数3 docker run d it name test p 900 8080 v opt usr local 78b258e36eed d 后台执行容器 it 保持stdin和为容器创建t
  • 一文搞懂Redis架构演化之路

    你好 我是 Kaito 这篇文章我想和你聊一聊 Redis 的架构演化之路 现如今 Redis 变得越来越流行 几乎在很多项目中都要被用到 不知道你在使用 Redis 时 有没有思考过 Redis 到底是如何稳定 高性能地提供服务的 我使用
  • Java Stream流处理Map 详细用法

    文章目录 Java Stream流处理Map 详细用法 实体类 Stream方法 Java Stream流处理Map 详细用法 实体类 package com jzj model 当前描述 author jiazijie since 202
  • Code First Migrations更新数据库结构的具体步骤

    Code First Migrations更新数据库结构的具体步骤 作者 寒羽枫 cityhunter172 http blog csdn net cityhunter172 article details 8062420 我对 CodeF
  • Kaldi声学模型训练

    我的书 淘宝购买链接 当当购买链接 京东购买链接 支持标准的基于ML训练的模型 线性变换 如LDA HLDA MLLT STC 基于fMLLR MLLR的说话人自适应 支持混合系统 支持SGMMs 基于fMLLR的说话人识别 模型代码 可以
  • MAC 设计师必备的设计绘图软件 推荐与下载

    Mac设计师必备的设计绘图软件 为广大设计师推荐一些Mac上实用且强大的软件 使用好的软件 事半功倍 设计出精美的作品 Mac上优秀的设计类软件非常多 绝对不止这几款软件 看看以下内容 希望对你有帮助 如有更好的设计类软件大家也可以留言推荐
  • 放弃大厂高薪的程序员,涌进体制内

    本文转载自 InfoQ 作者 罗燕珊 我现在最庆幸的是 下班终于能看到太阳了 2020 年 8 月 20 日下午 5 点半 何双准备下班 他特地朝窗外拍了张照片并发在朋友圈 配图文案仅仅只有 太阳 92 年出生的何双原先是一名程序员 去年年
  • 数据统计(基于文件输入输出)

    输入一些整数 求出它们的最大值 最小值 平均值 保留三位小数 输入保证这些数都是不超过1000的整数 样例输入 2 8 3 5 1 7 3 6 样例输出 1 8 4 375 基于文件重定向 define LOCAL 作用 仅在本机使用重定向