【发布时间】:2014-12-12 04:16:16
【问题描述】:
我正在查看一个示例代码,其中涉及打印出整数数据类型的少数数字的平均值。代码是:
#include<stdio.h>
double getavg(int a[],int size){
int temp=0;
for(int i=0;i<size;i++){
temp+=a[i];
//checking intermediate temp
printf("%d ",temp);
}
return (temp/size);
}
int main(){
int arr[5]={1,2,3,4,5};
for(int i=0;i<5;i++)
printf("%d ",arr[i]);
printf("\n");
int avg=getavg(arr,5);
printf("\n");
printf("Average is %d",avg);
}
我尝试将 temp 的数据类型从 integer 更改为 double,其余代码保持不变,我执行了程序,但现在代码将平均值输出为 0,并且所有中间 temp 值都被评估为零。
#include<stdio.h>
double getavg(int a[],int size){
double temp=0;
for(int i=0;i<size;i++){
temp+=a[i];
//checking intermediate temp
printf("%d ",temp);
}
return (temp/size);
}
任何人都可以清除这个吗?
【问题讨论】:
-
评估为 0 是否意味着 printf 将显示 0?如果是,那是因为您使用的是 %d 而不是 %f。
标签: c