- 1
- 0
- 约4.03万字
- 约 50页
- 2022-03-27 发布于广东
- 举报
三级网络机试考题及答案下
第五十一道
函数 ReadDat()的功能是实现从文件
ENG51.IN 中读取一篇英文文章,存入到字符串数组
xx 中;请编制
函数 encryptChar() ,按给定的替代关系对数组 xx中的所有字符进行替代, 结果仍存入数组 xx的对应的位置上,最后调用函数 WriteDat() 把结果 xx 输出到文件 PS51.DAT 中。
替代关系: f(p)=p*11 mod 256 (p是数组 xx 中某一个字符的 ASCII 值,f(p) 是计算后新字符的 ASCII 值),
如果计算后 f(p) 的值小于等于 32或f(p) 对应的字符是数字 0至 9,则该字符不变, 否则将 f(p) 所对应的字符进行
替代。
注意:部分源程序已给出。
原始数据文件存放的格式是:每行的宽度均小于 80个字符。
请勿改动主函数 main()、读函数 ReadDat()和写函数 WriteDat() 的内容。
#include stdio.h
#include string.h
#include ctype.h
#include stdlib.h
unsigned char xx[50][80] ;
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(xx[i]);
/* 求得当前行的字符串长度
*/
for(j=0;jstr-1;j++)
/* 依次取每行的所有字符
*/
{
ch=xx[i][j]*11%256;
if(ch=32 || (ch=0 ch=9) )
continue; /* 如果计算后的值小于等于
32 或
f(p) 对应的字符是数字
0 至
9,则该字符不变
*/
else
xx[i][j]=ch;
/* 否则按给定的替代关系进行替代
*/
}
}
}
void main()
{
system(CLS);
if(ReadDat())
{ printf( 数据文件 ENG51.IN 不能打开! \n\007) ; return ;
}
encryptChar() ;
WriteDat() ;
}
int ReadDat(void)
{
FILE *fp;
int i=0 ;
unsigned char *p ;
if((fp = fopen(ENG51.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(PS51.DAT, w) ;
for(i = 0 ; i maxline ; i++)
{
printf(%s\n, xx[i]) ;
fprintf(fp, %s\n, xx[i]) ;
}
fclose(fp) ;
}
第五十二道
读函数 ReadDat()实现从文件 ENG52.IN 中读取一篇英文文章,存入到字符串数组 xx 中。请编制函数
encryptChar() ,按给定的替代关系对数组 xx 中的所有字符进行替代, 仍存入数组 xx的对应的位置上, 最后调用写函数 WriteDat() 把结果 xx 输出到文件 PS52.DAT 中。
替代关系: f(p)=p*11 mod 256 (p是数组 xx 中某一个字符的 ASCII 值,f(p) 是计算后新字符的 ASCII 值),
如果计算后 f(p) 的值小于等于 32或f(p) 对应的字符是小写字母, 则该字符不变, 否则将 f(p) 所对应的字符进行
替代。
注意:部分源程序已给出。
原始数据文件存放的格式是:每行的宽度均小于 80个字符。
请勿改动主函数 main()、读函数 ReadDat()和写函数 WriteDat() 的内容。
#include stdio.h
#include string.h
#include ctype.h
#include stdlib.h
unsigned char xx[50][80] ;
in
原创力文档

文档评论(0)