| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2950 人关注过本帖
标题:读取来自数据文件的5个整数求平均值,保留两位小数。编译时没错,怎么结果出 ...
只看楼主 加入收藏
qidao308
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-4-8
结帖率:0
收藏
 问题点数:0 回复次数:6 
读取来自数据文件的5个整数求平均值,保留两位小数。编译时没错,怎么结果出错??
#include<stdio.h>


int main()
{
    int    arr[5];
    int    i=0;
    int     sum=0;
    float    average;

    FILE    *fp;
    fp    =fopen("data.in","r");
    if(fp == NULL){
        fprintf(stderr,"can't open file!\n");
        fclose(fp);
        return 1;
    }
    while(fscanf(fp,"%d",&arr[i])==1);
    i++;
    sum=arr[0]+arr[1]+arr[2]+arr[3]+arr[4];
    average = sum/5;

    printf("%.2f\n",average);
   
    return 0;



}
搜索更多相关主题的帖子: arr average return 平均值 
2013-05-06 20:15
Ryker
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:145
专家分:420
注 册:2013-2-19
收藏
得分:0 
我就不评论你的代码了。。。

只说问题
 arr 是按照%d 读取的,如果你文件里保存的是浮点数,读进来的都是垃圾值,也许arr[0]和arr[1] 是一个浮点数的小数点前后两部分

如果文件里保存的是整数,那么结果不对的可能就是

sum /5 得到的是一个整数,丢弃小数部分

用 (float)sum / 5

[ 本帖最后由 Ryker 于 2013-5-6 21:51 编辑 ]
2013-05-06 21:49
小小玉
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:47
专家分:156
注 册:2013-4-13
收藏
得分:0 
我想问一下楼上的,文件里面的数怎么写,每个数之间用空格隔一下,还是怎么样?
2013-05-06 21:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用小小玉在2013-5-6 21:56:55的发言:

我想问一下楼上的,文件里面的数怎么写,每个数之间用空格隔一下,还是怎么样?

对文件文件,与在屏幕上完全一模一样。

授人以渔,不授人以鱼。
2013-05-06 22:46
lw猫猫
Rank: 2
等 级:论坛游民
帖 子:10
专家分:22
注 册:2013-3-11
收藏
得分:0 
#include<stdio.h>


int main()
{
    int    arr[5];
    int    i=0;
    int     sum=0;
    float    average;

    FILE    *fp;
    fp    =fopen("c:\\123.txt","r");
    if(fp == NULL){
        fprintf(stderr,"can't open file!\n");
        fclose(fp);
        return 1;
    }
    while(fscanf(fp,"%d",&arr[i])==1){
        sum+=arr[i];}
    average = sum/5;

    printf("%f\n",average);
   
    return 0;



}
2013-05-06 23:02
lw猫猫
Rank: 2
等 级:论坛游民
帖 子:10
专家分:22
注 册:2013-3-11
收藏
得分:0 
这样应该就行了。。
我是新手。。
2013-05-06 23:03
liuxiaojie
Rank: 2
等 级:论坛游民
帖 子:16
专家分:14
注 册:2013-3-14
收藏
得分:0 
sum是整型,average是浮点型,sum/5是整型值,可以改为average=sum/5.0或如二楼所说的average=(float)sum / 5
2013-05-07 00:06
快速回复:读取来自数据文件的5个整数求平均值,保留两位小数。编译时没错,怎么结 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032026 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved