yima.c.c

来自「用C编程实现对26个字母用于电报打字的优先权进行编程」· C语言 代码 · 共 145 行

C
145
字号
 #include <stdio.h>
#define max 1200
typedef struct lnode{
char zimu;
int data;
int pa,lc,rc;}lnode,*linklist;
main()
{lnode t[60];
linklist p,q;
FILE *fp;
int i,j,k,x1,x2,m1,m2,n=27,A,B,f,r=0,c,v,z,m,s=0;

char a[27]={' ','a','b','c','d','e',
	   'f','g','h','i','j','k',
	    'l','m','n','o','p','q',
	    'r','s','t','u','v','w',
	   'x','y','z'},
  b[]={'t','h','i','s',' ','p','r','o','g','r',
'a','m',' ','i','s',' ','m','y',' ','f','a','v','o','r','i','t','e'},y[27];
 int w[27]={186,64,13,22,32,
           103,21,15,47,57,
          1,5,32,20,57,
          63,15,1,48,51,
          80,23,8,18,1,
	   16,1},e[200],d[200];
	   q=p=(linklist)malloc(sizeof(lnode));
for(i=1;i<(2*n);i++)
   {t[i].pa=t[i].lc=t[i].rc=0;
     if(i<=n)
       {t[i].zimu=a[i-1];
       t[i].data=w[i-1];
                       }
     else{t[i].zimu='#';
           t[i].data=0;
                       }
                        }
   for(i=1;i<n;i++)
      {m1=m2=max;
       x1=x2=0;
       for(j=1;j<(n+i);j++)
          {if((t[j].data<m1)&&(t[j].pa==0))
             {m2=m1;x2=x1;
              m1=t[j].data;x1=j;}
            else if((t[j].data<m2)&&(t[j].pa==0))
                 {m2=t[j].data;
                     x2=j;
                           } }
          k=n+i;
          t[x1].pa=t[x2].pa=k;
          t[k].data=m1+m2;
          t[k].lc=x1;
         t[k].rc=x2;
	 }

	  for(i=0;i<=26;i++)
	   for(j=1;j<=27;j++)
	  if (b[i]==t[j].zimu)
{  printf(" %d %d %d %c",i,j,t[j].pa,t[j].zimu);
v=0,z=0;
 while(t[j].pa!=0)
	 {
	 f=t[j].pa;
	    p->zimu=t[f].zimu;
                    p->data=t[f].data;
                    p->lc=t[f].lc;
                     p->rc=t[f].rc;
                      p->pa=t[f].pa;
                  if(p->lc==j)
                 c=0;
                else c=1;
             printf("%d",c);
	    j=f;
	  r++;
	  v++;
	  d[r]=c; }

	 for(m=r-v+1;m<=r;m++)
	  {
	  e[m]=d[r-z];
	  z++;}




					}

 for(i=1;i<=r;i++)
	printf("%d",e[i]);
	for(i=1;i<=53;i++)


 q->zimu=t[53].zimu;
	 q->data=t[53].data;
           q->lc=t[53].lc;
		   q->rc=t[53].rc;
		   q->pa=t[53].pa;

	 i=1;
	 j=1;
	 while(j<=27)
	{
	   while(q->zimu=='#')
      {
      if(e[i]==0)
      {          A=q->lc;
		q->zimu=t[A].zimu;

		q->lc=t[A].lc;

		q->data=t[A].data;
		q->rc=t[A].rc;
		q->pa=t[A].pa;
		}
 else  if(e[i]==1)
	  {
	  B=q->rc;
q->zimu=t[B].zimu;
	 q->lc=t[B].lc;
	 q->data=t[B].data;
	 q->rc=t[B].rc;
	 q->pa=t[B].pa;
	 }

i++;	 }



 printf("%c",q->zimu);
 y[++s]=q->zimu;
q->zimu=t[53].zimu;
	 q->data=t[53].data;
           q->lc=t[53].lc;
		   q->rc=t[53].rc;
		   q->pa=t[53].pa;
		  j++; }
			fp=fopen("textfile","w");
		  for(i=1;i<=27;i++)

		  fputc(y[i],fp);
								fclose(fp);

	  }


⌨️ 快捷键说明

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