为何结果如此诡异??
本帖最后由 欣欣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:}
#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;
} double average(double n );
这个函数的参数类型是double
而调用处avg = average( score ); score的类型是int
它们是不同的,所以会发生“无法预知”的后果。 仰望天上的光 发表于 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:}
#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;
}
//程序我已经改了,你看看,要注意初始化变量,以及变量之间类型的转化,要注意!再交流啊!呵呵! 额。。。才发现。。比楼上慢一点
#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; 变量应该赋值。 感谢各路大神赐教,{:7_169:}终于搞掂了,运行结果74.5 终于可以收工了{:5_95:} s没有赋初值
页:
[1]