为什么这段代码得不到想要的效果double average(int *score, int n) { double ave; ave=double(sum(score,n))/n; printf("ave=%d\n",ave); // 计算均分 } int sum(int *score, int n) { // 计算总分 int sum; for(int i=0;i<n;i++) { sum+=score[i]; } printf("sum=%d\n",sum); }
时间: 2023-12-14 09:38:08 浏览: 102
这段代码得不到想要的效果是因为 `printf()` 函数中的格式化字符串使用了 `%d`,表示输出一个整数,而 `ave` 变量的数据类型是 `double`,因此会出现精度损失,导致输出的结果不正确。应该使用 `%f` 格式化字符串来输出 `double` 类型的变量。
正确的代码应该是这样的:
```
double average(int *score, int n) {
double ave;
ave = double(sum(score, n)) / n;
printf("ave=%f\n", ave); // 使用 %f 格式化字符串来输出 double 类型的变量
}
int sum(int *score, int n) {
int sum = 0; // 初始化 sum 的值为 0
for (int i = 0; i < n; i++) {
sum += score[i];
}
printf("sum=%d\n", sum);
}
```
阅读全文