c++ 现在几点钟?
题目描述写一个程序把一个用hour:minute表示的美国时间转换成美式英语表示的时间(按下面的格式)。这里是转换的规则:(注意他们可能不同于你习惯的英国规则)第一个字符...
题目描述
写一个程序把一个用 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 展开
写一个程序把一个用 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 展开
展开全部
刚写的,呵呵,应该能满足你的要求:
#include <iostream>
#include <string>
using namespace std;
//数字对应的英文数组
char *EnNumArry[]={"zero","one","two","three","four","five","six","seven","eight", "nine","ten",
"eleven ","twelve", "thirteen","fourteen","fifteen","sixteen","seventeen",
"eighteen","nineteen ","twenty","twenty-one", "twenty-two", "twenty-three",
"twenty-four", "twenty-five","twenty-six","twenty-seven","twenty-eight",
"twenty-nine","thirty","thirty-one","thirty-two","thirty-three","thirty-four",
"thirty-five","thirty-six","thirty-seven","thirty-eight","thirty-nine","forty",
"forty-one","forty-two","forty-three","forty- four"};
//函数名:NumTimeToStr
//作用:将数字时间转换为英文时间
string NumTimeToStr(string strNumTime)
{
int iIndex = strNumTime.find(":");
if (iIndex == -1)
{
return "Time format error!";
}
int iHour = atoi(strNumTime.substr(0, iIndex).c_str());
int iMinute = atoi(strNumTime.substr(iIndex + 1, strNumTime.length() - iIndex - 1).c_str());
if (iHour > 12)
{
iHour = iHour % 12;
}
else if (iHour <= 0)
{
return "Time format error!";
}
if (iMinute > 59)
{
return "Time format error!";
}
string strRet ;
if (iMinute == 0)
{
strRet = (string)EnNumArry[iHour] + " o'clock.";
}
else if (iMinute >= 45)
{
++iHour;
if (iHour > 12)
{
iHour = 1;
}
int iLeft = 60 - iMinute;
if (iMinute == 45)
{
strRet = (string)"Quarter to " + (string)EnNumArry[iHour];
}
else
{
strRet = (string)EnNumArry[iLeft] + " to " + EnNumArry[iHour];
}
}
else
{
if (iMinute == 15)
{
strRet = (string)"Quarter past " + (string)EnNumArry[iHour];
}
else
{
strRet = (string)EnNumArry[iHour] + " " + EnNumArry[iMinute];
}
}
if (strRet[0] >= 'a' && strRet[0] <= 'z')
{
strRet[0] -= 32;
}
return strRet;
}
int main(int argc, char *argv[])
{
string strInput;
cout<<"Enter time(exit to stop):"<<endl;
cin>>strInput;
while (strInput != "exit")
{
cout<<NumTimeToStr(strInput)<<endl;
cout<<"Enter time(exit to stop):"<<endl;
cin>>strInput;
}
return 0;
}
我这是连续运行的,输入一行,显示结果,你可以按自己的需要修改。
运行截图:
运行中,输入exit结束。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询