2014-02-28 2 views
0

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

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

int main() 
{ 
    double input = 0; 
    double exp_val; 
    printf("Plese enter the exponent to check for convergence:"); 
    scanf("%f", input,"\n"); 
    printf("%f", input);/*Checking to verify the input is entered*/ 
    exp_val = exp(input); 
    printf("%f", exp_val); 
    getchar(); 
} 

ответ

1

Кроме @ happydave Ответим использовать &input, необходимо также формат %lf спецификатор для чтения двойной:

scanf("%lf", &input); 

Заканчивать Why does scanf() need "%lf" for doubles, when printf() is okay with just "%f"?


После этого вы должны получить правильный ответ , смотреть прямо сейчас: http://ideone.com/246clu.

+0

Должен ли оставаться в заявлении печати% f, так как он немедленно закрывается после того, как пользователь вводит свои ввод – user3259144

+0

printf не нужен% lf. См. Этот ответ: http://stackoverflow.com/questions/210590/why-does-scanf-need-lf-for-doubles-when-printf-is-okay-with-just-f – happydave

+0

@ user3259144 Проверьте код (с результатом выполнения) по новой ссылке. – herohuyongtao

1

зсап ожидает, что указатель на двойные, а не двойные себя:

scanf("%lf", &input); 

Это происходит потому, что прохождение ввода непосредственно передает по значению. Но scanf не хочет знать текущее значение ввода, он хочет знать местоположение памяти, где он должен писать данные, которые он читает.

+0

Я добавил указатель, и он все еще разбился. Есть ли что-то, что мне нужно сделать для двойника, когда оно инициализируется? – user3259144

+1

Вы пробовали% lf, так как @herohuyongtao правильно указал? – happydave

+0

Да, я пробовал это, и он не останется открытым – user3259144