我的作业有问题。我花了最后一个小时试图弄清楚。我个人没有发现任何语法错误。
这是错误
错误1错误C2440:"函数":无法从"double[49]"转换为"double"
这是它所指的行:
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("nn<STUDENT NAME> Budget Report (Student ID:%dn", student_id[size]);
printf("~~~~~~~~~~~~~~~~~~~~~n");
printf("Expensesn~~~~~~~~nn");
printf("%45c MONTHLY %6c ANNUALLYn", ' ', ' ');
printf("Total Expenses: %28c $ %.2lf %5c $ %.2lfn", ' ', exp_m[size], ' ', exp_y[size]);
printf("Total Income: %30c $ %.2lf %5c $ %.2lfn", ' ',income_m[size], ' ',income_y[size]);
printf("Total Savings Available for your goals: %4c $ %.2lf %6c $ %.2lfnnn", ' ', income_m[size]-exp_m[size], ' ', income_y[size]-exp_y[size]);
return;
}
如果还有什么我可以粘贴的,请告诉我,我完全被难住了。如有任何帮助,我们将不胜感激。
解决方案
原型中缺少[]
。
一种分析方法:查看错误,它清楚地表明编译器正试图将double
s(double[49]
)数组转换为一个普通的double
。
如果我们查看您的std_report
函数,您使用的是带有数组下标的所有相关变量,因此错误不可能存在,您的编译器还指示错误发生在您调用std_report
的行。由于作为参数传递的变量具有正确的类型,因此编译器必须假设其中一个参数具有不同的类型。
因此,我们必须检查与编译器通信的std_report
所需参数列表的所有点,即实现和所有声明。