本站搜索:
          设为首页       加入收藏           全部考试查看
阅读文章

2008年程序员模拟考试试卷——下午题

[日期:2008-04-25] 来源:云南培训认证网  作者: [字体: ]

  试题四(15分,每空3分)

  阅读以下说明和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

  #include

  #include

  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 *old,int key)

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

  CODE *loop,*p;

  length=strlen(old);

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

  for ( i = 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

  { for ( count = 1;count

  p= p->forward ;

  ___(3)___

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

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

  ___(4)___

  }

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

  for ( i=0;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 ) );

  }



上一页 [1] [2] [3] [4] [5] [6] [7] 下一页   

阅读:

责任编辑:何老师

【在本站遇到阅读、观看、下载、发表文章等问题   请点此获得帮助 在本站发表文章或者留言    会员登录    会员注册

上一篇:2008年程序员模拟考试试卷——上午题
下一篇:2008年网络管理员模拟考试试卷——上午题
相关阅读       程序员考试模拟试题 
本文评论       全部评论
  没答案给出来干什么?   (大巧若拙 ,05月21日 )
  怎么没有答案呢,, 不然怎么知道自己做对了没有啊   (陈 ,05月13日 )
发表评论


点评: 字数
姓名:    会员登录    会员注册

  • 本站不会回复评论,咨询请到“在本站发表文章或者留言”处提问
  • 评论字数不要超过500字,请不要发广告
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款