[蓝桥杯][基础练习VIP]报时助手

题目

题目链接

题解

比输出数值对应中文的题友好多了。
将“时”、“分”分开输出即可;“时”的输出可以看作“分”的输出的部分情况。
看代码吧,解释比较详细。

注意分输出时存在为30,40,50的特殊情况,可以通过自己出样例测试出来。

代码

#include<bits/stdc++.h>
using namespace std;

string to10[11] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"}; 
// to10[0~10] = 0~10
string to20[11] = {"", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty"};
// to20[0~10] = 0 : "", 1~10 : 10+(1~10)
string to60[6] = {"", "", "twenty", "thirty", "forty", "fifty"};
// to60[0~5] = 0、1 : "", 2~5 : 10*(2~5)

int h, m;

int main()
{
	cin>>h>>m;
	if(h <= 10) cout<<to10[h]; // 不超过10
	else if(h <= 20) cout<<to20[h-10]; // 不超过20
	else cout<<to20[10]<<' '<<to10[h%20]; // 超过20,要进行十位数和个位数分开输出
	cout<<' ';
	if(m) { // 分钟非零
		if(m <= 10) cout<<to10[m]; // 不超过10
		else if(m <= 20) cout<<to20[m-10]; // 不超过20
		else cout<<to60[m/10]<<' '<<(m%10?to10[m%10]:""); // 超过20,要进行十位数和个位数分开输出,要注意m=30,40,50时避免输出个位0,要进行特判
	} else cout<<"o'clock"<<endl;

	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不牌不改

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值