华为oj初级 学英语

    xiaoxiao2021-03-25  62

    描述 Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文: 如22:twenty two,123:one hundred and twenty three。

    说明: 数字为正整数,长度不超过十位,不考虑小数,转化结果为英文小写; 输出格式为twenty two; 非法数据请返回“error”; 关键字提示:and,billion,million,thousand,hundred。

    方法原型:public static String parse(long num)

    知识点 字符串,循环,函数,指针,枚举,位运算,结构体,联合体,文件操作,递归 运行时间限制 10M 内存限制 128 输入 输入一个long型整数 输出 输出相应的英文写法 样例输入 2356 样例输出 two thousand three hundred and fifty six

    #include <iostream> #include <string> using namespace std; string NUmberToEnglishString(long int number) { string s; if(number<0) { s="error"; return s; } if(number<20) { switch (number) { case 0: s="zero"; return s; case 1: s="one"; return s; case 2: s="two"; return s; case 3: s="three"; return s; case 4: s="four"; return s; case 5: s="five"; return s; case 6: s="six"; return s; case 7: s="seven"; return s; case 8: s="eight"; return s; case 9: s="nine"; return s; case 10: s="ten"; return s; case 11: s="eleven"; return s; case 12: s="twelve"; return s; case 13: s="thirteen"; return s; case 14: s="fourteen"; return s; case 15: s="fifteen"; return s; case 16: s="sixteen"; return s; case 17: s="seventeen"; return s; case 18: s="eighteen"; return s; case 19: s="nineteen"; return s; default: s="error"; return s; } } if(number<100) //21-99 { if (number % 10 == 0) //20,30,40,...90的输出 { switch (number) { case 20: s="twenty"; return s; case 30: s="thirty"; return s; case 40: s="forty"; return s; case 50: s="fifty"; return s; case 60: s="sixty"; return s; case 70: s="seventy"; return s; case 80: s="eighty"; return s; case 90: s="ninety"; return s; default: s="error"; return s; } } else { s=NUmberToEnglishString(number/10*10)+' '+NUmberToEnglishString(number%10); return s; } } if(number<1000) //100-999 { if(number%100==0) { s=NUmberToEnglishString(number/100)+" hundred"; return s; } else { s=NUmberToEnglishString(number/100)+" hundred and "+NUmberToEnglishString(number%100); return s; } } if(number<1000000) //1000-999999 百万以下 { if(number%1000==0) { s=NUmberToEnglishString(number/1000)+" thousand"; return s; } else { s=NUmberToEnglishString(number/1000)+" thousand "+NUmberToEnglishString(number%1000); return s; } } if(number<1000000000) //十亿以下 { if(number%1000000==0) { s=NUmberToEnglishString(number/1000000)+" million"; return s; } else { s=NUmberToEnglishString(number/1000000)+" million "+NUmberToEnglishString(number%1000000); return s; } } if (number<9999999999) //十亿到99亿 { if(number%1000000000==0) { s=NUmberToEnglishString(number/1000000000)+" billion"; return s; } else { s=NUmberToEnglishString(number/1000000000)+" billion "+NUmberToEnglishString(number%1000000000); return s; } } if (number>9999999999) { s="error"; return s; } } int main() { long int a; cin>>a; cout<<NUmberToEnglishString(a)<<endl; }
    转载请注明原文地址: https://ju.6miu.com/read-38876.html

    最新回复(0)