首页 > 解决方案 > 尝试制作我的第一个 C 程序,将秒转换为周 + 天 + 小时 + 分钟 + 秒

问题描述

这是语言 C,正如标题所说,我正在努力做到这一点,以便用户输入几秒钟,然后转换为几周、几天、几小时、几分钟和几秒钟,如下所示:

输入:x 秒

输出:周 x,天 x,小时 59,分钟 59,秒 59 - 只是一个例子。

代码:

int main(void) {
    int w, d, h, m, s;
    printf("Please enter amount of seconds: " );
    //%d er placeholder og &s er den enhed som benyttes - i dette tilfælde sekunder. 
    scanf("%d",&s);
    //1 week = 7 days.
    w = d / 7;
    d = d % 7;
    //1 day = 24 hours.
    d = h / 24;
    h = h % 24;
    //1 hour = 60 minutes.
    h = m / 60;
    m = m % 60;
    //1 minute = 60 seconds.
    m = s / 60;
    s = s % 60;
    printf("\nWeeks: %d", h);
    printf("\nDays: %d", h);
    printf("\nHours: %d", h);
    printf("\nMinutes: %d", h);
    printf("\nSeconds: %d", h);
    
    return 0;
}

我的问题:当我尝试编译它时,它只会在有关输入的所有字段中打印出 70019 - 我想这是最后使用的内存?所以很明显出了点问题,但我还不足以弄清楚:/

标签: c

解决方案


所以很明显出了点问题,但我还不足以弄清楚:/

最大的错误是没有使用启用所有警告的良好编译器。
w = d / 7;可以报​​告类似

> warning: 'd' is used uninitialized in this function [-Wuninitialized].

我的编译有 4 个警告。节省时间,提高生产力。启用所有警告。


然后重新排序计算并使用错误检查。

// scanf("%d",&s);
if (scanf("%d",&s) == 1) {
  int m = s / 60;
  s %= 60;

  int h = m / 60;
  m %= 60;

  int d = h / 24;
  h %= 24;

  ...

推荐阅读