2006年9月全国等级考试三级c语言上机题库(三十六)

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论

★☆题目36(无忧id 5 字符替换题)

 

函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件pS6.DAT中。

  替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是数字0至9,则该字符不变,否则将f(p)所对应的字符进行替代。

  部分源程序存在文件prog1.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。

  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

#include <stdio.h>

#include <string.h>

#include <conio.h>

#include <ctype.h>

 

unsigned char xx[50][80];

int maxline=0;/*文章的总行数*/

 

int ReadDat(void);

void WriteDat(void);

 

void encryptChar()

{ int i,j;

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

for(j=0;j<strlen(xx[i]);j++)

if(xx[i][j]*11%256<=32||xx[i][j]*11%256>='0'&&xx[i][j]*11%256<='9') continue;

else xx[i][j]=xx[i][j]*11%256;

}

 

void main()

{

clrscr();

if(ReadDat()){

printf("数据文件ENG.IN不能打开!/n/007");

return;

}

encryptChar();

WriteDat();

}

 

int ReadDat(void)

{

FILE *fp;

int i=0;

unsigned char *p;

 

if((fp=fopen("eng.in","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("ps6.dat","w");

for(i=0;i<maxline;i++){

printf("%s/n",xx[i]);

fprintf(fp,"%s/n",xx[i]);

}

fclose(fp);

}

 

或另一解法:

void encryptChar()

{ int i,j,val;

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

for(j=0;j<strlen(xx[i]);j++)

{ val=xx[i][j]*11%256;

if(val<=32||val>='0'&&val<='9') continue;

else xx[i][j]=val;

}

}

此题还有许多解法,方法可看题8

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答