计算机三级网络机试考试试题及答案(下).pdf
三 级 网 络 机 武 考 典 及 告 案 下 半 部 分第五十一道函数ReadDat()的功能是实现从文件ENG51.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数enc17Ptehar(),按给定的替代关系对数组xx中的所有字符进行替代,结果仍存入数组xx的对应的位置上,最后调用函数WriteDat。把结果xx输出到文件PS5 LDAT中。替代关系:f(p)=p*ll mod256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)的值小于等于32或f(p)对应的字符是数字。至9,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读函数ReadDat。和写函数WriteDat。的内容。#include#include#include#include unsigned char xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);void encryptChar()int i,j;/*定义循环控制变量*/int str;/*存储字符串的长度*/char ch;/*存储当前取得的字符*/for(i=0;imaxline;i+)(/*以行为单位获取字符*/str=strlen(xxi);/*求得当前行的字符串长度*/for(j=0;jstr-l;j+)/*依次取每行的所有字符*/ch=xxij*H%256;if(ch=*0&chv=9)continue;/*如果计算后的值小于等于32或f(p)对应的字符是数字0至9,则该字符不变*/elsexxiU=ch;/*否则按给定的替代关系进行替代*/)void main()(system(nCLS);if(ReadDat()printf(数据文件 ENG51.IN 不能打开!n007);return;encryptChar();WriteDatO;)int ReadDat(void)(FILE*fp;int i=0;unsigned char*p;if(fp=fopen(ENG5LIN JT,)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)(p=strchr(xxi,*n*);if(p)*p=0;i+;maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE*fp;int i;fp=fopen(,PS51.DATH,wH);for(i=0;i maxline;i+)(printf(siT,xxi);fprintf(fp,%sn,xxi);)fclose(fp);)第五十二道读函数ReadDat()实现从文件ENG52.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数cncryptCharO,按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用写函数WriteDatO把结果xx输出到文件PS52.DAT中.替代关系:f(p)=p*ll mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCH值),如果计算后f(p)的值小于等于32或f(p)对应的字符是小写字母,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat。的内容。#include#include#include#include unsigned char xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void VVriteDat(void);void encryptChar()(int i,j;int str;char ch;for(i=0;imaxline;i+)(str=strlen(xxi);for(j=0;j=a&ch=z)II ch=32)/*如果计算后的值小于等于32或对应的字符是小写字母*/continue;elsexxiU=ch;/*否则用新字符来替代这个字符*/)void main()(system(nCLS);if(ReadDat()(printf(数据文件 ENG52.IN 不能打开!n007,r);return;)encryptCharO;WriteDat();)int ReadDat(void)FILE*fp;int i=0;unsigned char*p;if(fp=fopen(ENG52.IN“,r)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)(p=strchr(xxi,n);if(p)*p=0;i+;)maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE*fp;int i;fp=fopen(,PS52.DATM,wH);for(i=0;i maxline;i+)(printf(H%sn,xxi);fprintf(fp,1%sn,xxi);)fclose(fp);)第五十三道函数RcadDat()的功能是实现从文件ENG53.IN中读取篇英文文章,存入到字符串数组xx中。请编制函数encryptChaK),按给定的替代关系对数组xx中所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS53.DAT中。替代关系:f(p)=p*U mod 256(p是数组xx中某一个字符的ASCH值,f(p)是计算后新字符的ASCII值),如果原字符是大写字母或计算后f(p)的值小于等于3 2,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件的存放格式是:每行的宽度均小于80个字符。请勿改动主函数main。、读函数ReadDat()和写函数WriteDat。的内容。#include#include#include#includeunsigned char xx5080;int maxline=0;int ReadDat(void);void VVriteDat(void);void encry Char()int i,j;/*定义循环控制变量*/int str;/*存储字符串的长度*/char ch;/*存储当前取得的字符*/for(i=0;imaxline;i+)(/*以行为单位获取字符*/str=strlen(xxi);/*求得当前行的字符串长度*/for(j=0;j=A,&xxij=,Z,)ll ch=32)/*如果原字符是大写字母或计算后的值小于等于32*/continue;/*则此字符不变,取下一个字符*/elsexxij=ch;/*如果不满足条件,则用新字符替代原字符*/)void main()(system(HCLSn);if(ReadDat()(printf(数据文件 ENG53.IN 不能打开!n007”);return;encryChar();WriteDatO;)int ReadDat(void)(FILE*fp;int i=0;unsigned char*p;if(fp=fopen(,ENG53.IN,r,)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)(p=strchr(xxi,n*);if(p)*p=0;i+;maxline二i;fclose(fp);return 0;void VVriteDatO(FILE*fp;int i;fp=fopen(Mps53.datM,nwM);for(i=0;imaxline;i+)(printf(,%sn,xxi);fprintf(fp,*%sn*,xxi);)fclose(fp);)第五十四道函数ReadDaK)的功能是实现从文件ENG54.IN中读取篇英文文章,存入到字符串数组xx中。请编制函数encryChar(),按给定的替代关系对数组xx中所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS54.DAT中。替代关系:f(p)=p*13 mod 256(p是数组xx中某一个字符的ASCH值,f(p)是计算后新字符的ASCH值),如果计算后f(p)的值小于等于32或其ASCII值是偶数,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件的存放格式是每行的宽度均小于80个字符。请勿改动主:函数main。、读函数RcadDat。和写函数WriteDat。的内容。#include#include#include#includeunsigned char xx5080;int maxline=0;int ReadDat(void);void VVriteDat(void);void cncryChar()int i,j;int str;char ch;for(i=0;imaxline;i+)/*定义循环控制变量*/*存储字符串的长度*/*存储当前取得的字符*/*以行为单位获取字符*/str=strlen(xxi);for(j=0;jstr;j+)/*求得当前行的字符串长度*/*依次取每行的所有字符*/ch=xxij*13%256;if(ch=32)II(ch%2=0)/*如果计算后的值小于等于32或其ASCII值是偶数*/continue;/*则该字符不变,去取下一个字符*/XXij=ch;/*否则将新字符替代原字符号void main()(system(nCLSM);if(ReadDat()(printfC数据文件 ENG54.IN 不能打开!n007”);return;)encryChar();VVriteDatO;int ReadDat(void)(FILE*fp;int i=0;unsigned char*p;if(fp=fopen(ENG54.IN,r)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)(p=strchr(xxi,n);if(p)*p=0;i+;maxline二i;fclose(fp);return 0;void VVriteDat()FILE*fp;int i;fp=fopen(Hps54.dat,nwn);for(i=0;imaxline;i+)printf(n%snn,xxi);fprintf(fp,H%snHxi);)fclose(fp);)第五十五道函数ReadDat()的功能是实现从文件ENG55.IN中读取篇英文文章,存入到字符串数组xx中。请编制函数encryChar(),按给定的替代关系对数组xx中所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS55.DAT中。替代关系:f(p)=p*ll mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)的值小于等于32或f(p)对应的字符是大写字母,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件的存放格式是每行的宽度均小于80个字符。请勿改动主函数main。、读函数ReadDat。和写函数WriteDat()的内容。#include#include#include#includeunsigned char xx5080;int maxline=0;int ReadDat(void);void VVriteDat(void);void en cry Char()(int i,j;int str;char ch;for(i=0;imaxline;i+)(str=strlen(xxi);for(j=0;jstr;j+)/*定义循环控制变量*/*存储字符串的长度*/*存储当前取得的字符*/*以行为单位获取字符力信求得当前行的字符串长度*/ch=xxij*ll%256;if(ch=Af&chv=Z)/*依次取各行的所有字符*/*如果计算的值小于等于32或对应的字符是大写字母号continue;/*则不作改变*/elseXXiU=Ch;/*否则用新字符取代原有字符*/)void main。(systemCTLS*);if(ReadDatO)printf(数据文件 ENG55.IN 不能打开!n007”);return;)encryChar();WriteDatO;)int ReadDat(void)(FILE*fp;int i=0;unsigned char*p;if(fp=fopenCENG55.IN,rH)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,n);if(p)*p=0;i+;)maxline=i;fclose(fp);return 0;)void WriteDat()(FILE*fp;int i;fp=fopen(Mps55.dat,wn);for(i=0;imaxline;i+)(printf(sn”,xxi);fprintf(fp,H%sn*,xxi);)fclose(fp);)第五十六道函数ReadDat()的功能是实现从文件ENG56.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数enciyChar(),按给定的替代关系对数组xx中所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件ps56.dat中。替代关系:f(p)=p*llmod256(p是数组xx中某个字符的ASCII值,f(p)是计算后新字符的ASCIIffl),如果原字符是小写字母或计算后f(p)的值小于等于3 2,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出,原始数据文件的存放格式是每行的宽度均小于80个字符。请勿改动主函数main。、读函数ReadDat。和写函数WriteDat。的内容。#include#include#include#includeunsigned char xx5080;int maxline=0;int ReadDat(void);void VVriteDat(void);void encryChar()(int i,j;intstr;char ch;for(i=0;imaxline;i+)(str=strlen(xxi);for(j=0;j=,a&xxij=,z,)I I ch=32)/*如果原字符是小写字母或计算后的值小于等于32*/continue;/*则不做改变,指向下一个字符*/elsexxi(j=ch;/*否则用新字符取代原有字符*/)void main()systemCTLS1);if(ReadDat()(printf(数据文件 ENG56.IN 不能打开!n007”);return;)encryChar();WriteDat();int ReadDat(void)(FILE*fp;int i=0;unsigned char*p;if(fp=fopen(,ENG56.IN,r,)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)(p=strchr(xxi),n);if(p)*p=0;i+;)maxline=i;fclose(fp);return 0;)void VVriteDat()(FILE*fp;int i;fp=fopen(,ps56.dat,Mwn);for(i=0;imaxline;i+)(printf(%snM,xxi);fprintf(fp,H%snn,xxi);fclose(fp);第五十七道函数ReadDat()的功能是实现从文件ENG57.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryChar(),按给定的替代关系对数组xx中所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件ps57.dat中。替代关系:f(p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是数字字符0至9或计算后f(p)的值小于等于3 2,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出,原始数据文件的存放格式是每行的宽度均小于80个字符。请勿改动主函数main。、读函数Read Dat()和写函数WriteDat()的内容。#include#include#include#includeunsigned char xx5080;int maxline=0;int ReadDat(void);void VVriteDat(void);void encryChar()int i,j;/*定义循环控制变量*/int str;/*存储字符串的长度*/char ch;/*存储当前取得的字符*/for(i=0;imaxline;i+)(/*以行为单位获取字符*/str=strlen(xxi);/*求得当前行的字符串长度*/for(j=0;j=0&xxij=9)II ch=32)/*如果原字符是数字字符0 至 9 或计算后的值小于等于32*/continue;/*则不做改变,指向下一个字符elseXXiU=Ch;/*否则用新字符取代原有字符*/)void main()systemCTLS*);if(ReadDatQ)printf(“数据文件 ENG57.IN 不能打开!n007”);return;encryChar();WriteDat();)int ReadDat(void)(FILE*fp;int i=0;unsigned char*p;if(fp=fopen(,ENG57.IN,r,)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)(p=strchr(xx(i,n,);if(p)*p=0;i+;)maxline二i;fclose(fp);return 0;)void WriteDat()(FILE*fp;int i;fp=fopen(Mps57.datH,nwH);for(i=0;iiiiaxline;i+)(printf(%sir,xxi);fprintf(fp,H%snH,xxi);)fclose(fp);)第五十八道函数ReadDat()的功能是实现从文件ENG58.IN中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryChar(),按给定的替代关系对数组xx中所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件ps58.dat中。替代关系:f(p)=p*llmod256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCH值),如果计算后f(p)的值小于等于32或其ASCII值是奇数,则该字符不变,否则将f(p)所对应的字符进行替代。注意:部分源程序已给出。原始数据文件的存放格式是每行的宽度均小于80个字符。请勿改动主函数main()、读函数ReadDat。和写函数WriteDat。的内容。#include#include#include#includeunsigned char xx5080|;int maxline=0;int ReadDat(void);void WriteDat(void);void encryChar()(int i,j;int str;char ch;for(i=0;imaxline;i+)(str=strlen(xxi);for(j=0;jstr;j+)信定义循环控制变量刃/*存储字符串的长度*/*存储当前取得的字符*/*以行为单位获取字符*/*求得当前行的字符串长度*/*依次取每行的所有字符*/ch=xxij*ll%256;if(ch=32llch%2!=0)/*如果计算后的值小于等于32或 其 ASCII值是奇数*/continue;xxij=ch;/*则不做改变,指向下一个字符*/*否则用新字符取代原有字符*/)void main()(system(HCLSH);if(ReadDatO)(printfC数据文件 ENG58.IN 不能打开!n007”);return;)encryChar();WriteDat();)int ReadDat(void)FILE*fp;int i=0;unsigned char*p;if(fp=fopen(,ENG58.IN,rH)=NULL)return 1;whi)e(fgets(xxi,80,fp)!=NULL)(p=strchr(xxi,n*);if(p)*p=0;i+;)maxline=i;fclose(fp);return 0;)void VVriteDat()(FILE*fp;int i;fp=fopen(ps58.daeJw);for(i=0;imaxline;i+)(printf(n%snH,xxi);fprintf(fp,n%snH,xxi);)fclose(fp);)第五十九道函数ReadDat()的功能是实现从文件IN59.DAT中读取 篇英文文章存入到字符串数组xx中。请编制函数CovertCharD(),该函数的功能是:以行为单位把字符串中的所有小写字母改成该字母的上一个字母,如果是字母a,则改成字母z。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把一处理的字符串仍按行重新存入字符串数组xx。最后调用函数WriteDat()把结果xx输出到文件OUT59.DAT中。例如:原文 Adb Bcdzaabck LLhj结果 Aca Bbcyz,zabj LLgi原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序己给出。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。#include#include#includechar xx5080;int maxline=O;int ReadDat(void);void VVriteDat(void);void CovertCharD()(int i,j;int str;for(i=0;imaxline;i+)(str=strlen(xxi);for(j=0;j=a&xxijk=W)/*如果是小写字符,只对小写字符进行处理*/if(xxij=*a*)/*如果是小写字母a,就改成字母z*/elsexxij-=l;/*其余的改成该字母的上一个字母*/void main()system(,CLS,);if(ReadDat()(printf(数据文件 IN59.DAT 不能打开n007”);return;)Covert CharD();WriteDat();int Readl)at()(FILE*fp;int i=0;char*p;if(fp=fopen(,IN59.DAT,r,)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)(p=strchr(xxi,n*);if(p)*p=0;i+;maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE*fp;int i;system(,CLSH);fp=fopen(,OUT59.DATn,HwM);for(i=0;imaxline;i+)printf(H%sn,xxi);fprintf(fp,M%snxxi);)fclose(fp);)第六十道下列程序的功能是:把S字符串中的所有字母改成该字母的下一个字母,字母Z改成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT(),读取in60.dat中的字符串,并把结果输出到文件out60.dat中。例如:s字符串中原有的内容为Mn 123Zxy,则调用该函数后,结果为No 123Ayzo注意:部分源程序已给出。请勿改动主函数main()和输入输出函数rcadwriteDAT()的内容。#include#include#include#include#define N 81void readwriteDAT();void chg(char*s)while(*s)/*若当前字符不是字符串结束符,则循环一直进行*/if(*s=z,ll*s=,Z,)/*将当前字母是,或者 7?*/*s-=25;/*则 分 别 将 其 改 成 或A*/s+;/*取下一个字母*/)else if(*s=,a,&*sv=y)/*若是小写字母,则改成该字母的下一个字母*/(*s+=l;S+;/*取下一个字母*/)else*s=,Y,)/*若是大写字母,则改成该字母的下一个字母*/(*s+=l;S+;/*取下一个字母*/else s+;/*取下一个字母*/)void main()(char aN;system(MCLSH);printf(nEnter a string:*);gets(a);printf(*The original string isputs(a);chg(a);printf(HThe string after modifiedputs(a);readwnteDATO;void readwriteDAT()(int i;char aN;FILE*rf,*wf;rf=fopen(,*in60.dat,nr,);wf=fopen(,out60.dat,wn);for(i=0;i10;i+)(fgets(a,81,rf);chg(a);fprintf(wf,%sn,a);)fclose(rf);fclose(wf);)第六十一道卜列程序的功能是:把s字符串中所有的字符左移一个位置,串中的第一个字符移到最后。请编制函数c h g(c h a r *s)实现程序要求,最后调用函数r e a d w r i t e Da K )把结果输出到o u .d a t文件中。例如:s字符串中原有内容为M n,1 2 3 x y Z,则调用该函数后,结果为n,1 2 3 x y Z M。注意:部分源程序已给出。请勿改动主函数m a i n。和输入输出函数r e a d w r i t e DA T。的内容。#include#include#include#define N 81void readwriteDATO;void chg(char*s)(int itr;char temp;str=strien(s);temp=*s;for(i=0;istr-l;i+)*(s+i)=*(s+i+l);*(s+str-l)=temp;)/*定义变量,保存字符串长度*/*定义暂存变量*/*求字符串的长度*/*将第一个字符暂赋给Ch*/*将字符依次左移*/*将第一个字符移到最后*/void main()(char aN;system(CLS);printf(MEnter a string:H);gets(a);printf(MThe original string isputs(a);chg(a);printf(nThe string after modified:H);puts(a);readwriteDAT();)void readwriteDATOint i;char aN;unsigned char*p;FILE*rf,*wf;rf=fopen(,in61.datn,nrM);wf=fopen(”out61.dat”Jw”);for(i=0;i10;i+)(fgets(a,80,rf);p=strchr(a,*n,);if(p)*p=0;chg(a);fprintf(wf,%sn,a);)fclose(rf);fclose(wf);)第六十二道函数RcadDat。的功能是实现从文件IN62.DAT中读取篇英文文章存入到字符串数组xx中;请编制函数StQ harJPO,该函数的功能是:以行为单位把字符串中的所有字符的ASCII值右移4位,然后把右移后的字符的ASCH值再加上原字符的ASCII值,得到新的字符,并存入原字符串对应的位置上。最后把己处理的字符串按行重新存入字符串数组xx中,并调用函数WriteDat()把结果xx输出到文件OUT62.DAT中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。注意:部分源程序已给出。请勿改动主函数main。、读函数ReadDat()和写函数WriteDat()的内容。#include#include#includechar xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void VVriteDat(void);void StrCharJR(void)int ij;int str;for(i=0;imaxline;i+)(str=strlen(xxi);for(j=0;jstr;j+)/*定义循环控制变量*/*存储字符串的长度*/*以行为单位获取字符*/*求得当前行的字符串长度*/xxij+=xxij4;)/*字符的A s a i值右移4 位再加上原字符的ASCII值,得到新字符*/)void main()system(HCLSH);if(ReadDat()(printf(数据文件IN62.DAT不能打开八n007”);return;StrCharJRO;VVriteDatO;)int ReadDat(void)(FILE*fp;int i=0;char*p;if(fp=fopen(HIN62.DAT,nr,)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,*n);if(p)*p=0;i+;)maxline=i;fclose(fp);return 0;)void VVriteDat(void)(FILE*fp;inti;systemCCLS);fp=fopen(OUT62.DAT“,“w“);for(i=0;i maxline;i+)(printf(H%snn,xxi);fprintf(fp,%snn,xxij);)fclose(fp);第六十三道函数ReadDat()的功能是实现从文件IN63.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数SlrCharJL(),该函数的功能是:以行为单位把字符串中的所有字符的ASCII值左移4位,如果左移后,其字符的ASCH值小于等于32或大于1 0 0,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符的ASCII值,得到的新字符仍存入到原字符串对应的位黄。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT63.DAT中。注意:部分源程序已给出。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。#include#include#includechar xx5080;int maxline=0;int ReadDat(void);void VVriteDat(void);void StrCharJL(void)(intij;/*定义循环控制变量*/int str;char ch;for(i=0;imaxline;i+)/*以行为单位获取字符*/(str=strlen(xxi);求得当前行的字符串长度号for(j=0;jstr;j+)(ch=xxij;if(ch4 100)continue;六如果左移4位后字符的ASCII值小于等于32或大于1 0 0,则原字符保持不变*/elsexxij+=ch4;/*否则就把左移后的字符ASCII值加上原字符的ASCII*/)void main()(system(HCLSn);if(ReadDat()(printf(数据文件 IN63.DAT 不能打开n007”);return;StrCharJLO;WriteDatO;)int ReadDat(void)FILE*fp;int i=0;char*p;if(fp=fopen(,IN63.DAT,r,)=NULL)return 1;whi!e(fgets(xxi,80,fp)!=NULL)(p=strchr(xxi,n);if(p)*p=0;i+;)maxline=i;fclose(fp);return 0;)void WriteDat(void)(FILE*fp;int i;systemCCLS);f,p=fopen(,OUT63.DATM,nwn);for(i=0;imaxline;i+)(printf(n%sn,xxi);fprintf(fp,H%snxxi);fclose(fp);第六十四道函数ReadDat()的功能是实现从文件IN64.DAT中读取篇英文文章存入到字符串数组xx中。请编制函数C ha9onvA(),该函数的功能是:以行为单位把字符串的最后-个字符ASCII值右移4位后加最后第二个字符的ASCH值,得到最后一个新的字符,最后第二个字符的ASCII值右移4位后加最后第三个字符的ASCII值,得到最后第二个新的字符,以此类推一直处理到第二个字符,第一个字符的ASCII值加最后一个字符的ASCII值,得到第一个新的字符,得到的新字符分别存放在原字符串对应的位置上,把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT64.DAT中。注意:部分源程序已给出。原始文件存放的格式是:每行的宽度小于80个字符,含标点符号和空格。请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。#include#include#includechar xx5080;int maxline=O;int ReadDatO;void WriteDatO;void CharConvA(void)int i,j;int str;char ch;for(i=0;i0;j-)/*定义循环控制变量*/*存储字符串长度*/*暂存最后一个字符*/*以行为单位获取字符*/*求得当前行的字符串长度*/*将最后一个字符暂存入ch*/*从最后一个字符开始,直到第二个字符*/xxij=(xxij4)+xxiIj-l;/*当前字符ASCH值右移4 位加前一个字符的ASCII值,得到新的当前字符*/xxifO+=ch;/*第一个字符的ASCII值加最后一个字符的ASCII值,得到第一个新的字符*/)void main()(systemCCLS*);if(ReadDatO)(printf(数据文件 IN64.DAT 不能打开!n007”);return;)CharConvA();WriteDatO;int ReadDat(void)(FILE*fp;int i=0;char*p;if(fp=fopen(,IN64.DAT,rH)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi/n,);if(p)*p=0;i+;)maxline二i;fclose(fp);return 0;)void VVriteDatO(FILE*fp;int i;systemCTLS1);fp=fopen(OUT64.DATM,HwH);for(i=0;imaxline;i+)(printf(n%sn,xxi);fprintf(fp,*%snxxi);fclo