Программа на C завершается досрочно при вызове функции

#c

#c

Вопрос:

Почему моя программа завершается досрочно? Она не завершена и будет иметь еще две функции: одну для усреднения числа, другую для отображения среднего значения.

Когда я запускаю программу через Visual Studio, она завершает работу после отображения первого «Score1:». Почему она не переходит в функцию getScore()?

Это работает, когда я помещаю программу в онлайн-компилятор, но не при компиляции и запуске из Visual Studio.

  // Lab 8-1.cpp : Defines the entry point for the console application.
 //


 #include <iostream>
 using namespace std;

void printInfo();       // printInfo prototype
int getScore();         // getScore prototype

int main()
{
    int score1 = 0, score2 = 0, score3 = 0;     // declare variables

     printInfo();       // call printInfo function

    cout << endl << "Score 1: ";        // output: ask for first score
    score1 = getScore();                // assign value to integer through getScore function
    cout << endl << "Score 2: ";
    score2 = getScore();
    cout << endl << "Score 3: ";
    score3 = getScore();

    return 0;
}

// ******************************************************
// * The printInfo function displays a message about    *
// * what the program does                              *
// ******************************************************
void printInfo()
{
    cout << "This program accepts 3 integer scores betweenn";
    cout << "0 and 50 (inclusive), and displays the averagen";
    cout << "of the three tests.nn";
}

// **********************************************************
// * The getScore function takes in a value from the user,  *
// * validates the input, and returns an int value          *
// **********************************************************
int getScore()
{
    int score;
    cout << "Enter a number: ";
    cin >> score;
    while (score < 0 || score > 50)
    {
        cout << "nScore must be >= 0 or <= 50." << endl;
        cout << "Please enter a new score:";
        cin >> score;
    }
    return score;
}
  

Комментарии:

1. Вы пробовали запускать это в отладчике?

2. Да, вывод выглядит следующим образом: поток 0x3c08 завершается с кодом 0 (0x0). Поток 0x3dec завершается с кодом 0 (0x0). Поток 0x4148 завершается с кодом 0 (0x0). Программа ‘[11304] Lab 8-1.exe ‘ вышел с кодом 0 (0x0).

3. Я имею в виду фактическую отладку до того, как ваша программа умрет. И пошаговое выполнение кода.

4. ваш код в порядке, который получает 3 входных значения. попробуйте закрыть свой компилятор и создать новый проект, вставив свой код, перекомпилируйте и запустите

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