编写一个程序来分配零钱。用户输入已支付金额和应付金额。该计划确定应该找多少美元、25 美分、10 美分、5 美分和 10 分的硬币作为找零。在 main() 中询问用户两个输入(到期金额和支付金额),然后将它们与指向 5 个参数(美元、25 美分、10 分、镍币、便士)的指针一起发送到名为 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 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()
中所做的任何事情实际上都不重要。
您正在从输入中读取 due
和 paid
,然后调用一个无关紧要的函数,然后打印大量未初始化的变量到输出。
后记:
到目前为止,您已经问了五个问题,每个问题都遵循类似的模式:解释您的程序应该做什么、一行“它不起作用”和一个代码转储。
这不是 StackOverflow 或任何其他问答网站的工作方式。
例如,您的问题不是“计算变化”,而是“参数传递”。与您发布的所有其他问题一样,可以想象它可以用十行代码来表达,最多。您将找零计算交给我们反而表明您缺乏努力,这就是为什么您不断获得反对票的原因。
后记2:
我访问了您的其他问题。五分之四的问题基本相同:您还没有理解指针和参数传递的工作原理。由于您的问题如此模糊,您得到的答案到处都是,这没有多大帮助。然后,您在没有真正理解自己在做什么的情况下进行了反复试验,并且每次尝试您的程序实际上都会变得更糟...
因此,供您考虑,一个进行一些指向和参数传递的程序是正确的,一次只使用一个参数,并且对于它正在做什么非常详细。研究一下,它真的一次性回答了你最后四个问题:
#include <stdio.h>
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;
}
关于c 答案错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22606261/