问题描述
- 刚学c编的时间换算问题,感觉编的很笨求指教
-
题目内容:
UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。
有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。
你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。
提醒:要小心跨日的换算。输入格式:
一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。输出格式:
一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果分小于10分,需要保留十位上的0。输入样例:
903输出样例:
103
时间限制:500ms内存限制:32000kb
解决方案
解决方案二:
#include
int main()
{
int BJT;
int UTC;
printf("请输入北京时间");
scanf("%d",&BJT);
printf("您输入的的北京时间是%dn",BJT);
if(BJT<=2359){
if(BJT>=800){
int a=BJT/1000;
int b=(BJT-a*1000)/100;
int c=(BJT-a*1000-b*100)/10;
int d=(BJT-a*1000-b*100)%10;
if(b>8){
b=b-8;
UTC=a*1000+b*100+c*10+d;
}else{
a=a-1;
b=b+10-8;
UTC=a*1000+b*100+c*10+d;
}
if(UTC>10){
UTC=UTC;
printf("对应的世界协调时为%d",UTC);
}else{
printf("对应的世界协调时为0%d",UTC);
}
}else{
int a=BJT/1000;
int b=(BJT-a*1000)/100;
int c=(BJT-a*1000-b*100)/10;
int d=(BJT-a*1000-b*100)%10;
if(b>8){
b=b-8;
UTC=a*1000+b*100+c*10+d;
}else{
a=a-1;
b=b+10-8;
UTC=a*1000+b*100+c*10+d;
}
UTC=2400+UTC;
printf("对应的世界协调时为前一天的%d",UTC);
}
}else{
printf("您输入的的时间有误,必须小于2359");
}
return 0;
}
解决方案三:
#include
int main()
{
int BJT;
int UTC;
printf("请输入北京时间");
scanf("%d",&BJT);
printf("您输入的的北京时间是%dn",BJT);
if(BJT<=2359){
if(BJT>=800){
int a=BJT/1000;
int b=(BJT-a*1000)/100;
int c=(BJT-a*1000-b*100)/10;
int d=(BJT-a*1000-b*100)%10;
if(b>8){
b=b-8;
UTC=a*1000+b*100+c*10+d;
}else{
a=a-1;
b=b+10-8;
UTC=a*1000+b*100+c*10+d;
}
if(UTC>10){
UTC=UTC;
printf("对应的世界协调时为%d",UTC);
}else{
printf("对应的世界协调时为0%d",UTC);
}
}else{
int a=BJT/1000;
int b=(BJT-a*1000)/100;
int c=(BJT-a*1000-b*100)/10;
int d=(BJT-a*1000-b*100)%10;
if(b>8){
b=b-8;
UTC=a*1000+b*100+c*10+d;
}else{
a=a-1;
b=b+10-8;
UTC=a*1000+b*100+c*10+d;
}
UTC=2400+UTC;
printf("对应的世界协调时为前一天的%d",UTC);
}
}else{
printf("您输入的的时间有误,必须小于2359");
}
return 0;
}
时间: 2024-10-30 00:20:18