Вопрос

//Hydroelectric Dam Helper
#include <stdio.h>
#define GRAV 9.80
#define EFINC 0.9
#define EFINC2 90


int main()
{
  //Defines all the variables to be used
  double height, work, mass;
  printf("Height of dam (in meters):");
  scanf("%lf", &height);
  printf("Flow of water (in thousand cubic meters per second):");
  scanf("%lf", &mass);
  work = (mass * GRAV * height * EFINC); 
  printf("The dam would produce %f megawatts at %d%% efficency", &work, EFINC2);
  return 0; 
}

Значения устанавливаются правильно, я проверил его, имея его печатать высоту и массу, но работа никогда не получает значение, и EFINC2 отпечатывает смешное число, которое я не совсем уверен в

Это было полезно?

Решение

printf("The dam would produce %f megawatts at %d%% efficency", &work, EFINC2);

должен прочесть:

printf("The dam would produce %f megawatts at %d%% efficency", work, EFINC2);

&work это указатель на работу, то есть double* но для printf Чтобы распечатать значение, которое вам нужно пройти double И не указатель. На вашей платформе A double* вероятно, другой размер double вызывая последующую printf форматы для использования неправильных данных.

Другие советы

Проблема в том, что вы напечатаете вывод float с %f спецификатор, но прохождение в double* через &work. Отказ Просто удалите & И это должно работать нормально.

printf("The dam would produce %f megawatts at %d%% efficency", work, EFINC2);

Причина, по которой вы получаете «смешное число», это то, что вы передаете адрес work к printf(). Отказ Изменять &work к work И это должно работать должным образом.

Конечно. Амперсанд & в PrintF-line означает, что адрес из переменной work читается вместо стоимость

Попробуйте добавить рекламу константам, чтобы заставить C, чтобы не отказаться от INT, может работать. Вы также можете попробовать явно отличить значения либо поплавкам или двойным.

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

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

Printf («плотина будет производить% F megawatts при% d %% Effication», работа, EFINC2);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top