用C语言编写程序:给你一个三位正整数,输出相应读法的汉语拼音,每个音之间用一个空格间隔。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言编写程序:给你一个三位正整数,输出相应读法的汉语拼音,每个音之间用一个空格间隔。相关的知识,希望对你有一定的参考价值。
第一行为N(正整数,小于20),表示有下边有N行,每行有一个三位数。
对应每一行的三位数,输出相应读法的汉语拼音,每个音之间用一个空格间隔。
#include <stdio.h>
#include <string.h>
#define MIN(a, b) ((a) < (b) ? (a) : (b))
char *numpinyin(char *buf, unsigned int n)
switch (n)
case 0: strcpy(buf, "líng"); return buf; break;
case 1: strcpy(buf, "yī"); return buf; break;
case 2: strcpy(buf, "èr"); return buf; break;
case 3: strcpy(buf, "sān"); return buf; break;
case 4: strcpy(buf, "sì"); return buf; break;
case 5: strcpy(buf, "wǔ"); return buf; break;
case 6: strcpy(buf, "liù"); return buf; break;
case 7: strcpy(buf, "qī"); return buf; break;
case 8: strcpy(buf, "bā"); return buf; break;
case 9: strcpy(buf, "jiǔ"); return buf; break;
case 10: strcpy(buf, "shí"); return buf; break;
case 100: strcpy(buf, "bǎi"); return buf; break;
default: return NULL; break;
int getdigit(unsigned int n, unsigned int d)
char str[4] = "";
if (n <= 999)
sprintf(str, "%03d", n);
return str[d] - 48;
else
return -1;
int power(int x, int y)
int result = 1, i = 0;
for (; i < y; i ++)
result *= x;
return result;
int main(void)
int n = 0, num = 0, count = 0, i = 0;
char buffer[5] = "";
scanf("%d", &n);
for (; count < MIN(n, 20); count ++)
scanf("%d", &num);
if (num > 999)
printf("The number you typed is not a three-digit or smaller integer!\\n");
else
if (num == 0)
numpinyin(buffer, num);
printf("%s\\n", buffer);
else
for (i = 0; i < 3; i ++)
if (getdigit(num, i) > 0)
if (i == 2 && getdigit(num, 0) != 0 && getdigit(num, 1) == 0)
numpinyin(buffer, 0);
printf("%s ", buffer);
numpinyin(buffer, getdigit(num, i));
if (i < 2)
printf("%s ", buffer);
else
printf("%s", buffer);
if (i < 2)
numpinyin(buffer, power(10, 2 - i));
printf("%s ", buffer);
putchar('\\n');
return 0;
精心编写代码,实在不易,望采纳,谢谢。。
参考技术A #include <stdio.h>int main(int argc,char *argv[])
int n,t,N;
char y[][4]="","yi","er","san","si","wu","liu","qi","ba","jiu";
printf("Input N(int 0<N<20)...\\nN=");
if(scanf("%d",&N)!=1 || N<1 || N>19)
printf("Input error, exit...\\n");
return 0;
while(N--)
printf("Input n(int 99<n<1000)...\\nn=");
if(scanf("%d",&n)!=1 || n<100 || n>999)
printf("Input error, exit...\\n");
return 0;
printf("%d duzuo %sbai ",n,y[n/100]);
if((t=n/10%10) && n%10)
printf("%sshi %s",y[t],y[n%10]);
else if(t==0 && n%10)
printf("ling %s",y[n%10]);
printf("\\n");
return 0;
以上是关于用C语言编写程序:给你一个三位正整数,输出相应读法的汉语拼音,每个音之间用一个空格间隔。的主要内容,如果未能解决你的问题,请参考以下文章
C语言 计算所有四位正整数,百位数为0,去掉百位数0可得到一个三位正整数,而该三位正整数乘以9等于原四位的正整数
给定一个不多于5位的正整数,求它是几位数并且按逆序分别输出每一位数字的C语言程序如何编写?
c语言高手急救:从键盘输入长整数n,将其从个位开始,每三位数字一组用逗号间隔输出。