Я новичок с c моя программа работает, но ничего как вывод - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь выучить c из книги, но я в замешательстве, я сделал следующее:

#include <stdio.h>
#include <math.h>
int main(void) 
{
    int metrisi=getchar();
    putchar (metrisi);
    float proi=(metrisi-80)/40*1.5;
    float apog=(metrisi-80)/40*1.4;
    float brady=(metrisi-80)/40*1.4;
    {
        printf("%5.0f %5.0f %5.0f\n",  proi,apog,brady);
    }
    return 0;
}

Вывод

C Online Compiler [gcc-6.3]
Copyright (c) Free Software Foundation, Inc.

Compiling your program...
Build completed successfully!
Running your program...

\xff...
The program executed successfully!

Не могли бы вы помочь мне?Нет ввода от пользователя, нет вывода.Спасибо

1 Ответ

0 голосов
/ 14 декабря 2018

Несколько проблем:

int metrisi=getchar();

Это поместит ASCII-значение из первой буквы, которую вы вводите в метриси.

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

РЕДАКТИРОВАТЬ: Как отметил Дэвид, это вычитание технически небезопасно.Однако, поскольку вы хотите выполнить некоторую арифметику для ваших входных значений, было бы разумно убедиться, что вы принимаете только цифры в качестве входных данных.

В любом случае, следующая проблема в вашем printf:

printf("%5.0f %5.0f %5.0f\n",  proi,apog,brady);

Здесь вы указываете вывод 5 цифр слева от десятичной точки и 0 цифр после десятичной точки.Возможно, вы хотели это:

printf("%.5f %.5f %.5f\n",  proi,apog,brady);

Здесь также (как мне кажется) проблема здесь:

float proi=(metrisi-80)/40*1.5;

Это выражение может привести к довольно неожиданным результатам.Причина этого в том, что в C есть нечто, называемое приоритет оператора , и это не всегда интуитивно понятно.

Вместо этого вы можете попробовать это:

float proi=(metrisi-80)/(float)40*1.5;

или

float proi=(metrisi-80)/40.0*1.5;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...