c - 输入用户的小时和分钟,并添加持续时间以显示更新的时间

标签 c time printf

我需要编写接受三个整数作为输入(小时、分钟、持续时间)的程序。小时采用 24 小时格式。小时和分钟应被视为开始时间,持续时间应以分钟为单位。然后,您应该计算结束时间并以 ##:## 格式正确显示。这就是我得到的,但我的开始时间显示很奇怪。

#include <stdio.h>

int main(int argc, char *argv[])
{
    int h=0,m=0,d=0,ht=0,t=0;
    printf("Starting Hours: ");
    scanf("%d",&h);
    printf("Starting Minutes: ");
    scanf("%d",&m);
    printf("Starting Time is %d,%d ,What is the duration");
    scanf("%d",&d);
    t=(m+d);
    ht=t/60;
    h=(h+ht)%24;
    m=t%60;
    printf("Ending Time: %d:%d",h,m);

    getchar();
    return 0;
}

我的开始时间显示如下:当我输入 12 表示小时,输入 52 表示分钟时,我的开始时间显示为

-2114693200:1.

不知道为什么会发生

最佳答案

printf() 中缺少参数导致未定义的行为。

printf("Starting Time is %d,%d ,What is the duration");

应该是

printf("Starting Time is %d,%d ,What is the duration",h,m);

您也不需要以 24 为模,除非您想将小时转换为天...如果您愿意,您还需要存储和打印天数。

h=(h+ht)%24;

关于c - 输入用户的小时和分钟,并添加持续时间以显示更新的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35628222/

相关文章:

C 语言 printf 和 fprintf 在打印包含重音法语字符的字符串时搞砸了

c - 为什么即使文件存在并且正确打开和关闭, fprintf() 也不打印任何内容?

c - 编写一个程序来生成该系列中的前 n 项 --- 34,18,10,6,4,

c - 十进制到八进制转换器,最后一位数字问题

c - 在 printf 中参数化格式说明符

JavaScript DateTimePicker 返回错误的 unix 时间?

php - 在 Views laravel 上使用 carbon

c - 为什么将字符串传递给 scanf() 在 C 中可以正常编译?

c - 思考TAILQ的tqe_prev不指向前一个节点的目的

java - System.currentTimeMillis() 方法真的返回当前时间吗?