【码蹄集新手村600题】人名币大写数字

发布于:2023-01-17 ⋅ 阅读:(601) ⋅ 点赞:(0)

题目链接:

码蹄集 (matiji.net)

解题思路:

利用 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 后查看

网站公告

今日签到

点亮在社区的每一天
去签到