这个简单的程序在语义上是否正确?

Is this simple program semantically correct?

我是 C++ 的初学者(我的课程大约 4 天)我创建了一个小程序,它似乎按照我想要的方式工作。

快速总结:

程序询问您的姓名。 然后要求两个数字相加。 显示答案。 然后询问你是否要再次计算 y/n.

但是,我不禁觉得它在格式方面完全是个废墟。

特别是 Again() 函数... 在其中,我通过调用另一个函数 if 创建了一个循环,条件为真。像这样:

bool Again() {

std::cout << "Would you like to calculate again y/n?\n";
std::string answer = "";
std::cin >> answer;

if (answer[0] == 'y') { 
    std::cout << "Cool lets do it then \n";
    PickTwo();
    Again();
}
else {
    std::cout << "alright, goodbye\n";
}
return 0;
}

按照我在 Again() 中的方式创建循环是否合适? 如果是这样,有没有正确的方法?

这是整个程序:

#include <iostream>
#include <string>

void Greetings();
int PickTwo();
bool Again();

int main() {

    Greetings();
    PickTwo();
    Again();

    system("pause");
    return 0;
}

void Greetings() {

    std::cout << "Hi my name is Program, we're going to do something today. \n";
    std::cout << "Whats your name?\n";
    std::string Name;
    std::getline(std::cin, Name);
    std::cout << "Hi " << Name << ", we're going to try to do math\n";
    return;
}

int PickTwo() {

    std::cout << "Please pick the numbers to be added\n";
    int firstNumber;
    std::cin >> firstNumber;
    int secondNumber;
    std::cin >> secondNumber;

    int Answer = firstNumber + secondNumber;

    std::cout << "This are your numbers " << firstNumber << " and " << secondNumber << std::endl;
    std::cout << "If we add them you have " << Answer << std::endl;


    return Answer;
}

bool Again() {

    std::cout << "Would you like to calculate again y/n?\n";
    std::string answer = "";
    std::cin >> answer;

    if (answer[0] == 'y') {
        std::cout << "Cool lets do it then \n";
        PickTwo();
        Again();
    }
    else {
        std::cout << "alright, goodbye\n";
    }
    return 0;
}

提前谢谢你,知道什么不能做会帮助我在坏习惯变得更糟之前改掉它们。

Is it proper or improper to create a loop the way i did in Again() ? if so, is there a right way to do it ?

在不支持尾递归的语言中,你的程序有可能导致栈溢出。我不建议按照您编码的方式使用它。

最好使用while循环或do-while循环。在循环中,再.

做任何你需要做的事情