【蓝桥杯】试题 基础练习 报时助手(c++)

问题描述
  给定当前的时间,请用英文的读法将它读出来。
  时间用时h和分m表示,在英文的读法中,读一个时间的方法是:
  如果m为0,则将时读出来,然后加上“o'clock”,如3:00读作“three o'clock”。
  如果m不为0,则将时读出来,然后将分读出来,如5:30读作“five thirty”。
  时和分的读法使用的是英文数字的读法,其中0~20读作:
  0:zero, 1: one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight, 9:nine, 10:ten, 11:eleven, 12:twelve, 13:thirteen, 14:fourteen, 15:fifteen, 16:sixteen, 17:seventeen, 18:eighteen, 19:nineteen, 20:twenty。
  30读作thirty,40读作forty,50读作fifty。
  对于大于20小于60的数字,首先读整十的数,然后再加上个位数。如31首先读30再加1的读法,读作“thirty one”。
  按上面的规则21:54读作“twenty one fifty four”,9:07读作“nine seven”,0:15读作“zero fifteen”。
输入格式
  输入包含两个非负整数h和m,表示时间的时和分。非零的数字前没有前导0。h小于24,m小于60。
输出格式
  输出时间时刻的英文。
样例输入
0 15
样例输出
zero fifteen
 
思路:先用把上面的数字写成函数,返回字符串,然后再把分钟,小时的每一位存起来,判断当前情况。
#include <iostream>
#include <cstdio> 
using namespace std;
string time(int a)
{
     string s[] = {"zero","one","two","three","four","five","six","seven", "eight", "nine", "ten","eleven", "twelve","thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty","thirty","forty","fifty","o'clock"};
     switch(a){
         case 0:
         return s[0];
         case 1:
         return s[1];
         case 2:
         return s[2];
         case 3:
         return s[3];
         case 4:
         return s[4];
         case 5:
         return s[5];
         case 6:
         return s[6];
         case 7:
         return s[7];
         case 8:
         return s[8];
         case 9:
         return s[9];
         case 10:
         return s[10];
         case 11:
         return s[11];
         case 12:
         return s[12];
         case 13:
         return s[13];
         case 14:
         return s[14];
         case 15:
         return s[15];
         case 16:
         return s[16];
         case 17:
         return s[17];
         case 18:
         return s[18];
         case 19:
         return s[19];
         case 20:
         return s[20];
         case 30:
         return s[21];
         case 40:
         return s[22];
         case 50:
         return s[23];
     }
}
int main(int argc, char *argv[])
{
    int h,m;
    int h1,m1;
    int t,s;
    scanf("%d %d",&h,&m);
    t = h; 
    s = m;
    if(h > 20 && h != 30 && h != 40 && h != 50){
         h1 = h % 10;//存个位 
          h = h - h1;//存十位 
    }    
    if(m > 20 && m != 30 && m != 40 && m != 50){
         m1 = m % 10;//存个位 
          m = m - m1;//存十位     
    }
    
    if(m % 10 == 0 && m / 10 == 0)//当分钟为 00 时 
    {
        if(t <= 20){
        cout << time(h) << " " << "o'clock";    
        } 
        else{
        cout << time(h) << " " << time(h1) << " " << "o'clock";    
        }     
    } 
    
    if(s > 20 && s != 30 && s != 40 && s != 50 && t > 20 && t != 30 && t != 40 && t!= 50 ){
     cout << time(h) << " " << time(h1) << " " << time(m) << " " << time(m1); 
    } 
    else if(t <= 20 && s > 20 && s != 0){
     cout << time(h) << " " << time(m) << " " << time(m1);    
    }
    else if(t > 20 && s <= 20 && s != 0){
     cout << time(h) << " " << time(h1) << " " << time(m);
    }
    else if(t != 0 && s != 0){
     cout << time(h) << " " << time(m);
    }
    else if(t == 0 && s != 0){
     cout << time(0) << " " << time(m) << " " << time(m1); 
    } 
    return 0;
}

 

-------------------------------------------

个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

posted @ 2020-08-25 15:12  比尔的歌  阅读(312)  评论(0)    收藏  举报