#include #include #include #include int num_weishu(int num) // 判断数字位数 { int n = 0; num = abs(num); if (num == 0) { return 1; } while (num > 0) { num /= 10; n++; } return n; } int main() { int x; int a = 0; int b = 0; int m = 0; printf("请输入一个整数:"); scanf("%d", &x); a = num_weishu(x); b = (int)(pow(10, a - 1) + 0.1); // pow函数是次方运算的函数名,+0.1是为了避免浮点数误差 printf("这个数字的位数是%d。\n", a); if (a > 9) { printf("超过最大支持位数!\n"); return -1; } else { if (x < 0) // 处理负号 { printf("-"); } while (b > 0) { m = x / b; switch (m) { case 0: printf("ling "); break; case 1: printf("yi "); break; case 2: printf("er "); break; case 3: printf("san "); break; case 4: printf("si "); break; case 5: printf("wu "); break; case 6: printf("liu "); break; case 7: printf("qi "); break; case 8: printf("ba "); break; case 9: printf("jiu "); break; default: break; } if (b > 9) { printf(" "); } x = x % b; b = b / 10; } printf("\n"); } return 0; }