[题目描述]
输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:
0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
[解题思路]
需要考虑负整数、正整数和零,之前我都是先计算这个数字的位数,然后在去求解,这次我决定将数字的每一位存储在一个整型数组,然后根据数组元素逆向输出。这里要求输入一个整数,所以我的数组长度是12(其实是有点大了,浪费空间了~)还有注意是否要输出空格哦!
[实现代码]
#include <stdio.h>
#define N 12
int main(){
int arr[N] = {0};
int num; scanf("%d", &num);
if (num == 0) // 整数为0单独输出哦~
printf("ling\n");
else{
if (num < 0){
printf("fu ");
num = -num;
}
int i = 0;
while (num > 0){
arr[i++] = num % 10;
num /= 10;
}
int j;
for (j=i-1; j>=0; j--){
switch(arr[j]){
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;
}
if (j > 0)
printf(" ");
}
}
return 0;
}
过了一段时间又写这道题目。使用字符数组而不是switch结构。
#include <stdio.h>
int main(){
int num;
int arr[10] = {0};
int i = 0;
char table[10][6] = {"ling", "yi", "er", "san", "si",
"wu", "liu", "qi", "ba", "jiu"};
scanf("%d", &num);
if (num < 0){
num = -num;
printf("fu ");
}
if (0 == num){
printf("ling");
}
while (num > 0){
arr[i++] = num % 10;
num /= 10;
}
if (i > 0){
printf("%s", table[arr[--i]]);
}
while (i > 0){
printf(" %s", table[arr[--i]]);
}
return 0;
}
版权声明:本文为dream_aleaf原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。