2014-09-24 4 views
-2

Программа отображает только 32, когда у меня есть печать «NewTemp» NewTemp = 32 + input * 180/100; эта часть кажется основной проблемойПрограмма программирования C только печатает первое значение в моей переменной

#include <stdio.h> 

float celsius(float input) { 
    float NewTemp; 
    **NewTemp = 32 + input * 180/100; 
    printf("Please enter the temperature value to convert to fahrenheit\n"); 
    scanf("%f", &input); 
    printf("The temperature in celsius is: %f\n", NewTemp); 

    return NewTemp; 

} 

int main(void){ 
float CelToFahren, input; 
    CelToFahren = celsius(input); 
} 
+1

C - это процедурный язык - строки выполняются один за другим. Ваша строка, начинающаяся с 'NewTemp', не определяет формулу; он выполняет шаги вычисления значения на основе формулы. (Языки, где это определяет формулу, обычно называются «функциональными языками»). –

+0

'NewTemp' не является указателем на указатель на float, поэтому' ** NewTemp' является абсолютно бессмысленным. – usr2564301

ответ

1

Вы делаете математику, прежде чем читать ввод. Вам нужно сделать это наоборот.

Кроме того, нет никакой причины передавать бессмысленное и неинициализированное значение функции celsius.

Наконец, 180/100 - это 1 остаток 80, потому что, когда вы делите два целых числа, вы получаете целочисленное деление. Вы можете использовать 180.0/100.0.

В принципе, вам необходимо изучить C.

+2

«180» отлично, потому что 'input' является float –

+0

Правильно, но в следующий раз он напишет' 32 + input * (180/100) 'и его код сломается. –

+0

Я понял, почему в скобках будет разорван код, но im все еще потерян на «Кроме того, нет никакой причины передавать бессмысленное и неинициализированное значение функции celsius. « – Jude

Смежные вопросы