无法解决此代码的问题

时间:2014-01-31 17:13:18

标签: c visual-studio-2013

好的,所以我把这件事送到了这里。 我不断收到一些错误。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <cstdio>


//functions called
int get_lmt();
int get_total_trash();
void print_output(int, int);

//why is it void?
int main(void)
{

    char hauler[100];
    int t_trash=0, lmt=0;

    printf("Hello \n What is your name: ");
    fflush(stdin);
    scanf("%s", &hauler);

    t_trash = get_total_trash();
    lmt = get_lmt();

    printf("Name: %s\n", &hauler);
    print_output(lmt, t_trash);
    system("pause");
    return 0;

}




int get_total_trash()
{
    char yn = 'y';
    int t_trash = 0, trash=0;

    while (yn != 'n')
    {
        printf("What is your trash: ");
        fflush(stdin);
        scanf("%i", &trash);

        t_trash = trash + t_trash;

        printf("Do you have more trash tons? (y or n): ");
        fflush(stdin);
        scanf("%c", &yn);
    }

    return t_trash;
}

int get_lmt()
{
    int lmt = 0;

    printf("What was last months trash: ");
    fflush(stdin);
    scanf("%i", &lmt);

    return lmt;
}

void print_output(int lmt, int t_trash)
{
    float rate = 350.00, charge;
    int sum=0, total=0;

    if (lmt > t_trash)
    {

        printf("Total trash tons: %i\n", &t_trash);
        printf("Last month's trash: %i\n", &lmt);
        printf("Rate: $ %.2f\n", &rate);

    }

    else
    {
        printf("What is your tonnage rate: ");
        fflush(stdin);
        scanf("%.2f\n", &charge);



        sum = t_trash - lmt;
        total = sum * charge;
        rate = rate + total;



        printf("Total trash tons: %i\n", &t_trash);
        printf("Last month's trash: %i\n", &lmt);
        printf("Rate: $ %.2f\n", &rate);

    }
}

现在它应该做的是,主要应该根据需要调用屏幕上的功能。 现在我用cout cin做了所有这些,它没有问题。但当我运行它(这被修改为printf和scanf)时,它说:

确定更新:有很多工作要做。还有一件事,我应该是好的。结果不会像预期的那样。

而不是输出 上个月垃圾:100(在循环结束时询问) 垃圾吨位:50(累积在循环中) rate:350.00(浮动变量)

(这是上个月垃圾是&gt;本月。)

我得到的数据都很糟糕。它没有数学意义。 除此之外,它工作正常。 最后一个函数的代码对你们来说是不正确的吗?

1 个答案:

答案 0 :(得分:0)

此代码存在很多问题。他们很多。

1)print_output defintiion接受char [100](char *),print_output声明接受char

2)当你将hauler传递给print_output时,你传递的是hauler [100](一个char,一个传递数组的末尾来启动)

3)printf(“名称:%s \ n”,&amp; hauler); hauler的类型为char [100](char *),因此&amp; hauler是char **。

可能还有更多。