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

严格遵循操作仍遇运行时错误,求C语言天数换算程序问题排查

C语言天数换算程序运行崩溃问题解决

你的程序运行时崩溃的核心原因是scanf函数的参数传递错误:

在C语言中,使用scanf读取基本类型变量(比如int)时,必须传入变量的内存地址(通过&取地址运算符获取),这样scanf才能将用户输入的值写入到正确的内存位置。而你直接传递了NoOfDays变量的值,这会让scanf尝试去一个非法的内存地址写入数据,触发内存访问违规,导致程序直接终止。

错误代码行:

scanf ("%d", NoOfDays);

修正后的代码行:

scanf ("%d", &NoOfDays);

完整修正代码:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
    int NoOfDays, years, weeks, days;
    printf("Please enter the number of days: \n");
    scanf("%d", &NoOfDays);
    years = NoOfDays / 365;
    weeks = (NoOfDays % 365) / 7;
    days = (NoOfDays % 365) % 7;
    printf("%d = %d years, %d weeks, %d days\n", NoOfDays, years, weeks, days);
    return 0; // 补充符合C标准的返回值
}

另外补充两个细节修正:

  • 原代码中printf字符串里直接换行的写法不符合C语法,需要用转义字符\n表示换行,否则编译器会报错。
  • 在main函数末尾添加return 0;,明确返回程序执行状态,符合C语言标准规范。

内容的提问来源于stack exchange,提问作者John Mith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:31:45