c语言数据类型转换问题
程序代码:
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int a; int i; int array[20]; //获取20个随机数 srand((int)time(NULL)); for(i=0;i<20;i++) { array[i]=rand()%41+10; } //打印出来 for(i=0;i<20;i++) { printf("%d ",array[i]); } putchar('\n'); //这里就不用说了 printf("最大值:%d\n最小值:%d\n平均值:%lf\n总和:%d\n",max(array),min(array),average(array),sum(array)); return 1; } //下面是4个函数 int max(int *array) { int max; int i; max=array[0]; for(i=1;i<20;i++) { if(array[i]>max) max=array[i]; } return max; } int min(int *array) { int min; int i; min=array[0]; for(i=1;i<20;i++) { if(array[i]<min) min=array[i]; } return min; } double average(int *array) //就是这里出问题了 { int i; double average=0; for(i=0;i<20;i++) { average+=array[i]; } average/=20; return average; } int sum(int *array) { int i; int sum=0; for(i=0;i<20;i++) { sum+=array[i]; } return sum; }
求平均数的函数那里,原来是int型的返回值。由于平均值可能是小数,所以想改成double型的,结果就编译错误了(codeblocks,gcc编译器)
应该是类型冲突了,但我不知道哪里错了,该怎么改。
还有谁能讲讲数据类型转换的知识,谢谢了