📄 c.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 + -