PAT

1005 Spell It Right

2020-04-03  本文已影响0人  胖胖的熊管家

题目

输入一个数字N,N<=10^100。将各位数字相加,最后输出相加和的各位数字的英文,两个连续的单词之间必须有一个空格,但在一行的末尾不能有多余的空格。

Sample Input
12345
Sample Output
one five

解法

法一:C++
思路:

将输入的数字作为字符string去处理,这样可以运用string的特性进行for循环将各位相加。

源代码:
#include <iostream>
#include <cstdio>
#include <math.h>
#include<vector>
using namespace std;
string transfer(int digit);
int main(){
    string num;
    cin>>num;
    
    int sum=0;
    for(int i=0;i<num.length();i++){
        sum += num[i] -'0'; //减去0初始的ascll码值 48 这样就是数字运算了
    }
    vector<int> result;
    
    if(sum == 0){
        cout<<"zero"<<endl;
    }
    while(sum != 0){
        result.push_back(sum % 10);
        sum /= 10;
    }
    for (int i = result.size() - 1; i >= 0; i--)    //倒序输出vector
    {
        if (i == result.size() - 1)
            cout<<transfer(result[i]);
        else
            cout<<' '<<transfer(result[i]);
    }
    
    
}
string transfer(int digit)    //阿拉伯数字和英文转换器
{
    switch (digit)
    {
        case 0:
            return "zero";
            break;
        case 1:
            return "one";
            break;
        case 2:
            return "two";
            break;
        case 3:
            return "three";
            break;
        case 4:
            return "four";
            break;
        case 5:
            return "five";
            break;
        case 6:
            return "six";
            break;
        case 7:
            return "seven";
            break;
        case 8:
            return "eight";
            break;
        case 9:
            return "nine";
            break;
        default:
            break;
    }
    return "NaN";    //用不到,但函数必须得有返回值
}

知识点+坑:
  1. 是数字的字符进行数字运算的时候,可以通过该字符数字” -'0' “这样的方式得到他的实际数字值。

'4' - ’0‘ = 4
或者
'4' - 48 = 4

上一篇下一篇

猜你喜欢

热点阅读