将编号“翻译”成英文。例35706“翻译”成three-five-seven-zero-six。看到题目的第一反应是对数字进行求余逐个分开,之后用switch case:进行分类判断。再创建一个字符串数组进行存储判断到的字符串,最后进行倒叙输出,就得到编号的翻译内容。方法一般,可以接受。如果我们进一步分析,便会发现下面我要介绍的方法,方便简洁了不少,我们应在功能实现的同时考虑下算法的优劣,以及代码的优雅与否。下面为另外一种方法的介绍:
我们可以创建字符串数组存储0-9的英文字符串,即:
char eng[10][6]={"zero","one","two","three","four","five","six","seven","eight","nine"}
创建数组 num[10] 用于存储数字编号。
最后关键一步:存储的数字数组倒叙依次在eng[]的字符串数组中根据下标查找。即:eng[num[0]]。
代码如下(C语言版):
1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 char eng[10][6]={"zero","one","two","three", 6 "four","five","six","seven","eight","nine"}; 7 int n,end=0,num[10]; 8 printf("输入你要翻译的数字:"); 9 scanf("%d",&n); 10 int temp=n; 11 while(temp!=0){ 12 num[end++]=temp%10; 13 temp/=10; 14 } 15 end-=1; 16 for(;end>0;end--){ 17 printf("%s-",eng[num[end]]); 18 } 19 printf("%s",eng[num[0]]); 20 return 0; 21 }
程序运行如图:
附注:原创不易,转载说明出处。