有时候人们用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,即5点30分表示为530。注意,第二个数字表示的分钟数可能超过60,也可能是负数。
输入格式:
输入在一行中给出2个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即5点30分表示为530;流逝的分钟数可能超过60,也可能是负数。
输出格式:
输出四位数字表示的终止时间。题目保证起始时间和终止时间在同一天内。
输入样例:
1120 110
输出样例:
1310
#include
int main()
{
int now;
int past;
scanf("%d %d",&now,&past);
int hour=now/100;
int min=now%100;
int total=hour*60+min+past;
int hour2=total/60;
int min2=total%60;
printf("%d %d",&hour2,&min2);
return 0;
}
这个代码哪里错了xdm(真诚发问)
应该是打印结果的printf()语句那里错了,把printf()语句里的两个取址符&去掉,因为打印变量的值不需要取址符,然后根据题目格式,去掉两个%d之间的空格,然后为了让分钟为个位数时打印出前导0,把第二个%d改为%02d即可,修改如下:
参考链接:
#include <stdio.h>
int main()
{
int now;
int past;
scanf("%d %d",&now,&past);
int hour=now/100;
int min=now%100;
int total=hour*60+min+past;
int hour2=total/60;
int min2=total%60;
// https://blog.csdn.net/qq_41705423/article/details/104648397/
printf("%d%02d",hour2,min2);
return 0;
}
1、在输出时,应该输出两个数字 hour2 和 min2 的值,而不是它们的地址。应该把 "&" 去掉,然后把 "%d %d" 改成 "%02d%02d"。
2、如果 hour2 大于等于 24,那么程序就计算出了下一天的时间。这个题目要求保证起始时间和终止时间在同一天内,所以 hour2 应该取模 24。
3、当 past 是负数时,total 可能小于 0。此时,应该让 total 加上 24*60,再取模。
修改后的代码如下:
#include <stdio.h>
int main()
{
int now;
int past;
scanf("%d %d",&now,&past);
// 计算总的分钟数
int hour=now/100;
int min=now%100;
int total=hour*60+min+past;
// 计算小时和分钟
int hour2 = total / 60;
int min2 = total % 60;
// 输出结果
printf("%02d%02d", hour2, min2);
return 0;
}
仅供参考,望采纳。