数的读法
读一个2,000,000,000以内的数,一个小菜鸡吭哧吭哧的做法,but我感觉是有问题的,因为后来是针对测试用例一步步修改的~谁知道TC全不全呢!
#include<iostream> #include<string.h> using namespace std; string a[10] = { "yi","er","san","si","wu","liu","qi","ba","jiu", "shi"}; int flag = 0; void read(int num) { int qian = num / 1000; int bai=(num/100)%10; int shi = (num / 10) % 10; int ge = num % 10; if (qian > 0) { cout<< a[qian - 1]; printf(" qian "); } else if (qian == 0) { if (flag == 0) { flag = 1; printf("ling "); } } if (bai > 0) { cout<<a[bai - 1]; printf(" bai "); } else if (bai == 0) { if (flag == 0) { flag = 1; printf("ling "); } } if (shi > 0) { if (shi != 1) { cout<< a[shi - 1]; printf(" shi "); } else if (shi == 1) { printf("shi "); } } else if (shi == 0) { if (flag == 0) { flag = 1; printf("ling "); } } if (ge > 0) { cout<<a[ge- 1]; printf(" "); } } int main() { int num; scanf("%d", &num); int yi = num / 100000000; if ( yi> 0) { if (yi ==20) { printf("er shi"); } else if (yi >= 10) { printf("shi "); if (yi > 10) { cout<< a[yi % 10 - 1]; } } printf(" yi "); } int wan = (num / 10000) % 10000; if (wan > 0) { if (yi == 0) flag = 1; read(wan); printf("wan "); } else if (yi != 0 && wan == 0 && flag == 0) { printf("ling "); } int qian = num % 10000; if (qian > 0) { if (wan == 0 && yi == 0) { flag = 1; } else if (wan != 0) { if (qian < 1000) flag = 0; } read(qian); } return 0; }
转载别人简洁的做法~