首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数据统计,该如何解决

2013-01-28 
数据统计输入 一些整数,求出他们的最小值,最大值,平均值,输入保证这些数都是不超过1000的整数#define LOCA

数据统计
输入 一些整数,求出他们的最小值,最大值,平均值,输入保证这些数都是不超过1000的整数
#define LOCAL
#include<stdio.h>
#define INF 1000000000
int main()
{
    #ifdef LOCAL
    freopen("data.in","r",stdin);
    freopen("date.out","w",stdout);
    #endif
    int x,n=0,min=INF,max=INF,s=0;
    while(scanf("5d,&x")==1)
    {
        s+=x;
        if(x<min) min=x;
        if(x>max) max=x;
       // printf("x=%d,min=%d,max=%d\n",x,min,max);
       n++;
    }
    printf("%d %d %.3lf\n",min,max,(double)s/n);
    return 0;
}
这段代码有问题吗?还是我对重定向理解错了,该怎么运行那?自己建个文件?还是在屏幕上输入
[解决办法]


#define LOCAL
 #include<stdio.h>
 #define INF 1000000000
 int main()
 {
     #ifdef LOCAL
     freopen("data.in","r",stdin);
     freopen("date.out","w",stdout);
     #endif
     int x,n=0,min=INF,max=INF,s=0;
     while(scanf("%d,&x")==1) 
     {
         s+=x;
         if(x<min) min=x;
         if(x>max) max=x;
        // printf("x=%d,min=%d,max=%d\n",x,min,max);
        n++;
     }
     printf("%d %d %.3lf\n",min,max,(double)s/n);
     return 0;
 }

按你的输入条件,应该是标准输入,应该是键盘输入,屏幕输出。
[解决办法]
还有,代码中是有bug的,max应该初始化为最小的整数,否则你的结果max永远是INF

#define LOCAL
#include<stdio.h>
#define INF 1000000000
int main()
{
    #ifdef LOCAL
    freopen("data.in","r",stdin);
    freopen("date.out","w",stdout);
    #endif
/*
    int x,n=0,min=INF,max=INF,s=0;
    while(scanf("5d,&x")==1)
*/
    int x,n=0,min=INF,max=-INF,s=0;
    while(scanf("%d",&x)==1)
    {
        s+=x;
        if(x<min) min=x;
        if(x>max) max=x;
       // printf("x=%d,min=%d,max=%d\n",x,min,max);
       n++;
    }
    printf("%d %d %.3lf\n",min,max,(double)s/n);
    return 0;
}

热点排行