2015-09-28 49 views
0

我剛剛開始學習C編程。所以我有通過函數改變溫度的問題。請檢查這個程序,我在哪裏做錯了?謝謝!!!更改溫度F到C有問題

#include<stdio.h> 
double f_to_c(double f); 
double get_integer(void); 

int main(void) 
{ 
    double a; 
    a = get_integer(); 

    printf("he degree in C:%f", f_to_c(a)); 

    return 0; 
} 
double get_integer(void) 
{ 
    double n; 
    printf("Enter the variable:"); 
    scanf_s("%f", &n); 
     return n; 
} 
double f_to_c(double f) 
{ 
    int f, c; 
    c = 5.0/0.9*(f - 32.0); 
    return c; 
} 
` 
+2

你有什麼問題? – juanchopanza

+1

get_integer()如何返回一個double對象? –

+0

爲什麼f和c在f_to_c中聲明爲int? – amdixon

回答

0
下面

更正代碼:

#include<stdio.h> 
double f_to_c(double f); 
double get_integer(void); 

int main(void) 
{ 
    double a; 
    a = get_integer(); 

    printf("he degree in C:%lf\n", f_to_c(a)); 

    return 0; 
} 
double get_integer(void) 
{ 
    double n; 
    printf("Enter the variable:"); 
    scanf("%lf", &n); 
     return n; 
} 
double f_to_c(double f) 
{ 
    double c; 
    c = 5.0/9*(f-32); 
    return c; 
} 

正如你可以看到:

  1. 類型的cf_to_c變量發生改變翻一番,因爲你需要一個雙倍返還該功能
  2. 將F轉換爲C的公式不正確。
  3. printf和scanf的格式說明符不正確。
2

在你的情況,

double f_to_c(double f) 
{ 
    int f, c; 
    c = 5.0/0.9*(f - 32.0); 
    return c; 
} 

int f被遮蔽的double f。爲變量使用其他名稱。

從本質上講,你想利用一個未初始化的自動局部變量它調用undefined behavior

+1

轉換公式是錯誤的。 – LPs

0
在get_integer函數返回類型

是雙重的,相反,它應該是整數

int get_integer(void) 
{ 
int n; 
printf("Enter the variable:"); 
scanf_s("%d", &n); 
    return n; 
} 

在你的其他功能f_to_c,返回類型是雙,但你在一開始

double f_to_c(double f) 
{ 
int f; 
double c; 
c = (5.0/0.9)*(f - 32.0); 
return c; 
} 

也返回一個整數,你需要改變你的代碼於:

int main(void) 
{ 
int a; 
a = get_integer(); 

printf("he degree in C:%f", f_to_c(a)); 

return 0; 
} 
+1

我回滾了最後一次編輯,因爲ti在'f_to_c'中刪除了一個錯誤來源。該功能仍然失效。 – juanchopanza

+0

我做了一切。但結果非常危險。 –

+0

你會得到什麼結果? –