我正在查看一个示例代码,其中涉及打印出整数数据类型的少数数字的平均值。代码是:
#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的数据类型从整数更改为double,其余代码保持不变,我执行了程序,但现在代码输出平均值为0,并且所有中间临时值都被评估为零。
#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 :(得分:3)
我认为由于您使用的printf
“%d”蒙版,它会计算加倍但会打印一个int。请改用“%f”。
答案 1 :(得分:0)
为了打印双倍,您应该使用%lf
并使用%d
来打印结果的整数值。