创建一个函数,通过访问字符串数组返回星期几



我试图将一个整数传递给一个函数,然后在字符串数组中引用一个特定的字符串。例如,函数接收到1并输出"星期一",接收到2并输出"星期二";等。我的文件编译没有错误,但没有返回输出。任何建议吗?

是的,我才刚刚起步,但还在慢慢摸索。

#include <stdio.h>
#include <string>
std::string DayName(int a);
int main()
{
int a;
printf("enter a number between 1 and 7n");
(void)scanf("%d", &a);
DayName(a);
return 0;
}
std::string DayName(int a)
{
std::string days[7] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", 
"Sunday"};
std::string day = days[-1+a];
return day;

}

主要问题是您只是忽略了DayName()函数的返回值。你没有把它打印到任何地方,这就是为什么你没有看到它。

您也没有验证输入是否在可接受的值范围内。你正在使用C风格的I/O,而不是c++风格的I/O。

试试这个:

#include <iostream>
#include <string>
std::string DayName(int day);
int main()
{
int day;
std::cout << "enter a number between 1 and 7n";
std::cout << DayName(day);
return 0;
}
std::string DayName(int day)
{
static const std::string days[7] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
if (day >= 1 && day <= 7)
return days[day-1];
return "invalid";
}

在线演示或者,让DayName()在接收到错误输入时抛出异常:

#include <iostream>
#include <string>
#include <stdexcept>
std::string DayName(int day);
int main()
{
int day;
std::cout << "enter a number between 1 and 7n";
std::cin >> day;
try {
std::cout << DayName(day);
}
catch (const std::exception &e) {
std::cerr << e.what();
}
return 0;
}
std::string DayName(int day)
{
static const std::string days[7] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
if (day < 1 || day > 7) throw std::out_of_range("Input must be 1..7");
return days[day-1];
}

在线演示另一种选择,在调用DayName()之前让main()做所有的验证:

#include <iostream>
#include <string>
#include <limits>
std::string DayName(int day);
int main()
{
int day;
do {
std::cout << "enter a number between 1 and 7n";
if (std::cin >> day) {
if (day >= 1 && day <= 7) {
std::cout << DayName(day);
break;
}
std::cout << "invalid, try again" << std::endl;
}
else {
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
std::cout << "Bad input, try again" << std::endl;
}
}
while (true);
return 0;
}
std::string DayName(int day)
{
static const std::string days[7] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
return days[day-1];
}

在线演示

最新更新