2009年计算机网络技术三级上机试题练习128.doc

2009年计算机网络技术三级上机试题练习128.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2009年计算机网络技术三级上机试题练习128

2009年计算机网络技术三级上机试题练习128 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数Decode()对这篇文章按行进行加密,加密算法是这样的:假设原文的一行是字符串S1,加密后成为密文字符串S2,系统定义了一个密钥key(key>1),这样进行加密:先从S2的第一个字符计数,当数到第key个字符时,把S1的第一个字符放在S2的这个位置;然后接着从S2的下一个字符计数,当再次数到第key个字符时,把S1的第二个字符放在S2的这个位置……,以此类推;当S2的计数位置超出了字符串的长度时,就回到S2的起始位置向后计数(实际上是把S2当成一个圆环);直到S1中的所有字符都存入S2中,然后把加密后的每一行都按原顺序仍存放在数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT.DAT中。 例:原文:DECODING 密钥:key = 3 密文:CIDONEDG 原始数据文件的存放格式是:每行的宽度均小于80个字符, 每一个单词的长度不大于20,含标点符号和空格。 注意:部分源程序存放在文件prog1.c中。 请勿改动主函数Main()、读数据函数ReadDat()和输出函数 WriteDat()的内容。 /*参考答案*/ #include <stdio.h> #include <string.h> #include <conio.h> char xx[50][80]; int maxline = 0; /*文章的总行数*/ const int key = 3; int ReadDat(void); void WriteDat(void); void Decode(void) { char str[80]; int i,j,n,len; for(i = 0; i < maxline; i++) { len = strlen(xx[i]); n = -1; for(j = 0; j < len; j++) { n += key; if(n >= len) n -= len; str[n] = xx[i][j]; } str[len] = '\0'; strcpy(xx[i],str); } } void main() { if(ReadDat()){ printf("数据文件IN.DAT不能打开!\n\007"); return; } Decode(); WriteDat(); } int ReadDat(void) { FILE* fp; int i = 0; char*p; if((fp = fopen("IN.DAT","r")) == NULL) return 1; while(fgets(xx[i],80,fp) != NULL){ p = strchr(xx[i],'\n'); if(p) *p = 0; i++; } maxline = i; fclose(fp); return 0; } void WriteDat(void) { FILE* fp; int i; fp = fopen("OUT.DAT","w"); for(i = 0; i < maxline; i++){ printf("%s\n",xx[i]); fprintf(fp,"%s\n",xx[i]); } fclose(fp); } ************************************************

您可能关注的文档

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档