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中字符串与数字之间的转换方法。

水滴石穿,笨鸟先飞!

原文地址:https://www.cnblogs.com/sheepcore/p/12375631.html