首页 文章

c指针功能和金钱

提问于
浏览
-2

编写程序以分发更改 . 用户输入已支付的金额和到期金额 . 该程序确定应该给出多少美元,四分之一,一角硬币,一分钱和几分钱作为变化 . 向用户询问main()中的两个输入(到期金额和支付金额),然后将这些输入与指向5个参数(美元,四分之一,硬币,镍币,便士)的指针一起发送到名为change()的函数,然后将执行计算每个给出的数量 . 从main()打印结果 .

我的程序现在有什么问题 . 它编译没有任何问题,但我的答案是错误的 .

#include <stdio.h>
#include <conio.h>

//function prototype
void change( int *d, int *q, int *di, int *n, int *p, int paid, int due );

int main()
{
    //variables
    int paid;
    int due;
    int dollars;
    int quarters;
    int dimes;
    int nickels;
    int pennies;

    //reference variables
    int *d;
    int *q;
    int *di;
    int *n;
    int *p;

    printf( "Enter amount due: \n" );
    scanf( "%d", &due );

    printf( "Enter amount paid: \n" );
    scanf( "%d", &paid );

    change( &dollars, &quarters, &dimes, &nickels, &pennies, paid, due );

    printf( "Dollars = %d\nquarters = %d\ndimes =%d\nnickels = %d\npennies = %d", dollars, quarters, dimes, nickels, pennies );

    getch();
    return 0;
}

void change( int *d, int *q, int *di, int *n, int *p, int paid, int due )
{
    int dm;
    int qm;
    int dim;
    int nm;
    int pm;
    int modu;
    int modu2;
    int modu3;
    int total;
    int penniestotal;

    total = due - paid;

    penniestotal = total * 100;

    dm = penniestotal / 100;
    modu = penniestotal % 100;
    qm = modu / 25;
    modu2 = modu % 25;
    dim = modu2 / 10;
    modu3 = modu2 % 10;
    nm = modu3 / 5;
    pm = modu3 % 5;
}

3 回答

  • 2

    您声明/定义函数为

    void change(int *d,int *q,int *di, int *n, int *p, int paid, int due )
    

    并打电话给

    change(paid,due,&dollars,&quarters,&dimes,&nickels,&pennies);
    

    传递的前2个参数 paiddue 是整数,而函数需要整数指针 .

    好像你想把它们作为最后和最后一个参数传递 .

  • 0

    检查您的功能签名 .

    这应该是电话:

    change(&dollars,&quarters,&dimes,&nickels,&pennies,paid,due);
    
  • 0

    好像你正在使用call by reference方法

    change( &dollars, &quarters, &dimes, &nickels, &pennies, paid, due );
    

    并且函数定义为

    void change( int *d, int *q, int *di, int *n, int *p, int paid, int due )
    

    所以指针* d指向指针* d指向美元

    指针* q指向宿舍

    指针* di指向角钱

    指针* n指向镍币

    指针* p指向便士

    在函数中有一些计算, but finally the value is not assigned to the pointers ,以便它反映在main()函数值中 . 所以最后在函数结束时* void change(int * d,int * q,int * di,int * n,int p,int paid,int due)添加以下代码也

    *d=dm;
    *q=qm;
    *di=dim;
    *n=nm;
    *p=pm;
    

    有关通过引用方法调用的更多说明,请参阅链接:http://www.tutorialspoint.com/cprogramming/c_function_call_by_reference.htm

相关问题