Попытка рассчитать возраст в C - PullRequest
0 голосов
/ 18 марта 2019

Можете ли вы сказать мне, что не так с моим кодом?

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

int main()

{

    int CurrentYear;
    int BornYear;
    int age = CurrentYear - BornYear;

    printf("What year is it?\n");
    scanf("%d", &CurrentYear);
    //printf("Year check: %d\n", CurrentYear);
    printf("What year you were born?\n");
    scanf("%d", &BornYear);
    //printf("Year check: %d\n", BornYear);
    printf("You are %d years old\n", age);
    return 0;
}

В результате я получаю несколько странных чисел.

Ответы [ 2 ]

4 голосов
/ 18 марта 2019

Выражения в C не являются формулами. Это:

int age = CurrentYear - BornYear;

Не означает, что значение age будет всегда будет CurrentYear - BornYear. Это означает, что в этой точке в коде , age установлено в CurrentYear - BornYear на основе текущего значения этих переменных. Обе эти переменные неинициализированы, поэтому их значения не определены.

Вам нужно переместить вычисление age в после того, как вы прочитали в CurrentYear и BornYear:

int CurrentYear;
int BornYear;
int age;

printf("What year is it?\n");
scanf("%d", &CurrentYear);
printf("What year you were born?\n");
scanf("%d", &BornYear);

age = CurrentYear - BornYear;
printf("You are %d years old\n", age);
0 голосов
/ 19 марта 2019

Привет, Мадневил и добро пожаловать в StackOverflow;

Вы получаете неправильный результат, потому что порядок инструкций вашей программы неправильный, вы рассчитываете возраст перед чтением CurrentYear и BornYear:

Правильный способ сделать это:

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

int main()

{

    int CurrentYear = 0;
    int BornYear = 0;


    printf("What year is it?\n");
    scanf("%d", &CurrentYear);
    //printf("Year check: %d\n", CurrentYear);
    printf("What year you were born?\n");
    scanf("%d", &BornYear);
    //printf("Year check: %d\n", BornYear);

    int age = CurrentYear - BornYear;

    printf("You are %d years old\n", age);
        return 0; 
}

также вы можете спросить, почему результат не равен 0, потому что вы еще не инициализировали переменные?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...