C语言大赛 第七题

本文详细解析了C语言大赛中的第七题,包括输入文件处理、数据读取、计算最大值、最小值和平均值的过程,并提供了代码实现及运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天发帖子下面出个C语言大赛,看了下,做了其中的第七题,没想到过期了,发布在这里吧,程序代码如下,用习语言编译工具编译:

 

第七题程序,原题描述:
 文件data.in中保存有m (m < 2000) 个数据行,每行最多包含25个由空格分隔的正整数。
 给出整数k(k <26),计算文件中第k列所有数据的最大值、最小值和平均值。
 最大值和最小值以整数格式输出,平均值保持两位小数。若某行的列数小于k,则认为该行第k列的值为0

#包含 “习语言系统.接口”

字符串类型  输入文件名 = “data.in”;
#定义  最大行   2000
#定义  最大列   25
#定义  行最大字节数   2048 
#定义  缺省进制   10
整数类型 主函数(整数类型 参数个数, 字符串类型 参数[] )
{  
 整数类型  输入数据[最大行][最大列], 行,行数, 列, 数字, 最大值=-1, 最小值=-1;
 字符类型    输入行[行最大字节数], *指针;
 文件类型 * 输入文件;
 小数类型    总和 = 0;
 
   输出字符串并换行("第七题程序处理开始,使用中文c-习语言编译工具编译");
 【先都初始化为 0】
 步进循环( 行 = 0; 行 小于 最大行; 行 加加 )
 {
  步进循环( 列 = 0; 列 小于 最大列; 列 加加 )
   输入数据[行][列] = 0;
 }
 输入文件 = 文件打开( 输入文件名, “读”);
 如果( 输入文件  等于 空指针 )
 {
  格式输出( “无法打开文件%串%行”,输入文件名);
  返回 1;
 }
 行=-1, 列=0;
 重复{
  如果( 文件读字符串( 输入文件, 输入行, 行最大字节数 ) )
  {
   如果( 行 小于 最大行-1 )行 ++, 列 = 0;
   否则 跳出;
   
   指针 = 输入行;
   当( 字符串长度(指针) 大于 0 )
   {
    数字 = 字符串转整数( 指针, 缺省进制 , & 指针 );
    格式输出(“行 %整 :数字=%整%行”,行, 数字 );   【调试用,可屏蔽】
    如果( 列 小于 最大列 ) 输入数据[行][列++] = 数字;
    当(*指针 并且 !是半角数字( *指针) )指针 ++;
   }
  }
 }直到( 文件结束(输入文件) );
 文件关闭( 输入文件 );
 行数 = 行+1;
 
 格式输出(“行数 %整 :数字=%整%行”,行数,输入数据[行][0] );  【调试用,可屏蔽】
 
 重复{
  格式输出( “请输入列:”);
  格式输入( “%(整数)”, 取地址 列);
  如果(列 小于 1  或 列 大于 最大列 )
   格式输出( “输入错误,必须大于0 小于 %整 %行”, 最大列+1 );
 }直到( 列 大于 0 并且  列 小于等于 最大列 );
 列 -= 1;
 
 步进循环( 行 = 0; 行 小于 行数; 行 加加 )
 {
  总和 += 输入数据[行][列] ;
  格式输出( “总和=%小, 行=%整,数据= %整 %行”, 总和, 行,  输入数据[行][列] );  【调试用,可屏蔽】
  如果( 最大值 小于 0 )     最大值  =  输入数据[行][列];
  或者( 最大值 小于  输入数据[行][列] ) 最大值  =  输入数据[行][列];
   
  如果( 最小值 小于 0 )     最小值  =  输入数据[行][列];
  或者(  最小值 大于  输入数据[行][列] )最小值 =   输入数据[行][列];
 } 
 格式输出( “计算结束,第%整列总和=%小,平均值=%小, 最大值=%整,最小值=%整 %行”,列, 总和, 总和/行数, 最大值, 最小值 );
 暂停(); 
 返回 0;
}  

data.in 内容:
2 5  7  23 444 92   2 54
33   4   82   11
44  5   7   9   36   711
3  4    111  333  21   66
4   4    555  55  5   

运行结果:
第七题程序处理开始,使用中文c-习语言编译工具编译
行 0 :数字=2
行 0 :数字=5
行 0 :数字=7
行 0 :数字=23
行 0 :数字=444
行 0 :数字=92
行 0 :数字=2
行 0 :数字=54
行 1 :数字=33
行 1 :数字=4
行 1 :数字=82
行 1 :数字=11
行 2 :数字=44
行 2 :数字=5
行 2 :数字=7
行 2 :数字=9
行 2 :数字=36
行 2 :数字=711
行 3 :数字=3
行 3 :数字=4
行 3 :数字=111
行 3 :数字=333
行 3 :数字=21
行 3 :数字=66
行 4 :数字=4
行 4 :数字=4
行 4 :数字=555
行 4 :数字=55
行 4 :数字=5
行数 5 :数字=4
请输入列:3
总和=7.000000, 行=0,数据= 7
总和=89.000000, 行=1,数据= 82
总和=96.000000, 行=2,数据= 7
总和=207.000000, 行=3,数据= 111
总和=762.000000, 行=4,数据= 555
计算结束,2列总和=762.000000,平均值=152.400000, 最大值=555,最小值=7
按任意键继续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值