• PAT-1005 Spell It Right 解答(C/C++/Java/python)


    1.Description:

    2.Example:

    Input:
    12345
    Output:
    one five

    3.solutions:

    C Version:

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <stdlib.h>
     4 
     5 int main() {
     6     char digits[] = {};
     7     char NUMBERS[][10] = {"zero", "one", "two", "three", "four", "five","six",
     8                         "seven", "eight", "nine", "ten"};
     9     scanf("%s", digits);
    10     int sum = 0;
    11     unsigned i;
    12     for (i = 0; digits != NULL && i < strlen(digits); ++i) {
    13         sum += digits[i] - 48;  // '0'的Ascill码为48
    14     }
    15     char* output;
    16     sprintf(output, "%d", sum);
    17     unsigned j;
    18     for (j = 0; output[j] != ''; ++j) {
    19         if (j != strlen(output) - 1)
    20             printf("%s ", NUMBERS[output[j] - 48]);
    21         else
    22             printf("%s", NUMBERS[output[j] - 48]);
    23     }
    24     return 0;
    25 }

    Note: 自己的电脑上调试无误,提交时运行错误!

    C++ Version:

     1 #include <iostream>
     2 using namespace std;
     3 
     4 int main() {
     5     string digits;
     6     string NUMBERS[] = {"zero", "one", "two", "three", "four", "five","six",
     7                         "seven", "eight", "nine", "ten"};
     8     getline(cin, digits);
     9     cout << digits << endl;
    10     int sum = 0;
    11     for (int i = 0; i < digits.size(); ++i) {
    12         sum += int(digits[i]);
    13     }
    14     string output = to_string(sum);
    15     for (int j = 0; j < output.size(); ++j) {
    16         if (j != output.size() - 1)
    17             cout << NUMBERS[int(output[j])] << " ";
    18         else
    19             cout << NUMBERS[int(output[j])];
    20     }
    21     return 0;
    22 }

    Java Version:

     1 import java.util.Scanner;
     2 
     3 /**
     4  * Created by sheepcore on 2020-02-28
     5  */
     6 
     7 public class P1005_Spell_It_Right {
     8     public static void main(String[] args) {
     9         String digits;
    10         String NUMBERS[] = {"zero", "one", "two", "three", "four", "five","six",
    11                 "seven", "eight", "nine", "ten"};
    12         Scanner scan = new Scanner(System.in);
    13         digits = scan.nextLine();
    14         int sum = 0;
    15         for (int i = 0; i < digits.length(); ++i) {
    16             sum += Integer.parseInt(digits.charAt(i) + "");
    17         }
    18         String output = sum + "";
    19         int idx;
    20         for (int j = 0; j < output.length(); ++j) {
    21             if (j != output.length() - 1){
    22                 idx = Integer.parseInt(output.charAt(j) + "");
    23                 System.out.print(NUMBERS[idx] + " ");
    24             }
    25             else {
    26                 idx = Integer.parseInt(output.charAt(j) + "");
    27                 System.out.print(NUMBERS[idx]);
    28             }
    29         }
    30     }
    31 }

    Python Version:

     1 """
     2     created by sheepcore on 2020-2-28
     3 """
     4 
     5 if __name__ == "__main__":
     6     digits = input()
     7     NUMBERS = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven',
     8                'eight', 'nine', 'ten']
     9     i = 0
    10     for ch in digits:  
    11         i += eval(ch)
    12     sum = str(i)
    13     output = ""
    14     for num in sum:
    15         output += " " + str(NUMBERS[eval(num)])
    16     print(output.lstrip(), end='')

    4.summary:

    掌握C、C++、Java、Python中字符串与数字之间的转换方法。

    水滴石穿,笨鸟先飞!

  • 相关阅读:
    js中let和var定义变量的区别
    windows下开发PHP扩展dll(无需Cygwin)
    用VS开发PHP扩展
    破解电信光猫华为HG8120C关闭路由功能方法
    从程序员到项目经理(二十九):怎样写文档
    从程序员到项目经理(二十八):该死的结果导向(只看结果,不问过程到底行不行?)
    从程序员到项目经理(二十七):怎样给领导汇报工作
    从程序员到项目经理(二十六):项目管理不能浑水摸鱼
    从程序员到项目经理(二十五):对绩效考核的吐槽
    从程序员到项目经理(二十四):慎于问敏于行
  • 原文地址:https://www.cnblogs.com/sheepcore/p/12375631.html
Copyright © 2020-2023  润新知