Я написал простую программу для преобразования градусов по Фаренгейту в градусы Цельсия с помощью функции (работали ж/Python в течение 2 недель, хотел обновить сам):INT производит около правильный ответ, но поплавок просто дает -18,000
#include <stdio.h>
#include <math.h>
int temp_change(fahrenheit);
int main()
{
while(1)
{
int fahrenheit;
printf("Please input a temperature in Fahrenheit.\n");
scanf("%d", &fahrenheit); //Obtains degrees F value
printf("%d\n", temp_change(fahrenheit));
}
}
//Function to change temperature
int temp_change(fahrenheit)
{
int centigrade;
centigrade = 5*(fahrenheit - 32)/9; //Changing the temperature
return centigrade;
}
, и он дал мне правильные ответы (в ближайшей степени). Тем не менее, я хотел получить точные ответы, поэтому я изменил все int
s на float
s (кроме int main()
. Теперь единственное, что мне даст программа: -18.000000
, вне зависимости от того, какой ввод я им даю. Лучший способ подвести итог тому, что я Пробовал: Я пробовал разные комбинации int
s и float
s, но не повезло. Я подозреваю, что это как-то связано с printf("%d\n", temp_change(fahrenheit));
, но это дало мне правильные ответы, когда все было int
, поэтому я не знаю. Заранее благодарим за любую помощь!
Скорее всего вы пренебрегли изменением форматов 'scanf()' и 'printf()' при преобразовании всех типов данных. Для аргументов 'float' вы хотите'% f' вместо '% d'. –
Понял, что это необходимо для инициализации переменных внутри определений функций как 'float' –
@JohnBollinger спасибо, но нет, это дало бы мне ошибку. –