C++实现返回星期几函数运行无输出问题求助
问题原因及修复方案
- 核心问题:你在
main函数中调用DayName(a)后仅得到了返回的字符串结果,没有执行打印操作,因此控制台不会输出对应的星期名称。 - 其他隐含问题:没有做输入范围校验,如果用户输入的整数不在1~7区间内,会触发数组越界访问,导致程序出现不可预期的错误。
修复后可正常运行的代码
#include <stdio.h> #include <string> std::string DayName(int a); int main() { int a; printf("enter a number between 1 and 7\n"); (void)scanf("%d", &a); // 新增输出逻辑,std::string需调用c_str()方法转为C风格字符串后,才能用printf的%s格式符输出 printf("result: %s\n", DayName(a).c_str()); return 0; } std::string DayName(int a) { // 新增输入合法性校验 if (a < 1 || a > 7) { return "invalid input, please enter a number between 1 and 7"; } std::string days[7] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; return days[a - 1]; }
可选优化(使用C++原生输入输出)
如果不需要兼容C风格的接口,使用C++标准库的iostream操作std::string会更方便,无需手动转换字符串格式:
#include <iostream> #include <string> std::string DayName(int a); int main() { int a; std::cout << "enter a number between 1 and 7" << std::endl; std::cin >> a; std::cout << "result: " << DayName(a) << std::endl; return 0; } std::string DayName(int a) { if (a < 1 || a > 7) { return "invalid input, please enter a number between 1 and 7"; } const std::string days[7] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; return days[a - 1]; }
内容的提问来源于stack exchange,提问作者CPKEN
相关产品推荐
相关产品推荐

