兄弟們,看看我的代碼哪出現了問題,三個測驗點只通過了一個
題目:
有時候人們用四位數字表示一個時間,比如 1106 表示 11 點零 6 分。現在,你的程式要根據起始時間和流逝的時間計算出終止時間。
讀入兩個數字,第一個數字以這樣的四位數字表示當前時間,第二個數字表示分鐘數,計算當前時間經過那么多分鐘后是幾點,結果也表示為四位數字。當小時為個位數時,沒有前導的零,例如 5 點 30 分表示為 530;0 點 30 分表示為 030。注意,第二個數字表示的分鐘數可能超過 60,也可能是負數。
輸入格式:
輸入在一行中給出 2 個整數,分別是四位數字表示的起始時間、以及流逝的分鐘數,其間以空格分隔。注意:在起始時間中,當小時為個位數時,沒有前導的零,即 5 點 30 分表示為 530;0 點 30 分表示為 030。流逝的分鐘數可能超過 60,也可能是負數。
輸出格式:
輸出四位數字表示的終止時間,當小時為個位數時,沒有前導的零。題目保證起始時間和終止時間在同一天內。
輸入樣例:
1120 110
輸出樣例:
1310
#include "stdio.h"
int main()
{
int num1, num2;
scanf("%d %d",&num1,&num2);
int h = num1/100;
int m = num1%100;
int h1 = num2/60;
int m1 = num2 - h1*60;
h += h1;
m += m1;
if( m > 60 )
{
h++;
m -= 60;
}
if( h*100+m >= 0 && h*100+m < 100 )
printf("%03d",h*100+m);
else
printf("%d",h*100+m);
return 0;
}
uj5u.com熱心網友回復:
題目里說,流逝的分鐘數有可能是負值,樓主你似乎沒有考慮。uj5u.com熱心網友回復:
我考慮了啊?uj5u.com熱心網友回復:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num1, num2, sign = 0;
scanf("%d %d",&num1,&num2);
int h = num1/100;
int m = num1%100;
if (num2 < 0) {
sign = 1;
num2 = abs(num2);
}
int h1 = num2/60;
//int m1 = num2 - h1*60;
int m1 = num2 % 60;
if (sign) {
if (m - m1 < 0) {
m = m + 60 - m1;
h1 += 1;
} else {
m -= m1;
}
if (h - h1 < 0)
h = h + 24 - h1;
else
h = h - h1;
} else {
if (m + m1 > 60) {
h = (h + h1 + 1) % 24;
m = (m + m1) % 60;
} else {
m = (m + m1) % 60;
h = (h + h1) % 24;
}
}
if( h*100+m >= 0 && h*100+m < 100 )
printf("%03d",h*100+m);
else
printf("%d",h*100+m);
/*
h += h1;
m += m1;
if( m > 60 )
{
h++;
m -= 60;
}
if( h*100+m >= 0 && h*100+m < 100 )
printf("%03d",h*100+m);
else
printf("%d",h*100+m);
*/
return 0;
}
供參考~
uj5u.com熱心網友回復:
好吧,num2若是負的,大概率m1就是負的;
m+=m1;以后,m是負的咋辦?
uj5u.com熱心網友回復:
你又成功的把這一道簡單題給弄麻煩了
uj5u.com熱心網友回復:
起始時間和流逝的時間是同一天的時間
uj5u.com熱心網友回復:
供參考:#include "stdio.h"
int main(int argc, char* argv[])
{
int num1, num2;
scanf("%d %d",&num1,&num2);
int h = num1/100;
int m = num1%100;
int h1 = num2/60;
int m1 = num2%60; //num2 - h1*60;
h += h1;
m += m1;
if(m<0){
h--;
m += 60;
}
if( m > 59 ){ //if( m > 60 )
h++;
m -= 60;
}
if(h<0) h += 24; //超過一天的處理
if(h>=24)h -= 24;
if( h*100+m >= 0 && h*100+m < 100 )
printf("%03d",h*100+m);
else
printf("%d",h*100+m);
return 0;
}
uj5u.com熱心網友回復:
喏,
1010,十點十分
-110=
-1小時,-50分鐘
該是是820啊,哪里不是同一天了?
uj5u.com熱心網友回復:
這種還是把時間化成0點起分鐘數,加減分鐘數,再化回去比較簡單。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/250787.html
標籤:C語言
上一篇:求救
下一篇:請教關于Ctrl z和EOF
