📄 40.c
字号:
}
}
}
}
}
check_key( unsigned char k) //查看并确认键值
{
int c;
switch(k)
{
case '1':c=1;
break;
case '2':c=2;
break;
case '3':c=3;
break;
case '4':c=4;
break;
case '5':c=5;
break;
case '6':c=6;
break;
case '7':c=7;
break;
case '8':c=8;
break;
case '9':c=9;
break;
case '0':c=0;
break;
case 'q':c=10; //define F1
break;
case 'w':c=11; //define F2
break;
case 'e':c=12; //define F3
break;
case 'r':c=13; //define F4
break;
case 'c':
closegraph();
exit(0);
default:
c=20;
break;
}
return(c);
}
main()
{
int firqmh,firqml;
int a[6][16];
int key[6],i,j,s,ii,k,m,kkk,kk=0,jj=120,n,nn=0;
int ks,mm,d=0,key1,key2,qmh,qml,ss,kp,kd=0,page=0,page1=0;
int driver=DETECT,mode;
int end;
int endd;
int mu;
int end1;
int sm[6];
int ok;
char kc;
initgraph(&driver,&mode,"");
setcolor(5);
headdisp();
headdisp2();
bar(0,50,500,100);
bar(0,100,500,220);
for(i=0;i<5;i++)
{
line(0,100+i,500,100+i);
}
for(i=0;i<5;i++)
{
line(0,220+i,500,220+i);
}
for(i=0;i<5;i++)
{
line(0,45+i,500,45+i);
}
for(i=0;i<2;i++)
{
line(i,45,i,220);
}
for(i=0;i<2;i++)
{
line(i+500,45,i+500,220);
}
top:
if(kd==4)
{
kd=0;
} //键盘状态循环
while(kd==0) //汉字输入状态
{
bar(0,50,500,100);
pydisp();
h1:
for(;;)
{
page=0;
for(i=0;i<7;i++)
{
again:
key[i]=check_key(getch()); //取键值
if(key[0]==0)
{
goto again;
}
switch(key[i])
{ //判断键状态
case 9:kk=kk+8;goto h1;
case 13:kd++;goto top; //是否是状态切换键
case 12:
kk=kk-8;
bar(kk,jj,kk+8,jj+16);
if(kk<0)
{
kk=304;
jj=jj-16;
}
if(jj<=120)
{
jj=120;
}
goto h1;
case 0 :
s=check_key(getch());
goto outhz; //汉字输入确认
case 10:i=i-2;if(i<0){i=0;goto top;}
break;
case 11:
case 20:
goto again;
}
if(i==0)
{ //若为第一次读键
for(k=0;k<402;k++)
{
if(hzk_index[k][0]==key[0]) //搜索索引表
{
ok=k;
goto here;
}
}
}
if(i==1)
{ //若为第二次读键
mu=0;
for(k=0;k<402;k++)
{
if(hzk_index[k][0]==key[0]&&hzk_index[k][1]==key[1])
//搜索索引表
{
mu=1;
ok=k;
goto here;
}
}
if(mu==0){sm[i]=ok;goto again;}
}
if(i==2)
{ //若为第三次读键
mu=0;
for(k=0;k<402;k++)
{
if(hzk_index[k][0]==key[0]&&hzk_index[k][1]==key[1]&&hzk_index[k][2]==key[2])
//搜索索引表
{
ok=k;
mu=1;
goto here;
}
}
if(mu==0){sm[i]=ok;goto again;}
}
if(i==3)
{ //若为第四次读键
mu=0;
for(k=0;k<402;k++)
{
if(hzk_index[k][0]==key[0]&&hzk_index[k][1]==key[1]&&hzk_index[k][2]==key[2]&&hzk_index[k][3]==key[3])
{
ok=k;
mu=1;
goto here;
}
}
if(mu==0){sm[i]=ok;goto again;}
}
if(i==4)
{ //若为第五次读键
mu=0;
for(k=0;k<402;k++)
{
if(hzk_index[k][0]==key[0]&&hzk_index[k][1]==key[1]&&hzk_index[k][2]==key[2]&&hzk_index[k][3]==key[3]&&hzk_index[k][4]==key[4])
{
mu=1;
ok=k;
goto here;
}
}
if(mu==0){sm[i]=ok;goto again;}
}
if(i==5)
{ //若为第六次读键
mu=0;
for(k=0;k<402;k++)
{
if(hzk_index[k][0]==key[0]&&hzk_index[k][1]==key[1]&&hzk_index[k][2]==key[2]&&hzk_index[k][3]==key[3]&&hzk_index[k][4]==key[4]&&hzk_index[k][5]==key[5])
{
mu=1;
ok=k;
goto here;
}
}
if(mu==0){sm[i]=ok;goto again;}
}
here: //显示对应键盘字母所有的可能组合
m=hzk_index[k][6]; //m为所有可能数,它位于索引表每行第7列
firqmh=hzk_index[k][7];
firqml=hzk_index[k][8];
bar(0,50,300,100);
pydisp();
bar(100,50,200,100);
for(ks=0;ks<9;ks++)
{
putnum(ks*32,70,ks+1,2);
puthz((ks*2+1)*16,70,firqmh,firqml+ks,2);
}
for(n=0;n<m;n++)
{
putnum(10*8+n*64,50,n+1,2);
for(kkk=1;kkk<=i+1;kkk++)
{
a[n][kkk]=hzk_index[k][18+(n*(i+1)+kkk)];
putzimus(11*8+n*64+kkk*8,50,a[n][kkk]-1,2);
}
}
}
outhz: //用户选择组合中所有可能中的一种
nn=++nn ;
if(mu==1)
{
qmh=hzk_index[k][7+(s-1)*2];
qml=hzk_index[k][7+(s-1)*2+1];
}
if(mu==0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -