переменная c, кажется, печатает адрес вместо значения переменной - PullRequest
1 голос
/ 03 февраля 2010
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
double f;

printf ("What is the temperature in Fahrenheit?\n");
scanf ("%d", &f);

double x = (f-32)*(5/9);
printf ("%d degrees Fahrenheit \n",f); 
printf ("%d degrees Celsius",x); 
system("PAUSE");  

return 0;
}

f, кажется, печатает адрес переменной f вместо значения, вероятно, это синтаксическая ошибка.

Ответы [ 6 ]

7 голосов
/ 03 февраля 2010

% d должно быть% f:

printf ("%f degrees Farenheit \n",f); 
printf ("%f degress Celsius",x); 

РЕДАКТИРОВАТЬ: Как отметил Джонатан, вам нужно изменить:

double x = (f-32)*(5/9);

до

double x = (f-32)*(5.0/9);

В C целочисленное деление (деление, где и делитель, и делитель являются целочисленными типами) усекается, поэтому 5/9 всегда равно 0.

3 голосов
/ 03 февраля 2010

%d означает «десятичное целое число». Вы используете double с, а не int с. Поэтому используйте %lf в scanf() и %f в printf().

2 голосов
/ 03 февраля 2010

Ваша первая проблема - double x = (f-32)*(5/9). 5/9 - ноль, так как вы используете целочисленное деление, поэтому x будет иметь значение 0.0 для всех входов. Для деления с плавающей запятой используйте числа с плавающей запятой (например, 5.0/9.0).

Во-вторых, %d для печати целых чисел. Используйте %f для печати значений с плавающей точкой.

2 голосов
/ 03 февраля 2010

Попробуйте это ...

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

int main (void)
{
float c;
float f;

printf ("What is the temperature in Fahrenheit?\n");
scanf ("%f", &f);

c = (f-32)*(5.0/9.0);
printf ("%f degrees Fahrenheit \n",f);
printf ("%f degrees Celsius \n",c);
system("PAUSE");

return 0;
}
0 голосов
/ 03 февраля 2010

9 раз из 10, когда вы используете printf для отображения отладочных данных и находите, что они отображают странные результаты, в вашем вызове printf есть ошибка.

Вот почему я сейчас стараюсь избегать printf. Бит динамического формата аккуратен, но чрезвычайная небезопасность вызова слишком часто делает его источником ошибок, а не просветления.

0 голосов
/ 03 февраля 2010

добавляя к тому, что говорили другие, %d означает «десятичный» (в отличие от %x, являющийся «шестнадцатеричным»)

для чисел с плавающей запятой или, в вашем случае, чисел с плавающей запятой двойной точности, используйте %f

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...