c++ - 使用函数的 12 天圣诞节 C++

标签 c++

我正在参加初级 C++ 类(class),我正在尝试创建一个程序,使用两个给定的函数调用 show_ordinal(int) 和 show_verse(int) 作为作业来输出 12 天的圣诞歌曲。它应该调用这节经文并用它的序数后缀显示日期,然后根据用户决定从哪里开始循环剩余的经文,所以如果它是 show_verse(3) 它将在圣诞节的第 3 天.. .一直到梨树。我开始编写函数来获取序数,但一直出现段错误。

#include <iostream>

using namespace std;

string show_ordinal(int);
void show_verse(int);

int main()
{
    cout << show_ordinal(2) << endl;

    return 0;
}

string show_ordinal(int x)
{
    switch (x % 10)
    {

        case 1:
            if (x % 10 == 1)
            {
                cout << x << "st";
            }
            break;

        case 2:
            if (x % 10 == 2)
            {
                cout << x << "nd";
            }
            break;

        case 3:
            if (x % 10 == 3)
            {
                cout << x << "rd";
            }
            break;

        case 4:
            if (x % 10 != 1 || x % 10 != 2 || x % 10 != 3)
            {
                cout << x << "th";
            }
            break;
    }

}

通过尝试在 main 中使用 2 的 int 值调用它来测试该函数,我已经为此工作了一段时间但无法让它工作任何帮助将不胜感激。

最佳答案

show_ordinal 不为

返回任何内容
cout << show_ordinal(2) << endl;

打印出来。它 promise 返回一个 string,但它从未返回。这是不好的形式。当函数具有非void 返回类型时,它必须在所有 代码路径上返回结果,否则函数和程序的格式不正确。崩溃或其他段错误是常见的结果,但您可能会无声地损坏数据,而且更难追踪。

与其计算所有结果,不如将结果分配给string 并返回string

关于c++ - 使用函数的 12 天圣诞节 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49142410/

相关文章:

c++ - 我可以在析构函数中调用公共(public)函数来释放内存吗?

c++ - 在 OpenCV 中使用 SURF 测量模式识别的准确性

c++ - if (NULL == pointer) 和 if (pointer == NULL) 有什么区别?

c++ - 修剪空格 C++ POINTERS

c++ - 为什么定义纯虚函数有意义?

c++ - 链接多个使用 boost 的项目时出现 LNK2005 错误

c++ - 如何使用 tolua++ 将 lua 字符串(二进制)传递给 c++

c++ - fatal error LNK1120 : 4 unresolved externals

c++ - std::multimap 和 equal_range

c++ - 如何在 Qt Creator 中配置 CDB?