基于Arduino C的时分秒累加与格式转换技术咨询
时分秒累加与格式转换实现方案
首先修正代码中的语法错误,并完成completehours、completemins、completesecs的转换逻辑,核心是利用**除法(/)**实现进位、**取模(%)**保留当前单位剩余值:
void setup() { Serial.begin(9600); // 初始化串口通信 int swimhours = 0; int swimmins = 50; int swimsecs = 59; int bikehours = 2; int bikemins = 50; int bikesecs = 59; int runhours = 1; int runmins = 50; int runsecs = 59; // 先累加各单位的原始总和 int totalhours = swimhours + bikehours + runhours; int totalmins = swimmins + bikemins + runmins; int totalsecs = swimsecs + bikesecs + runsecs; int completehours; int completemins; int completesecs; // 第一步:处理秒的进位 completesecs = totalsecs % 60; // 保留60以内的最终秒数 int carryMins = totalsecs / 60; // 计算秒转换为分钟的进位数 totalmins += carryMins; // 将进位分钟合并到总分钟数 // 第二步:处理分钟的进位 completemins = totalmins % 60; // 保留60以内的最终分钟数 int carryHours = totalmins / 60; // 计算分钟转换为小时的进位数 totalhours += carryHours; // 将进位小时合并到总小时数 // 第三步:最终小时数(无需再进位,若需统计天数可继续对24取模/除法) completehours = totalhours; // 打印转换后的结果 Serial.print("总时长:"); Serial.print(completehours); Serial.print("小时 "); Serial.print(completemins); Serial.print("分钟 "); Serial.print(completesecs); Serial.println("秒"); } void loop() { // 无需循环执行,仅在初始化时计算一次 }
逻辑说明
- 秒处理:总秒数对60取模得到最终剩余秒数,总秒数除以60得到需要进位到分钟的数值,将其加到总分钟数中。
- 分钟处理:更新后的总分钟数对60取模得到最终剩余分钟数,总分钟数除以60得到需要进位到小时的数值,将其加到总小时数中。
- 小时处理:最终的总小时数即为累加值加上分钟的进位数,若需要统计天数,可继续对24执行取模和除法操作。
内容的提问来源于stack exchange,提问作者Ryan Llewellyn
相关产品推荐
相关产品推荐

