2015-04-12 60 views
0

該程序正常工作,但只有一個錯誤。它不會從歐元兌換爲美元,它只是給我輸出信息c編程時出錯

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; 
} 
+0

你有什麼輸入? –

+0

我第一次輸入4,然後它要求貨幣,所以我進入E這就是它 –

+0

是的,它對美元工作正常,但不是歐元! –

回答

0

你是不是main()之前宣佈euro()所以,當你在main()稱之爲編譯器是假設它需要int作爲參數,你的價值轉換爲0時,它的通過。

添加此

void euro(float value); 
main()

,它會工作。

但是,我建議您檢查scanf()的返回值,即使它有效,因爲它會更健壯,而且您會習慣做錯誤檢查,這是非常乏味的事情,但也是非常必要的事情。

1

「在計算機程序中,函數原型或函數接口是指定函數的名稱和類型簽名(參數數量,參數類型和返回類型)函數的聲明,但省略了函數體。」基本上,由於歐元是在main之後聲明的,所以當你在main中調用euro時,它不知道函數在哪裏。這可以通過在main上面聲明函數或使用函數原型來避免。

函數原型的結構是這樣的

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