You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:00:02