带函数和货币的c指针
编写一个程序来分配更改。用户输入支付的金额和到期金额。这个程序决定了应该给多少美元、25美分、10美分、5美分和1美分作为零钱。请用户在main()中输入两个参数(到期金额和已付金额),然后将它们连同指向5个参数(美元、25美分、10美分、5美分、1美分)的指针发送到名为change()的函数,该函数将计算每个参数的数量。从main()打印结果 我的程序现在出了什么问题。它编译起来没有问题,但我的答案是错的,真的错了带函数和货币的c指针,c,function,pointers,C,Function,Pointers,编写一个程序来分配更改。用户输入支付的金额和到期金额。这个程序决定了应该给多少美元、25美分、10美分、5美分和1美分作为零钱。请用户在main()中输入两个参数(到期金额和已付金额),然后将它们连同指向5个参数(美元、25美分、10美分、5美分、1美分)的指针发送到名为change()的函数,该函数将计算每个参数的数量。从main()打印结果 我的程序现在出了什么问题。它编译起来没有问题,但我的答案是错的,真的错了 #include <stdio.h> #include <c
#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
:removeint d代码>,并修改为*d=penniestotal/100代码>。同上。可能的重复——不同的错误,但实际上是相同的程序,并且链接问题的错误也已经存在于这个程序中(函数change()
就main()
的输出而言,实际上没有做任何事情).int d的声明隐藏了一个参数,该参数表示存在另一个同名的变量。