我正在参加初级 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/