博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据压缩--蓝桥杯
阅读量:4653 次
发布时间:2019-06-09

本文共 1769 字,大约阅读时间需要 5 分钟。

欢迎访问我的新博客:

原文地址:

前言

本题摘自“2012年第三届蓝桥杯全国软件大赛决赛(C本科)”第2题,由整理。

题目描述

    某工业监控设备不断发回采样数据。每个数据是一个整数(0到1000之间)。各个数据间用空白字符(空格,TAB或回车换行)分隔。这些数据以文本形式被存储在文件中。

    因为大多数时候,相邻的采样间隔数据是相同的,可以利用这个特征做数据的压缩存储。其方法是:对n(n>1)个连续相同的数字只记录n和该数字本身;对m(m>0)个连续不重复的数字,则记录 m*-1 和这些数字本身(之所以用负数,是为了与第一种情况区分,便于解压缩)。
    例如:采样数字:
    12 34 34 25 25 25 25 11 15 17 28 14 22 22 22 13
    则根据上述规则变化后:
    -1 12 2 34 4 25 -5 11 15 17 28 14 3 22 -1 13
    下面的程序实现了这个功能。请仔细阅读分析代码,填写空白的部分。

void pop(int s, int* buf, int c, FILE* fp){	int i;	if(s)	{		fprintf(fp, "%d %d ", c, *buf);	}	else	{		fprintf(fp, "%d ", -c);		for(i=0; i
0) _____________________________; // 填空2}void main(){ FILE* rfp; FILE* wfp; if((rfp=fopen(RFILE, "r")) == NULL) { printf("can not open %s!\n", RFILE); exit(1); } if((wfp=fopen(WFILE, "w")) == NULL) { printf("can not open %s!\n", WFILE); fclose(rfp); exit(2); } dopack(rfp, wfp); fclose(wfp); fclose(rfp);}

【注意】

    只填写缺少的部分,不要抄写已有的代码。
    所填写代码不超过1条语句(句中不会含有分号)
    所填代码长度不超过256个字符。
    答案写在“解答.txt”中,不要写在这里!

分析

该题目若是编程题,让自己写代码,难度貌似第一点。但是它是填空题,可以在不读懂每一条语句的情况下得出答案,当然都读懂更好。

pop函数的作用是将缓冲数组中的变量输出到文件。

为了验证代码正确性,在头部添加了一些预处理命令,才得以编译通过。

源代码

# include 
# include
# define BUF_N 1000# define RFILE "rfile.txt"# define WFILE "wfile.txt"void pop(int s, int* buf, int c, FILE* fp){ int i; if(s) { fprintf(fp, "%d %d ", c, *buf); } else { fprintf(fp, "%d ", -c); for(i=0; i
0) pop(pst, buf, c, w); // 填空2}int main(){ FILE* rfp; FILE* wfp; if((rfp=fopen(RFILE, "r")) == NULL) { printf("can not open %s!\n", RFILE); exit(1); } if((wfp=fopen(WFILE, "w")) == NULL) { printf("can not open %s!\n", WFILE); fclose(rfp); exit(2); } dopack(rfp, wfp); fclose(wfp); fclose(rfp);}

最后答案

1pop(pst, buf, c, w)

转载于:https://www.cnblogs.com/milkcu/archive/2013/04/29/3808901.html

你可能感兴趣的文章
HUST team contest #E A Mountain Road||poj 3846 (dp)
查看>>
密码破解之Hydra
查看>>
linux基础之vim编辑器
查看>>
20145202 《信息安全系统设计基础》第3周学习总结
查看>>
iOS-----使用AVAudioPlayer播放音乐
查看>>
Dom4j操作XML
查看>>
《剑指offer》第三十题(包含min函数的栈)
查看>>
使用.net开发手机管理软件 (四) AT指令简介
查看>>
PHP each
查看>>
接口管理与测试平台-小幺鸡
查看>>
静态方法和实例方法的区别
查看>>
Spring Security 无法登陆,报错:There is no PasswordEncoder mapped for the id “null”
查看>>
【前端开发】前端架构与具体的应用的矛盾,最终的简单才是王道。
查看>>
Flash AS3截图保存
查看>>
Ehcache.xml 配置及属性说明
查看>>
TCP连接的TIME_WAIT和CLOSE_WAIT 状态解说
查看>>
influxdb(三)
查看>>
iOS CoreAnimation剖析
查看>>
GET和POST的区别
查看>>
算法:冒泡排序
查看>>