一个c练习问一下,我自己写的代码运行除了点bug,没法完全通过,有没有给写一个,是小程序。
输入一串数字9位数以内比如120 0013
就输出拼音
yi bai er shi wan ling yi shi san
我写的程序是在120万的万字没有打印出来
直接就yi bai er shi ling san 了
有没有帮忙写一段
如果输入1800
就输出yi qian ba bai
2015-03-29 21:29
2015-03-29 21:36
2015-03-29 22:03
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
typedef struct {
int data;
char unit[3];
} item;
const char cnum[10][3] = {"", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
int main(void) {
int i, j, len, n;
char p[39] = {0};
item num[9] = {
{0, "亿"},
{0, "千"}, {0, "百"}, {0, "十"}, {0, "万"},
{0, "千"}, {0, "百"}, {0, "十"}, {0, "\0"}
};
if((scanf("%9d", &n)) != 1) {
puts("输入值有误! 退出程序...");
exit(EXIT_FAILURE);
}
if(n > 0) {
j = (int)log10(n);
len = j + 1;
for(i = 8 - j; i < 9; i++) {
num[i].data = (int)(n / pow(10, j--)) % 10;
}
for(i = 0; i < 8; i++) {
if(num[i].data) {
strcat(p, cnum[num[i].data]);
strcat(p, num[i].unit);
} else if(i > 2 && i > 8 - len &&
num[i].data == 0 && num[i + 1].data != 0) {
strcat(p, "〇");
} else if(i == 4 && num[4].data == 0 && len > 5 &&
(num[1].data || num[2].data || num[3].data)) {
strcat(p, "万");
}
}
if(num[9].data) strcat(p, cnum[num[i].data]);
} else if(n == 0) {
strcat(p, "〇");
} else {
puts("输入值有误! 退出程序...");
exit(EXIT_FAILURE);
}
puts(p);
return 0;
}

2015-03-30 14:44
2015-03-30 14:59
2015-03-30 20:08

2015-03-30 20:41