编程输出信息时出错

时间:2015-04-12 16:23:59

标签: c output scanf

这个程序正常运行,但只有一个bug。它没有从欧元兑换成美元,只是给了我

  

0.0欧元= 0.0美元;

你能帮帮我吗?

#include <stdio.h>
#include <stdlib.h>

void dollar(float dollar);

int main()
{
    char what;
    int howmany;
    int i;
    float dollar2;
    float euro2;

    printf("enter how many times do you want to convert\n");
    scanf(" %d", &howmany);
    printf("enter U if you want to convert from USD to Euro\n");
    printf("enter E if you want to convert from Euro to USD\n");

    for(i=0; i<=howmany-1; i++)
    {
        scanf(" %c", &what);
        if(what == 'E')
        {
            printf(" Enter how many euros do you want to convert\n");
            scanf(" %f", &euro2);
            euro(euro2);
        }
        if(what == 'U' ){
            printf(" Enter how many dollars do you want to convert\n");
            scanf(" %f", &dollar2);
            dollar(dollar2);
        }
    }
    return 0;
}

void dollar(float dollar)
{
    float euro = 0.94 * dollar;
    printf("%0.2f dollar = %0.2f euro\n", dollar, euro);
    return;
}

void euro(float euro)
{
    float dollar = 1.37 * euro;
    printf("%0.2f EURO = %0.2f DOLLAR\n", euro, dollar);
    return;
}

2 个答案:

答案 0 :(得分:1)

&#34;在计算机编程中,函数原型或函数接口是函数的声明,它指定函数的名称和类型签名(arity,参数类型和返回类型),但省略了函数。BODY&#34; https://en.wikipedia.org/wiki/Function_prototype

基本上,由于欧元是在主要货币之后宣布的,当您在主要货币时调用欧元时,它不知道该功能在哪里。这可以通过将函数声明为main或使用函数原型来避免。

函数原型的结构就像这样

your_return_type function_name(arg_type,arg_type,arg_type....);

答案 1 :(得分:0)

你没有在euro()之前声明main()所以,当你在main()中调用它时,编译器假定它需要int作为参数,将你的值转换为0当它通过时。

添加此

void euro(float value);

main()之前,它会起作用。

但是我建议检查scanf()的返回值,即使它有效,因为它会更健壮,你会习惯做错误检查,这是一件非常繁琐的事情,但非常必要的事情。