Ⅰ 用c语言编写程序:给你一个三位正整数,输出相应读法的汉语拼音,每个音之间用一个空格间隔。
#include<math.h>
#include<stdio.h>
#include<string.h>
#defineMIN(a,b)((a)<(b)?(a):(b))
char*numpinyin(char*buf,unsignedintn)
{
switch吵郑(n)
{
case0:strcpy(buf,"líng");returnbuf;break;
case1:strcpy(buf,"yī");returnbuf;break;
case2:strcpy(buf,"èr");returnbuf;break;
case3:strcpy(buf,"sān");returnbuf;break;
case4:strcpy(buf,"sì");returnbuf;break;
case5:strcpy(buf,"wǔ");returnbuf;升橘颂break;
case6:strcpy(buf,"liù");returnbuf;break;
case7:strcpy(buf,"qī");returnbuf;break;
case8:strcpy(buf,"bā");returnbuf;break;
case9:strcpy(buf,"jiǔ");伍镇returnbuf;break;
case10:strcpy(buf,"shí");returnbuf;break;
case100:strcpy(buf,"bǎi");returnbuf;break;
default:returnNULL;break;
}
}
intgetdigit(unsignedintn,unsignedintd)
{
charstr[4]="";
if(n<=999)
{
sprintf(str,"%03d",n);
returnstr[d]-48;
}
else
return-1;
}
intpower(intx,inty)
{
intresult=1,i=0;
for(;i<y;i++)
result*=x;
returnresult;
}
intmain(void)
{
intn=0,num=0,count=0,i=0;
charbuffer[5]="";
scanf("%d",&n);
for(;count<MIN(n,20);count++)
{
scanf("%d",&num);
if(num>999)
printf("Thenumberyoutypedisnotathree-digitorsmallerinteger! ");
else
{
if(num==0)
{
numpinyin(buffer,num);
printf("%s ",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(' ');
}
}
}
return0;
}
精心编写代码,实在不易,望采纳,谢谢。。
Ⅱ c语言--将中文转化为拼音
你比我利害,可以吧!!
Ⅲ 求一个C语言写的汉字转拼音程序
http://www.programbbs.com/doc/2302.htm
.
Ⅳ 如何用c语言将文件夹下的中文文件名改为用拼音命名
右击,重命名
Ⅳ c 语言怎么对中文字符进行拼音排序
ansi GB2312里一级汉字是按拼音排序的,袭橡搏其他的汉字按部首/笔划排序
所以能按拼音排序的汉字只有3000多个,直接用strcmp()较拍祥就可以了
你提出的这几个字都是一级字库里的字,所以用strcmp()就可以实现按拼音排序
但是如果你用的是Unicode,由于unicode里的汉字按笔划顺序排序,所如源以没有办法实现按拼音排序。
Ⅵ 求问c语言中怎么把一个字符串中的拼音换成汉字 如输入jin tian 输出今 tian
如果是简单的实现的话可以使用哈希表,这样查找可能比较快一点,但是汉字拼音相同的很多,
例如建立两个相关的数组:
charpinyin[100][50]={"jin","tian"};
charhanzi[100][50]={"今","天"};
然后将输入的字与 pinyin表对比,找到index,然后对应输出hanzi[index]
因为 C 语言没有哈希表,需要自己实现,类似于上面的结构。
Ⅶ linux或mac os系统下 怎么用C语言或c++ 将汉字转化为拼音缩写
不想模弯写代码了 给你一个参考
在很多软件中,输入拼音的首写字母就可以快速定位到某个词条。比如轿码行,在铁路售票软件中,输入: “bj”就可以定位到“北京”。怎样在自己的软件中实现这个功能呢?问题的关键在于:对每个汉字必须能计算出它的拼音首字母。
GB2312汉字编码方式中,一级汉字的3755个是按照拼音顺序排列的。我们可以利用这个特征,对常用汉字求拼音首字母。
GB2312编码方案对每个汉字采用两个字节表示。第一个字节为区号,第二个字节为区中的偏移号。为了能与已有的ASCII编码兼容(中西文混排),区号和偏移编号都从0xA1开始。
我们只要找到拼音a,b,c,...x,y,z 每个字母闭哗所对应的GB2312编码的第一个汉字,就可以定位所有一级汉字的拼音首字母了(不考虑多音字的情况)。下面这个表给出了前述信息。
a 啊 B0A1
b 芭 B0C5
c 擦 B2C1
d 搭 B4EE
e 蛾 B6EA
f 发 B7A2
g 噶 B8C1
h 哈 B9FE
j 击 BBF7
k 喀 BFA6
l 垃 C0AC
m 妈 C2E8
n 拿 C4C3
o 哦 C5B6
p 啪 C5BE
q 期 C6DA
r 然 C8BB
s 撒 C8F6
t 塌 CBFA
w 挖 CDDA
x 昔 CEF4
y 压 D1B9
z 匝 D4D1
Ⅷ 用C语言编写 手机用拼音输入法的实现
关于嵌入式设备输入法(手机输入法) C语言实现
目前我在调试一款设备,类似于手机,有0-9,*,#,确定,退出,上下左右这些键。
苦于没有输入法。
显示汉字那一块目前已搞定,我贴出来原理:
汉字由两个机内码组成qh,wh,
第一步:
qh-=0xa0; //机内码转成区位码-0xa0
wh-=0xa0;
第二步:
定位字库里面的字:
offset=(94*(qh-1)+(wh-1))*32; /* 定位字库的字 */
第三步:
显示到屏上面16*16个点一个汉字
for(i=0;i<16;i++)
{
val16=((hzk16[i]<<8)&0xff00) + ((hzk16[i]>>8)&0xff);
for(j=0;j<16;j++)
{
if(val16 & 0x8000) p16[i*nDataWidth+j]=nColor&0xffff;
val16=val16<<1;
}
}
说了半天的显示其实主题是输入法,只要能键出机内码就行。
问题的关键就在这里了,目前我才刚开始开发。希望喜欢的朋友一起交流。
网上找了些东西参考:
直接在Keil下仿真的T9拼音输入法(完整版)
嵌入式系统中文输入法的设计
这两个东西也比较重要:
汉字编码原理 文中讲了汉字编码的整下原理,一目了然。
点阵汉字显示 文中讲了点阵的汉字的显示方法,配合上面的代码理解。
16x16字库文件下载,注意右键另存为后面把.jpg的改成.bin即可.
用什么问题可以多多交流。[email protected].或者QQ郡里
手机爆中文输入法侵权纠纷 几乎所有品牌卷入
信产部制定手机输入法标准
附:刚移植了一个51单片机的拼音输入法,主要就是一个索引表。还得做一些联想等功能。源码我共享在郡里面了。
Ⅸ 如何写一个输入数字后输出对应数字拼音的c语言程序
#include<stdio.h>
#define num 10 //设置你要输入数字的长度
void main(void)
{
char a[num];
int i = 0;
printf("输入数字:\t");
gets(a);
while(a[i] != '\0')
{
switch(a[i])
{
case '0':printf("零\n");break;
case '1':printf("一\n");break;
case '2':printf("二\n");break;
case '3':printf("三\n");break;
case '4':printf("四\n");break;
case '5':printf("五\n");break;
case '6':printf("六\n");break;
case '7':printf("七\n");break;
case '8':printf("八\n");break;
case '9':printf("九\n");break;
default:printf("错误\n");break;
}
i++;
}
printf("\n");
}
Ⅹ c语言把一个整数转变成中文的念法
这是我以前写的,把中文改成拼音就行了
http://hi..com/rankabc/item/d1dd64ff4c674aeba835a2a3