⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c.txt

📁 汉语拼音输入程序
💻 TXT
字号:
#include "stdio.h"
#include"graphics.h"
#include"stdlib.h"
#include"string.h"
#include"math.h"
#define NULL 0

int hzk_index[397][30],hzk_fre[94][94];
int store[100][3],change[3],chn_char[10][2];
int page=0,char_num=0,num=-1,X=10,Y=70;

void init(void)
{int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\jmsoft\\drv");
}

void data_init(void)
{int i,j;
FILE *fp,*fp1;
fp=fopen("e:\\index.dat","r");
fp1=fopen("e:\\frequncy.dat","r");
 for(i=0;i<397;i++)
 for(j=0;j<30;j++)
 fscanf(fp,"%d,",&hzk_index[i][j]);
 for(i=0;i<94;i++)
 for(j=0;j<94;j++)
 fscanf(fp1,"%d,",&hzk_fre[i][j]);
 fclose(fp);
 fclose(fp1);
}

void data_store(void)
{int i,j;
FILE *fp;
 fp=fopen("e:\\frequncy.dat","w");
 for(i=0;i<94;i++)
 {fprintf(fp,"\n");
 for(j=0;j<94;j++)
 fprintf(fp,"%d,",hzk_fre[i][j]);
 }
 fclose(fp);
}

void puthz(int x,int y,int h,int l,int color)
{
FILE *fp0;
int kk;
char buffer[32];
register m,n,i,ii,j,k=0;
unsigned long int offset;
if((fp0=fopen("c:\\hzk16","rb"))==NULL)
{printf("can't open hzk16!");}
offset=(94*(h-1)+(l-1))*32L;
fseek(fp0,offset,SEEK_SET);
fread(buffer,32,1,fp0);
    for(i=0;i<16;i++)
    {
      for(j=0;j<2;j++)
      {
         for(k=0;k<8;k++)
         {
             if(((buffer[i*2+j]>>(7-k))&0x1)!=NULL)
             {
             putpixel(x+8*j+k,y+i,color);
             }
         }
      }
    }
    fclose(fp0);
}

void pydisp()             /*拼音状态显示*/
{
unsigned int py[5][2]= {38,20, 50,84,42,68,40,75,03,26,};   
unsigned int hz[5][2]= {26,26,55,54,49,1,52,81,03,26,};  
int s1;
    for(s1=0;s1<5;s1++)
    {
     puthz(s1*16+10,5,py[s1][0],py[s1][1],15);
    }
    for(s1=0;s1<5;s1++)
    {
     puthz(s1*16+10,30,hz[s1][0],hz[s1][1],15);
    }
}

void drawrec(void)
{	setcolor(4);
	setlinestyle(0,0,1);
	rectangle(0,0,639,60);
	setfillstyle(1,1);
	bar(1,1,638,59);
	setcolor(4);
	setlinestyle(0,0,1);
	rectangle(0,62,639,479);
	setfillstyle(1,7);
	bar(1,63,638,478);
	pydisp();
}

int readkey(void)
{int k,c=-2;
	do
	{k=getch();
	if(k>64&&k<91)c=k-64;
	else if(k>96&&k<123)c=k-96;
	else if(k>=48&&k<=57)c=k;
	else if(k==32)c=0;
	else if(k==45||k==61)c=k;
	else if(k==8)c=-1;
	else if(k==27)
	{cleardevice();
	data_store();
	exit(0);}
	}while(c==-2);
	return c;	
}

int seek_index(int key[6],int times)
{int i,c=-1;
switch(times)
{case 0:for(i=0;i<397;i++)if(key[0]==hzk_index[i][0]){c=i;break;}break;
case 1:for(i=0;i<397;i++)if(key[0]==hzk_index[i][0]&&key[1]==hzk_index[i][1]){c=i;break;}break;
case 2:for(i=0;i<397;i++)if(key[0]==hzk_index[i][0]&&key[1]==hzk_index[i][1]&&key[2]==hzk_index[i][2]){c=i;break;}break;
case 3:for(i=0;i<397;i++)if(key[0]==hzk_index[i][0]&&key[1]==hzk_index[i][1]&&key[2]==hzk_index[i][2]&&key[3]==hzk_index[i][3]){c=i;break;}break;
case 4:for(i=0;i<397;i++)if(key[0]==hzk_index[i][0]&&key[1]==hzk_index[i][1]&&key[2]==hzk_index[i][2]&&key[3]==hzk_index[i][3]&&key[4]==hzk_index[i][4]){c=i;break;}break;
case 5:for(i=0;i<397;i++)if(key[0]==hzk_index[i][0]&&key[1]==hzk_index[i][1]&&key[2]==hzk_index[i][2]&&key[3]==hzk_index[i][3]&&key[4]==hzk_index[i][4]&&key[5]==hzk_index[i][5]){c=i;break;}break;
default:;}	
return c;	
}

void read_sort(int k)
{int i,j,m=99;
char_num=0;
for(i=0;i<100;i++){store[i][0]=0;store[i][1]=0;store[i][2]=-1;}
 if(hzk_index[k][6]==hzk_index[k][8])
{i=hzk_index[k][6];	
for(j=hzk_index[k][7];j<=hzk_index[k][9];j++)
{store[char_num][0]=i;
 store[char_num][1]=j;
 store[char_num][2]=hzk_fre[i-1][j-1];
 char_num++;
}
}
else 
{
 i=hzk_index[k][6];
 for(j=hzk_index[k][7];j<=94;j++)
{store[char_num][0]=i;
 store[char_num][1]=j;
 store[char_num][2]=hzk_fre[i-1][j-1];
 char_num++;
}
 i=hzk_index[k][8];
 for(j=1;j<=hzk_index[k][9];j++)
{store[char_num][0]=i;
 store[char_num][1]=j;
 store[char_num][2]=hzk_fre[i-1][j-1];
 char_num++;
}
}
while(m>1)//排序
{for(i=0;i<m;i++)
if(store[i][2]<store[i+1][2]){for(j=0;j<3;j++){change[j]=store[i][j];store[i][j]=store[i+1][j];store[i+1][j]=change[j];}}
m--;
}
//for(i=0;i<20;i++)printf("%d,%d,%d\n",store[i][0],store[i][1],store[i][2]);
}


void display(int py[6],int k)
{int i,j;
 setfillstyle(1,1);
 bar(100,5,638,55);
 if(k!=-1)
 {read_sort(k);
 for(i=0;i<6;i++)
 puthz(100+i*14,6,3,64+py[i],15);//拼音
 for(i=page*10,j=0;i<page*10+10&&store[i][0]!=0;i++)
 {puthz(100+j*40,30,3,16+j,15); puthz(100+j*40+12,30,3,14,15);//数字
  puthz(100+j*40+20,30,store[i][0],store[i][1],15);//汉字
  chn_char[j][0]=store[i][0];chn_char[j][1]=store[i][1];
  if(j<10)j++;
 }
 if(num>=0&&num<=9)
 {puthz(X,Y,chn_char[num][0],chn_char[num][1],4);
  hzk_fre[chn_char[num][0]-1][chn_char[num][1]-1]+=1;
  if(X<610)X+=20;else {X=10;Y+=20;}num=-1;}
 }
 
}

void play(void)
{int i,j;
int n=6,k=0,l;
int key,py[6];
do{
if(n<0)n=0;
else if(n>=6){for(i=0;i<6;i++)py[i]=-64;n=0;}	
key=readkey();
if(key>=1&&key<=26)//字母
{page=0;
py[n]=key;
l=seek_index(py,n);
if(l!=-1){k=l;}else{py[n]=-64;n--;}
n++;
} 
else if(key>=48&&key<=57)//数字
{num=key-48;
for(i=0;i<6;i++)py[i]=-64;
n=0;
}
else if(key==0)//空格
{if(py[0]!=-64)num=0;
else if(X<610)X+=20;
else{X=10;Y+=20;}
for(i=0;i<6;i++)py[i]=-64;
n=0;
}
else if(key==45||key==61)//翻页
{if(key==45&&page>0)page--;
else if(key==61&&page<char_num/10)page++;
}
else if(key==-1&&py[0]!=-64)//退格
{page=0;
for(i=5;i>=0;i--)
{if(py[i]!=-64)
{py[i]=-64;
n=i-1;
k=seek_index(py,n);//重新取值
n+=1;
break;
}
  }
 }
display(py,k);
}while(1);
}

void main()
{
init();
data_init();
drawrec();
play();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -