写一个程序把一个用 hour:minute 表示的美国时间转换成美式英语表示的时间(按下面的格式)。
这里是转换的规则:( 注意他们可能不同于你习惯的英国规则)
第一个字符以大写字母写输出
复合的英文数目是带有连字符号的,举例来说:
forty-four
用[x_in_english] o’clock 来表示 x:00
用Quarter past [x_in_english] 来表示 x:15
用[x_in_english] thirty 来表示 x:30
用Quarter to [next_hour_in_english] 来表示 x:45
以别的方式来表示其它x:nn
[x_in_english] [nn_in_english] 当 nn<45
[60-nn_in_english] to [next_hour_in_english] 当 nn>45
Examples:
5:00 Five o’clock
10:10 Ten ten
9:22 Nine twenty-two
5:15 Quarter past five
2:30 Two thirty
6:40 Six forty
5:45 Quarter to six
8:47 Thirteen to nine
12:47 Thirteen to one (American time: 1:00 follows 12:00)
单独的一行包括一个以hour:minutes表示的时间。
每一个hour属于[1…12],minutes总是成表示成两位在[0…59]的范围里。
单独的一行包括一个被表示成英文的时间。
5:45
Quarter to six
时间转换模拟
细读题目,分析总结出题目所有需求
1.只有每行的第一个单词的第一个单词才需要大写,其余均小写
2.12点的下一个时刻是1点
3.分钟数大于45时,时刻在原来的基础上+1,采用几点差几分的表示法,如8:53,表示为seven to nine(九点差七分)。
#include
#include
#include
#include
using namespace std;
int main()
{
char h[21][10]={//从1到19的英文数字(首字母大写)
"","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Seventeen","Eighteen","Nineteen"
};
char h4[21][10]=//从1到19的英文数字(首字母小写)
{
"","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","seventeen","eighteen","nineteen"
};
char h2[7][10]={//10,20,30,40,50的英文数字(首字母小写)
"","ten","twenty","thirty","forty","fifty"
};
char h3[7][10]={//10,20,30,40,50的英文数字(首字母大写)
"","Ten","Twenty","Thirty","Forty","Fifty"
};
int hour,minute,tp1,tp2;
while(scanf("%d:%d",&hour,&minute)!=EOF)
{
if(minute == 0) printf("%s o'clock\n",h[hour]); //先处理几种特殊情况,下同
else if(minute == 30) printf("%s thirty\n",h[hour]);
else if(minute == 15) printf("Quarter past %s\n",h4[hour]);
else if(minute == 45) {if(hour==12) hour=0;printf("Quarter to %s\n",h4[hour+1]);}
else if(minute<45) //小于45的普遍情况
{
tp1=minute%10;
tp2=minute/10;
if(tp1==0) printf("%s %s\n",h[hour],h2[tp2]);
else if(tp2<=1) printf("%s %s\n",h[hour],h4[minute]);
else if(tp2>1) printf("%s %s-%s\n",h[hour],h2[tp2],h4[tp1]);
}
else if(minute>45) //大于45的普遍情况
{
tp1=minute%10;
tp2=minute/10;
if(hour==12) hour=0;
printf("%s to %s\n",h[60-minute],h4[hour+1]);
}
}
return 0;
}