欣欣celin 发表于 2014-3-23 16:29:49

为何结果如此诡异??

本帖最后由 欣欣celin 于 2014-3-23 20:40 编辑

#include "stdio.h"
double average(double n );//声明均值计算函数
void main()
{
    int score = {85, 80, 76, 56, 45, 95, 77, 93, 52, 86};
    double avg;
    avg = average( score );//调用上叙函数

    printf("%d\n", avg);
}
double average(double n )//定义求均值的函数
{
    int i=0;
    double s, z;    //S代表成绩之和,Z代表均值
    for( ; i<10; i++)
    {
      s += n;      
    }
    z = s / 10;
    return z;
}

以上代码是要计算10科成绩的平均值,但运行结果却是1243068 ,
调试时,发现数组score的数据根本传不进n ,事关S,Z,N[ i ]显示的值一直是一堆负数
为何会出现这种现象??以上代码错了吗??求各路大神指点一二,感激不尽{:7_148:}

向往青莲 发表于 2014-3-23 16:29:50

#include "stdio.h"
double average(double n );//声明均值计算函数
void main()
{
        //1 首先这里要申明为double才可以
    double score = {85, 80, 76, 56, 45, 95, 77, 93, 52, 86};
    double avg;
    avg = average( score );//调用上叙函数

        //2 然后。因为是double类型。。所以用lf
    printf("%lf\n", avg);
}
double average(double n )//定义求均值的函数
{
    int i=0;
        //3 要初始化。。不然是随机数
    double s = 0, z;    //S代表成绩之和,Z代表均值
    for( ; i<10; i++)
    {
      s += n;      
    }
    z = s / 10;
    return z;
}

仰望天上的光 发表于 2014-3-23 17:03:31

double average(double n );
这个函数的参数类型是double
而调用处avg = average( score );   score的类型是int
它们是不同的,所以会发生“无法预知”的后果。

欣欣celin 发表于 2014-3-23 17:10:56

仰望天上的光 发表于 2014-3-23 17:03 static/image/common/back.gif
double average(double n );
这个函数的参数类型是double
而调用处avg = average( score );   ...

可是,改成这样之后
double score = {85, 80, 76, 56, 45, 95, 77, 93, 52, 86};
运行的结果是1889785610{:7_154:}

swsm 发表于 2014-3-23 17:20:37


#include "stdio.h"
float average(float n );///声明均值计算函数
void main()
{


    float score = {85.0, 80.0, 76.0, 56.0, 45.0, 95.0, 77.0, 93.0, 52.0, 86.0};
    float avg = 0.0;
    avg = average( score );//调用上叙函数

    printf("%f\n", avg);
}
float average(float n )//定义求均值的函数
{
    int i=0;
    float s = 0.0 , z= 0.0;    //S代表之和 Z代表均值
    for( ; i<10; i++)
    {
      s += n;      
    }
    z = s / 10.0;
    return z;
}
//程序我已经改了,你看看,要注意初始化变量,以及变量之间类型的转化,要注意!再交流啊!呵呵!

向往青莲 发表于 2014-3-23 17:28:15

额。。。才发现。。比楼上慢一点

杨学子 发表于 2014-3-23 17:46:20



#include "stdio.h"
double average(int n );//声明均值计算函数
void main()
{
    int score = {85, 80, 76, 56, 45, 95, 77, 93, 52, 86};
    double avg;
    avg = average(score);//调用上叙函数

    printf("%lf\n", avg);
}
double average(int n )//定义求均值的函数
{
    int i=0;
    double s=0, z=0;    //S代表成绩之和,Z代表均值
    for( ; i<10; i++)
    {
      s += n;      
    }
    z = s / 10;
    return z;
}


函数中有误 s += n; 变量应该赋值。

欣欣celin 发表于 2014-3-23 20:45:59

感谢各路大神赐教,{:7_169:}终于搞掂了,运行结果74.5 终于可以收工了{:5_95:}

||solo 发表于 2014-3-24 00:31:19

s没有赋初值
页: [1]
查看完整版本: 为何结果如此诡异??