Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带函数和货币的c指针_C_Function_Pointers - Fatal编程技术网

带函数和货币的c指针

带函数和货币的c指针,c,function,pointers,C,Function,Pointers,编写一个程序来分配更改。用户输入支付的金额和到期金额。这个程序决定了应该给多少美元、25美分、10美分、5美分和1美分作为零钱。请用户在main()中输入两个参数(到期金额和已付金额),然后将它们连同指向5个参数(美元、25美分、10美分、5美分、1美分)的指针发送到名为change()的函数,该函数将计算每个参数的数量。从main()打印结果 我的程序现在出了什么问题。它编译起来没有问题,但我的答案是错的,真的错了 #include <stdio.h> #include <c

编写一个程序来分配更改。用户输入支付的金额和到期金额。这个程序决定了应该给多少美元、25美分、10美分、5美分和1美分作为零钱。请用户在main()中输入两个参数(到期金额和已付金额),然后将它们连同指向5个参数(美元、25美分、10美分、5美分、1美分)的指针发送到名为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;
}
#包括
#包括
//功能原型
无效变更(int*d、int*q、int*di、int*n、int*p、int已付、int到期);
int main()
{
//变数
国际支付;
int到期;
整数美元;
内部宿舍;
一角硬币;
国际镍币;
整数便士;
//参考变量
int*d;
int*q;
int*di;
int*n;
int*p;
printf(“输入到期金额:\n”);
scanf(“%d”,到期日(&d));
printf(“输入支付金额:\n”);
scanf(“%d”和“已支付”);
零钱(美元、25美分硬币、10美分硬币、5美分硬币、便士、已付、到期);
printf(“美元=%d\n硬币=%d\n硬币=%d\n硬币=%d\n便士=%d”,美元、25美分、一角硬币、五分镍币、便士);
getch();
返回0;
}
无效变更(整数*d、整数*q、整数*di、整数*n、整数*p、整数已付、整数到期)
{
int-dm;
int qm;
int-dim;
int纳米;
int pm;
int modu;
int modu2;
int modu3;
整数合计;
整数便士总数;
总计=到期-已支付;
便士总数=总数*100;
dm=便士总数/100;
modu=便士总数%100;
qm=modu/25;
modu2=modu%25;
dim=modu2/10;
modu3=modu2%10;
nm=modu3/5;
pm=modu3%5;
}

您将函数声明/定义为

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

change(paid,due,&dollars,&quarters,&dimes,&nickels,&pennies);
传递的前两个参数
paid
due
是整数,而函数需要整数指针


似乎您希望将它们作为最后一个和第二个参数传递。

检查您的函数签名

这应该是电话:

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

看起来您使用的是引用调用方法

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指向便士

函数中有一些计算,但最后该值没有分配给指针,因此它会反映在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;

有关引用调用方法的更多说明,请参阅链接:

查看传递参数的顺序,以及函数原型声明的顺序。at
change
:remove
int d,并修改为
*d=penniestotal/100。同上。可能的重复——不同的错误,但实际上是相同的程序,并且链接问题的错误也已经存在于这个程序中(函数
change()
main()
的输出而言,实际上没有做任何事情).int d的声明隐藏了一个参数,该参数表示存在另一个同名的变量。