问题 问答题

试题要求如图10.2所示。

#include<stdio.h>

#include<string.h>

#include<ctype.h>

unsigned char xx[50] [80];

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

int ReadDat(void);

void WriteDat(void);

void encryptChar()

void main()

if(ReadDat())

printf ("数据文件IN.DAT不能打开\n\007");

return;

encryptChar();

WriteDat();

int ReadDat(void)

FILE *fp;

int i=0;

unsigned char *p;

if((fp=fopen("K:\\k06\\35010002\\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("K:\\k06\\35010002\\out.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;

int temp;

char *pf;

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

pf=xx[i];

while(*pf!=0){

temp=*pf*17%256;

if(temp<=32||temp%2!0);

else *pf=temp;

pf++;

}

}

}

解析:

此题是把英文文章的每一行的数据读到数组××中,因此,在进行字符替代时不但要对行数做循环还要对每一行的数据做循环。在对数据做循环时用一个pf指针实现的,当pf指针下的字符的替代关系f(p)小于等于32,或f(p)为奇数时不改变字符,在程序里就是执行了一条空语句,否则将进行替代。

单项选择题
选择题