C 为什么赢了';这些数字不是说对了吗?

C 为什么赢了';这些数字不是说对了吗?,c,C,由于您已经将地址作为参数传递到函数GetData中,因此需要替换函数: int GetData (int* PR, int* IY, int* NY); double monthly_payment (double MP, int PR, double IM, double Q); void print_amortization_table (int PR, int IY, double IM, int NY, int NM, double MP); int main (void) {

由于您已经将地址作为参数传递到函数GetData中,因此需要替换函数:

int GetData (int* PR, int* IY, int* NY);

double monthly_payment (double MP, int PR, double IM, double Q);

void print_amortization_table (int PR, int IY, double IM, int NY, int NM, double MP);

int main (void)
{

    int NY;         //number of years
    int NM;         //number of months
    int IY;         //interest/year
    int PR;         //principle
    double P;       //value of (1+IM)^NM
    double X;       //value of (1+IM)
    double Q;       //value of (p/(p-1))
    double IM;      //interest/month
    double MP;      //monthly payment

    GetData (&PR, &IY, &NY); //call to GetData 

    IM = (IY / 12) / 100;   //calculations
    X = (1 + IM);
    NM = (NY * 12);
    P = pow(X, NM);
    Q = (P / (P-1));

    MP = (PR * IM * Q);  //TEMP--- TO BE REMOVED
    printf("NY      NM      IY      PR      IM      MP\n");  //TEMP--- TO BE REMOVED
    printf("%d      %d      %d      %d      %lf     %lf\n", NY, NM, IY, PR, IM, MP);        //TEMP--- TO BE REMOVED
    //monthly_payment (MP, PR, IM, Q);      call to monthly payment
    //print_amortization_table (PR, IY, IM, NY, NM, MP);    call to print_amortization_table
}

int GetData (int* PR, int* IY, int* NY)
{

    printf("Amount of the loan (Principle)? ");
    scanf("%d", &PR);
    printf("Interest rate / year (percent)? ");
    scanf("%d", &IY);
    printf("Number of years? ");
    scanf("%d", &NY);
}

您还没有发布错误的描述。顺便说一句,我注意到您将利率(通常是一个真正的十进制数字)存储为整数。这是故意的吗?对不起,我对这个网站还不太熟悉,我想我不是很会思考。是的,这是故意的,因为它的意思是以百分比来解读。至于整体上有什么问题,当我运行程序时,所有的数字都非常奇怪。当我在GetData函数中输入5000、11、1时,打印行显示“1199870328 1513542048 0 4195523 0.000000-nan”,我找不到我做错了什么。如果您的编译器没有告诉您您正在错误地调用
scanf()
,您需要找到一种方法让编译器告诉您这些错误,或者你需要一个更好的编译器。GCC至少会告诉您在
GetData()
函数中传递了不正确的类型。注意:
(IY/12)/100
是用整数数学执行的。
int GetData (int* PR, int* IY, int* NY)
{
    printf("Amount of the loan (Principle)? ");
    scanf("%d", PR);   //PR is the address already
    printf("Interest rate / year (percent)? ");
    scanf("%d", IY);   //IY is the address already
    printf("Number of years? ");
    scanf("%d", NY);   //NY is the address already
}