我写了一些代码来解决下面的问题。我已经尝试了一些测试用例,它们都通过了,但是当我提交自动标记的答案时,结果是失败的。我不知道问题出在哪里。这是问题和相应的链接:1005 Spell It Right (20 分)给定一个非负整数 N,你的任务是计算 N 的所有数字之和,并用英文输出和的每一位数字。输入规范:每个输入文件包含一个测试用例。每个 case 占据一行,其中包含一个 N (≤10^100 )。输出规范:对于每个测试用例,一行输出英文单词的和的数字。两个连续的单词之间必须有一个空格,但行尾不能有多余的空格。样本输入:12345示例输出:one five下面是我的代码(在提交到系统之前需要将类名替换为 Main ):package com.maxim.advance;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Main {public static void main(String args[]) { Scanner scanner = new Scanner(System.in); String input = scanner.nextLine(); scanner.close(); int length = input.length(); int sum = 0; for (int index = 0; index < length; index++) { sum += input.charAt(index) - '0'; } // Consider sum == 0 case; if (sum == 0) { System.out.print("zero"); } String[] names = new String[] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; List<String> outputs = new ArrayList<String> (100); while (sum > 0) { outputs.add(names[sum % 10]); sum = sum / 10; } int size = outputs.size(); for (int i = size - 1; i >= 0; i--) { if (i > 0) { System.out.print(outputs.get(i) + " "); } else { System.out.print(outputs.get(i)); } }}}下面的 C++ 代码是正确的并且总是通过#include<bits/stdc++.h>using namespace std;int main(){string s;cin>>s;long int tmp=0;for(int i=0;i<s.size();i++){ tmp+=(s[i]-'0');}string match[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};vector<string> v;long int sum=tmp;while(sum){ v.push_back(match[sum%10]); sum/=10;}reverse(v.begin(),v.end());if(tmp==0)// cout<<"zero";elsefor(int i=0;i<v.size();i++){ if(i==0) cout<<v[i]; else cout<<" "<<v[i];}return 0;}
添加回答
举报
0/150
提交
取消