c得错了答案

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

所以我的程序编译良好,但我得到了错误的答案。 我究竟做错了什么。

#include  #include  //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 dollarChange; int quarterChange; int dimeChange; int nickelChange; int pennyChange; int modu; int modu2; int modu3; int total; int penniestotal; total = due - paid; penniestotal = total * 100; dollarChange = penniestotal / 100; modu = penniestotal % 100; quarterChange = modu / 25; modu2 = modu % 25; dimeChange = modu2 / 10; modu3 = modu2 % 10; nickelChange = modu3 / 5; pennyChange = modu3 % 5; } 

change()将许多指针作为参数,但这些指针从不在函数中使用。 也没有回报价值。

这意味着你在check()所做的一切都不重要。

你正在阅读输入的duepaid ,然后你调用一个无关紧要的函数,然后你输出许多未初始化的变量。

Postscriptum:

到目前为止,您已经提出了五个问题,每个问题都遵循类似的模式:解释您的程序应该做什么,“它不起作用”和代码转储。

这不是StackOverflow或任何其他Q&A网站的工作方式。

例如,你的问题不是“计算变化”,而是“参数传递”。 与您发布的所有其他问题一样,可以想象的是, 最多可以用十行代码表示。 你把改变计算倾倒在我们身上,显示你缺乏努力,这就是为什么你不断下来投票。

后记2:

我访问了你的其他问题。 五个问题中有四个基本相同:您还没有理解指针和参数传递是如何工作的。 既然你的问题太模糊了,你会得到满满的答案,这不是很有帮助。 然后你没有真正理解你正在做什么就试验和错误,你的程序实际上每次尝试都变得更糟

因此,为了您的考虑,一个程序执行一些指向和参数传递,它是正确的,一次只有一个参数,并且它正在做什么非常冗长。 研究它,它真的一次性回答你的最后四个问题:

 #include  void function( int * parameter ) { int local = 987; printf( "Address of 'local' is: %p\n", &local ); printf( "Value of 'local' is: %d\n\n", local ); printf( "Address that 'parameter' points to is: %p\n", parameter ); printf( "Value at that address is: %d\n\n", *parameter ); puts( "Switching 'parameter' to point to 'local'...\n" ); int * copy_of_parameter = parameter; parameter = &local; printf( "Address that 'parameter' NOW points to is: %p\n", parameter ); printf( "Value at that address is: %d\n\n", *parameter ); puts( "Changing value of 'local' through 'parameter'...\n" ); *parameter = 0; printf( "Address that 'parameter' points to is: %p\n", parameter ); printf( "Value at that address is: %d\n\n", *parameter ); puts( "Making 'parameter' point at the old address again...\n" ); parameter = copy_of_parameter; *parameter = 666; printf( "Address that 'parameter' NOW points to is: %p\n", parameter ); printf( "Value at that address is: %d\n\n", *parameter ); return; } int main() { int in_main = 123; printf( "Address of 'in_main' is: %p\n", &in_main ); printf( "Value at that address is: %d\n\n", in_main ); puts( "Calling function()...\n" ); function( &in_main ); puts( "Returned from function()...\n" ); printf( "Address of 'in_main' is: %p\n", &in_main ); printf( "Value at that address is: %d\n\n", in_main ); return 0; }