主观

阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。

  【说明】

 本程序对某电码文(原文)进行加密形成密码文,其加密算法如下:

 假定原文为C1,C2,C3,…,Cn加密后形成的密文为S1,S2,S3,…,Sn,首先读入正整数 key(key>1)作为加密钥匙,并将密文字符位置按顺时针方向连成一个环,如下图所示:

 

 加密时从S1位置起顺时针计数,当数到第key个字符位置时,将原文中的字符放入该密文字符位置中,同时从环中除去该字符位置;接着从环中下一个字符位置起继续计数,当再次数到第key个字符位置时,将原文中字符C2放入其中,并从环中除去该字符位置:依次类推,直至n个原文字符全部放入密文环中。由此产生的 S1S2…Sn即为原文的密文。

 例如,当Key=3时,原文this is a decoding system的密文为:

 aotgnhedi ys d imietsnc ss

 当Key=4时,该原文的密文为:

 ssdtyd htegiasiscnm e ion

 本程序将电码的原文存放在字符数组old中,加密钥匙存放在整数key中。函数decode用于将原文old加密并返回密文字符数组的首指针。其中函数采用一个双向循环链表CODE来表示密文环:函数strlen用于计算一个字符串中的字符个数(不包括字符串结尾符'\O')。为了简单起见,程序中假设内存容量足以满足动态存储单元分配的要求。

 #include <stdio.h>

 #include <stdlib.h>

 typedef struct node

 { char ch;

   struct node *forward;/* Link to next node. */

   struct node *backward;/* Link to previous node.*/

 } CODE;

 int strlen(char *s)

 { int len=0;

   while (*s++!='\0')

     len++;

   return(len);

 }

 char *decode(char *otd,int key)

 { char *New; int length,count,i;

   CODE *loop,*p;

   length=strlen(old);

   loop=(CODE *) malloc(length*sizeof(CODE));

   for (i=1;i<length-1;i++)

  { loop[i],forward=&loop[i+1];

      (1) 

   }

   loop[0].backward=&loop[length-1];

   loop[0],forward=&loop[1];

   loop[length-1].forward=loop;

    (2) 

   for (p=loop,i=0;i<length;i++)

   {  for (count=1 ;count<key;count++

      p=p->forward;

      (3) 

      p->backward->forward=p->forward;

      p->forward->backward=p->backward;

      (4) 

   }

   New=(char *)malloc((length+1) *sizeef(char));

   for (i=0;i<length;i++)

      (5) 

   New[length]='\0';

   return (New);

 }

 void main()

 { char old[256];

   int key, num=0;

   printf("\nPlease input the telegraph: \n");

   while (num<255 && (old[num++]=getchar())!='\n');

   old [(num==255)?num:num-1]='\0';

   do

   {  printf("\nPlease input Key (Key>1):");

      scanf("%d",&key);

   } while (key<=1);

   printf( "\nThe decode of telegraph:'%s'is:\n'%s'\n",old,decode(old,key));

 }

参考答案
您可能感兴趣的试题

阅读以下说明和Java代码,将应填入(n)处的语句写在对应栏内。

  【说明】

 本程序通过移动滑动条修改颜色RGB值,从而控制颜色。程序中有一个面板、3个标签和3个滑动条,标签和滑动条一一对应,分别对应三原色红、绿、蓝,任意拖动其中的一个滑动条,所对应的颜色值就会发生变化,面板的颜色也会发生对应的变化,如下图所示,滑动条值的范围是0~255。

   

 【Java代码】

 import java.awt.*;

 import java.awt.event.*;

 import javax.swing.*;

 public class simple extends JFrame. implements AdjustmentListener{

   public simple(){

     setTitle("simple");

     setSize(300, 200);

     addWindowListener(new WindowAdapter(){

       public void windowClosing((1)){

         System.exit(0);

         }

     });

     Container contentPane=getContentPane();

     JPanel p=(2);

     p.setLayout(new GridLayout(3, 2));

     p.add(redLabel=new JLabel("Red 0"));

     p.add(red=new JScrollBar(Adjustable. HORIZONTAL, 0, 0, 0, 255));

     red.setBlocklncrement(16);

     red.addAdjustmentListener(this);

     p.add(greenLabel=(3) ("Green 0"));

     p.add(green=new JScrollBar(Adjustable.HORIZONTAL 0, 0, 0, 255));

     green setBIocklncrement(16);

     green.addAdjustmentListener(this);

     p.add(blueLabel=new JLabel("Blue 0"));

     p.add(btue=new JScrollBar(Adjustable. HORIZONTAL, 0, 0, 0, 255));

     blue,setBIocklncrement(16);

     blue.addAdjustmentListener(this);

     contentPane.add(p, "South");

     colorPanet=new JPanel();

     colorPanet.setBackground(new Color(0, 0, 0));

     contentPane.add((4),"Center");

   }    public void adjustmentValueChanged(AdjustmentEvent evt){

     redLabel.setText("Red"+red.getValue());

     greenLabel.setText("Green"+green.getValue());

     blueLabel.setText("Blue"+blue.getValue());

     coiorPanel.setBackground(new Color(red.getValue(), green.getValue(), blue.getValue()));

     colorPanel.repaint();

   }

   public static void main(String[] args){

     JFrame. f=(5);

     f.show();

   }

   private JLabel redLabel;

   private JLabel greenLabel;

   private JLabel blueLabel;

   private JScrollBar red;

   private JScroilBar green;

   private JScrollBar blue;

   private JPanel colorPanel;

阅读以下说明及C++程序代码,将应填入(n)处的语句写在对应栏内。

  【说明】

 本程序的功能是根据矩形左上角和右下角顶点坐标生成一个矩形对象,然后输出该矩形4个顶点的坐标,计算并输出该矩形的面积。

 【C++代码】

  #include<iostream>

 using namespace std;

 class MyPoint( //表示平面坐标系中的点的类

   double x;

   double y;

 public:

   MyPoint (double x,double y){this->x=x;this->y=y;}

   double getX()const{(1);}

   double getY()const{ return y;}

   void show()const{ cout<<'('<<x<<','<<y<<')';}

 };

 class MyRectangle{    //表示矩形的类

   MyPoint upleft;    //矩形的左上角顶点

   MyPoint down right; //矩形的右下角顶点

 public:

   MyRectangle(MyPoint upleft,MyPoint downright);

   MyPoint getUpLeft()const{return up_left;}     //返回左上角坐标

   MyPoint getDownRight()const{return down_right;} //返回右下角坐标

   MyPoint getUpRight()const;           //返回右上角坐标

   MyPoint getDownLeft()const;          //返回左下角坐标

   double area()const;              //返回矩形的面积

 };

 MyRectangle:: MyRectangle((2)):

             up left(p1),down_right(p2){}

 MyPoint MyRectangle::getUpRight()const

 {

   return MyPoint(down_right.getX(),up_left.getY());

 }

 MyPoint MyRectangle::getDownLeft()const

 {

   return MyPeint((3));

 }

 double (4) ::area()const

 {

   return (getUpLeft(),getX()-getDownRight().getX())*

     (getDownRight().getY()-getUpLeft().getY());

 }

 int main( )

 {

   MyRectangle r(MyPoint(0,2),MyPoint(2,0));

   r.getUpLeft(),show();

   r.getUpRight().show();

   r.getDown Right().show();

    (5);

   cout<<r.area()<<end1;

   return 0;

 }

阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。

  【说明】

 Fibonacci数列A={1,1,2,2,5,8,…)有如下性质:

 a0=a1=1

 ai=ai-1+ai-2,i>1

 对于给定的n,另外有一个由n个元素组成的数列xn,该数列中各元素的值为:

 xi=ai/ai+1,i=0,1,…,n

 现要求对xn中的元素按升序进行排序,然后以分数形式输出排序后的xn。例如n=5时,排序前的xn={1/1,1/2,2/3,3/5,5/8},排序后的xn={1/2,3/5,5/8,2/3,1/1}。程序中函数make()首先生成排序前的xn,然后调用函数sort()进行排序,最后输出所求结果。

 【程序】

 #include <stdio.h>

 #include <stdlib.h>

 #include <malloc.h>

 struct fact

 {

   long m,n;

 };

 void sort(int n,struct fact *p)

 {

   int a;

   long s,t,u,v;

   struct fact *q,*end;

   for(end=p+(n-1),a=1;a;end--)

     for(a=0,q=p;q<end;p++)

     {

       s=q->m;

       t=q->n;

       u=(q+1)->m;

       v=(q+1)->n;

       if( (1) )

       {

         q->m=u;

          (2) 

          (3) 

          (q+1)->n=t;

          a=1;

       }

     }

 }

 void make(int n)

 {

   int i;

   long a,b,c;

   struct fact *x,*y;

   x=(struct fact *)malloc(sizeof(struct fact)*n);

   x->m=1:

   x->n=1;

   for(a=1,b=1,i=2;i<=n;i++)

   {

      (4) 

     a=b;

     b=c;

     (x+(i-1))->m=a;

     (x+(i-1))->n=b;

   }

    (5) 

   printf("x%d={%1d/%1d",n,x->m,x->n);

   for(y=x+1;y<x+n;y++)

     printf(",%1d/%1d",y->m,y->n);

   printf("}\n");

   free(x);

 }

 void main()

 {

   int n;

   printf("input n:");

   scanf("%d",&n);

   make(n);

  }

阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。

  【说明】

 本程序对某电码文(原文)进行加密形成密码文,其加密算法如下:

 假定原文为C1,C2,C3,…,Cn加密后形成的密文为S1,S2,S3,…,Sn,首先读入正整数 key(key>1)作为加密钥匙,并将密文字符位置按顺时针方向连成一个环,如下图所示:

 

 加密时从S1位置起顺时针计数,当数到第key个字符位置时,将原文中的字符放入该密文字符位置中,同时从环中除去该字符位置;接着从环中下一个字符位置起继续计数,当再次数到第key个字符位置时,将原文中字符C2放入其中,并从环中除去该字符位置:依次类推,直至n个原文字符全部放入密文环中。由此产生的 S1S2…Sn即为原文的密文。

 例如,当Key=3时,原文this is a decoding system的密文为:

 aotgnhedi ys d imietsnc ss

 当Key=4时,该原文的密文为:

 ssdtyd htegiasiscnm e ion

 本程序将电码的原文存放在字符数组old中,加密钥匙存放在整数key中。函数decode用于将原文old加密并返回密文字符数组的首指针。其中函数采用一个双向循环链表CODE来表示密文环:函数strlen用于计算一个字符串中的字符个数(不包括字符串结尾符'\O')。为了简单起见,程序中假设内存容量足以满足动态存储单元分配的要求。

 #include <stdio.h>

 #include <stdlib.h>

 typedef struct node

 { char ch;

   struct node *forward;/* Link to next node. */

   struct node *backward;/* Link to previous node.*/

 } CODE;

 int strlen(char *s)

 { int len=0;

   while (*s++!='\0')

     len++;

   return(len);

 }

 char *decode(char *otd,int key)

 { char *New; int length,count,i;

   CODE *loop,*p;

   length=strlen(old);

   loop=(CODE *) malloc(length*sizeof(CODE));

   for (i=1;i<length-1;i++)

  { loop[i],forward=&loop[i+1];

      (1) 

   }

   loop[0].backward=&loop[length-1];

   loop[0],forward=&loop[1];

   loop[length-1].forward=loop;

    (2) 

   for (p=loop,i=0;i<length;i++)

   {  for (count=1 ;count<key;count++

      p=p->forward;

      (3) 

      p->backward->forward=p->forward;

      p->forward->backward=p->backward;

      (4) 

   }

   New=(char *)malloc((length+1) *sizeef(char));

   for (i=0;i<length;i++)

      (5) 

   New[length]='\0';

   return (New);

 }

 void main()

 { char old[256];

   int key, num=0;

   printf("\nPlease input the telegraph: \n");

   while (num<255 && (old[num++]=getchar())!='\n');

   old [(num==255)?num:num-1]='\0';

   do

   {  printf("\nPlease input Key (Key>1):");

      scanf("%d",&key);

   } while (key<=1);

   printf( "\nThe decode of telegraph:'%s'is:\n'%s'\n",old,decode(old,key));

 }

¥

订单号:

遇到问题请联系在线客服

订单号:

遇到问题请联系在线客服