2013-09-29 3 views
-5

Я просто задал вопрос, но не смог получить то, что хочу, и не мог отредактировать и ответить, поскольку он слишком длинный. Мой вопрос тот же, и это ссылка на этот вопрос. how to keep decimals in cдесятичное число чисел в c

#include<stdio.h> 

int main() 
{ 
    float b,c,; 
    int a,kk; 
    printf("Welcome to the unit conversion program\n"); 
    printf("This program can convert the measurements of;\n"); 
    printf("1-Length\n"); 
    printf("2-Mass\n"); 
    printf("Please select the number that corresponds to the measurement you want to convert in:\n"); 
    scanf("%d",&a); 
    if (a==1){ 
      printf("Your number will be converted from inches to centimeters.\n"); 
      printf("Please enter the length.\n"); 
      scanf("%f",&b); 
      c=b*2.54; 
      printf("%f inch is %f cm.",b,c); 
      scanf("%d",kk); \. to avoid to shut the cmd windows .\ 
      } 

     else if (a==2){ 
      printf("Your number will be converted from pounds (lbs) to kilograms"); 
      printf("Please enter the mass.\n"); 
      scanf("%d",&b); 
      c=b*0.45359237; 
      printf("%d lbs is %d kgs.",b,c); 
     } 
    return 0; 
} 

ответ

0

Ошибка в том, что %d в формате спецификатор обоих scanf и printf представляет десятичную, поэтому он ожидает int (в случае scanf, указатель на int)

Поскольку вы объявляющего b и c в float, %d в линиях

scanf("%d",&b); 

printf("%d lbs is %d kgs.",b,c); 

следует заменить на %f соответственно.

Небольшой совет: используйте double вместо float. Он обеспечивает большую точность, его производительность лучше во многих машинах. Недостатком является то, что он занимает больше места, чем float, но это не проблема в большинстве случаев.

Вы должны использовать %f в printf и %lf в scanf в случае, если вы используете double.

+0

Почему я не могу объяснить свою проблему? Хорошо, но проверьте, если a = 1, тогда код должен работать правильно? Но это не так! Пожалуйста, не рассматривайте else, если часть, когда a = 2, просто проверьте a = 1. –

+1

@BerkDemir, какую ошибку вы получаете? –

+0

@BerkDemir Вы должны быть более конкретными в отношении своей проблемы, например, ввода, вывода и ожидаемого результата. –

0

Изменение:

scanf("%d",&b); 

printf("%d lbs is %d kgs.",b,c); 

к:

scanf("%f",&b); 

printf("%f lbs is %f kgs.",b,c); 

Вы объявили б, как поплавок и принимает ввод в виде десятичного & последующей печати как флоат б, в качестве десятичного ? Пожалуйста, изучите книгу Deital & Deital for C/C++удивительная книга.

+0

Пожалуйста, не считайте, если часть, когда a = 2, просто проверьте a = 1 –

+0

Я не вижу ошибок. Кроме того, если вы считаете '\. чтобы избежать закрытия окон cmd. \ ', чтобы быть комментарием. Если это так, либо удалите его, либо измените его на '/ *, чтобы избежать закрытия окон cmd * /'. Кроме того, я не вижу никаких проблем. ** Определите свою проблему ** –

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