计算机等级考试三级编程解析一
首先,替换字符
函数的作用是:从文件ENG中读取一篇英文文章。并将它存储在字符串数组xx中;请编译encryptChar()函数,根据给定的替换关系替换数组xx中的所有字符,仍然存储在数组xx的相应位置。最后,调用函数WriteDat()将结果xx输出到文件PS10。数据;数字录音带
替换关系:f(p)=p*11 mod 256 (p是数组中某个字符的ASCII值,f(p)是计算后新字符的ASCII值)。如果原字符的ASCII值为偶数或者计算出的f(p)值小于等于32,则字符不变;否则,对应于f(p)的字符被替换。
给出了一些源程序,原始数据文件的格式为:每行宽度小于80个字符。
请不要更改主函数()、读取数据函数ReadDat()和输出数据函数WriteDat()的内容。
# include
# include
# include
# include
无符号字符xx[50][80];
int maxline = 0;/*文章的总行数*/
int ReadDat(void)
void write dat(void)
void encryptChar()
{
}
void main()
{
clrscr();
if(read dat()){
printf(" data file ENG .无法打开!\ n \ 007 ");
退货;
}
encrypt char();
write dat();
}
int read dat(void)
{
FILE * FP;
int I = 0;
unsigned char * p;注意:在ReadDat()函数中,fgets()函数在读取数据时没有读取字符串终止符' [10] ',所以使用while()循环将xx数组中每行末尾的换行符' \n '替换为终止符' [10] '。
写出来的函数是这样的:这个函数的基本算法是——让字符指针pf指向每一行的开头然后一个一个的移回
,在移动的过程中根据需要进行转换。*pf%2==0用来判断是否偶数。if()条件
语句用于控制非替换字符。
解决方案一:
void encrypt char()
{
int I;
char * pf;
for(I = 0;I { pf = xx[I];/*每行字符数*/
while(*pf!= 0)
{ if(* pf % 2 = = 0 | | * pf * 11% 6 { pf++;继续;}
* pf = * pf * 11% 6;
pf++;
}
}
}解决方案二:
void encrypted char()
{
int I,j,t;
for(I = 0;I {
for(j = 0;j {
t = xx[I][j]* 11% 6;
if(txx[I][j]= t;
}
}
}
0条评论