0

我的作业有问题。我花了最后一个小时试图弄清楚。我个人没有看到任何语法错误。

这是错误

错误 1 ​​错误 C2440:“功能”:无法从“双 [49]”转换为“双”

这是它所指的行:

std_report(student_id, upexp_m, upexp_y, upinc_m, upinc_y, num);

随着声明:

int student_id[MAX];
double upexp_m[MAX], upexp_y[MAX], upinc_m[MAX], upinc_y[MAX];

void std_report(int student_id[], double exp_m[], double exp_[], double income_m, double income_y, int size);

和实施:

void std_report(int student_id[], double exp_m[], double exp_y[], double income_m[], double income_y[], int size) {
  printf("\n\n<STUDENT NAME> Budget Report (Student ID:%d\n", student_id[size]);
  printf("~~~~~~~~~~~~~~~~~~~~~\n");
  printf("Expenses\n~~~~~~~~\n\n");
  printf("%45c MONTHLY %6c ANNUALLY\n", ' ', ' ');
  printf("Total Expenses: %28c $ %.2lf %5c $ %.2lf\n", ' ', exp_m[size], ' ', exp_y[size]);
  printf("Total Income: %30c $ %.2lf %5c $ %.2lf\n", ' ',income_m[size], ' ',income_y[size]);
  printf("Total Savings Available for your goals: %4c $ %.2lf %6c $ %.2lf\n\n\n", ' ', income_m[size]-exp_m[size], ' ', income_y[size]-exp_y[size]);
  return;
}

如果还有什么我可以粘贴的,请告诉我,我完全被难住了。任何帮助将不胜感激。

解决方案

原型中缺少一个[]

4

1 回答 1

1

解决此问题的一种分析方法:查看错误,它清楚地表明您的编译器正在尝试将doubles ( double[49]) 数组转换为一个普通的double.

如果我们查看您的std_report函数,您正在使用带有数组下标的所有相关变量,因此错误不可能存在,您的编译器还会指示错误发生在您调用的行std_report。由于您作为参数传递的变量具有正确的类型,因此编译器必须假设其中一个参数具有不同的类型。

因此,我们必须检查您向编译器传达所需参数列表的所有点std_report,即实现和所有声明

于 2012-08-04T22:34:15.850 回答