题目链接:
解题思路:
利用 char 数组存储输入的人名币数额,
首先判断所输入的数是否为俩位数,
如果是俩位数的话,
先把十位数字的大写写出来,
然后再加一个 “ 拾 ” 字,
然后再判断个位数字,
如果个位数字是非 0 的数,
同样输出其大写,
然后在其后加上 “ 元整 ” 俩个字,
但如果个位数字是 0
则其个位不用翻译,
如果输入的是一位数字,
直接输出其大写即可。
后面要加上 “ 元整 ” 俩个字
而不用输出后面的 “ 拾 ”
我们通过 strlen ( ) 函数来判断所输入的数字是二位数还是一位数
输入的数字是一位数的情况有俩种,
例如:
一种是输入 7 ,
另一种是输入 07
参考代码:
#include<bits/stdc++.h>
using namespace std;
void trans (int a)
{
if (a == 1)
cout << "壹" ;
else if(a == 2)
cout << "贰" ;
else if(a == 3)
cout << "叁" ;
else if(a == 4)
cout << "肆" ;
else if(a == 5)
cout << "伍" ;
else if(a == 6)
cout << "陆" ;
else if(a == 7)
cout << "柒" ;
else if(a == 8)
cout << "捌" ;
else if(a == 9)
cout << "玖" ;
}
int main( )
{
char arr[2+1] = {'0'};
cin >> arr;
if(strlen(arr)==1 && arr[0]=='0')//输入是0元的情况
cout << "零" ;
//输入是像 07 ,70 这样的俩位数
trans(arr[0]-'0');//翻译第一位,如果是0不翻译
if(strlen(arr)==2 && arr[0]!='0')//如果是俩位数,十位非0,则输出拾
cout << "拾" ;
trans(arr[1]-'0');//输出个位
/*-'0'的目的是因为如果输入的是一位数的话,其十位数上是\0,
所以不会进入 trans() 函数中
如果输入的是像 30 这样的二位数的话,
也不会进入到 trans() 函数中
而如果输入的是个位数为非0的二位数时,才会执行trans()函数
此时减去 ‘0’ 也不会有任何影响*/
cout << "元整" ;
return 0;
}
本文含有隐藏内容,请 开通VIP 后查看