c用错误的答案回答

c用错误的答案回答,c,pointers,C,Pointers,编写一个程序来分配更改。用户输入支付的金额和到期金额。这个程序决定了应该给多少美元、25美分、10美分、5美分和1美分作为零钱。要求用户输入main中的两个输入:到期金额和支付金额,然后将它们与指向5个参数的指针一起发送到一个名为change的函数,该函数将计算每个参数的数量。从main打印结果 所以我的程序编译得很好,但我得到了错误的答案。我做错了什么 #include <stdio.h> #include <conio.h> //function prototype

编写一个程序来分配更改。用户输入支付的金额和到期金额。这个程序决定了应该给多少美元、25美分、10美分、5美分和1美分作为零钱。要求用户输入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 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将许多指针作为参数,但这些指针从未在函数中使用过。也没有返回值

这意味着你在支票上所做的一切都无关紧要

从输入中读取到期和已付款,然后调用一个无关紧要的函数,然后将大量未初始化的变量打印到输出

后记:

到目前为止,您已经问了五个问题,每个问题都遵循类似的模式:解释您的程序应该做什么,一行代码不起作用,以及代码转储

这不是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;
}

上周有人问这个问题。你的作业不是过期了吗?你是如何将这些值放回指针指向的位置的?不,我上周从未有过这样的想法——格式化你的代码并给变量起有意义的名字d、q、di、n和p不算在内。编程通常不是一场看谁的代码最短的竞赛,额外的可读性将使调试和维护代码变得更容易。您没有在change函数中设置d,因此美元将始终为零。你做错的不是编写单元测试