高分求教!C++语言的一道问题。

来源:百度知道 编辑:UC知道 时间:2024/07/16 08:39:26
函数ReadDat()实现从文件IN.DAT中读取一篇英文文章,存入到无符号字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,其替代值仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件OUT.DAT中。
替代关系:f(p)=p*11 mod 256, mod为取余运算,p是数组xx中某一个字符的ASCII值,f(p)是计算后无符号的整型值(注意:中间变量定义成整型变量),如果原字符是大写字母或计算后f(p)值小于等于32,则该字符不变,否则用f(p)替代所对应的字符。
注意:部分源程序存放在PROG1.C中,原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按此替代关系进行处理.
请勿改动主函数main()、读函数ReadDat()和输出函数WriteDat()的内容。

#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()
{
/* 第i行内容已作为字符串存入xx[i]为起始地址的存储单元内 */
/* 请使用中间变量来存放替代关系处理后的值val */
/* 例如: val = (xx[i][j] * 11) % 256 ; */
/* 该提示仅供解题参考,考生也可用其他方法解题 */
unsigned int val ;

}

void main()
{
if(ReadDat()) {
printf("数据文件IN.DAT不能打开!\n\007") ;

int i,j,str;
for(i=0;i<maxlien;i++)
{ str=strlen(xx[i]);
for(j=0;j<str;j++)
if((xx[i][j]>'A'&&xx[i][j]<'Z')||xx[i]*11%256<=32);
else xx[i][j]=xx[i][j]*11%256;
}

#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()
{
/* 第i行内容已作为字符串存入xx[i]为起始地址的存储单元内 */
/* 请使用中间变量来存放替代关系处理后的值val */
/* 例如: val = (xx[i][j] * 11) % 256 ; */
/* 该提示仅供解题参考,考生也可用其他方法解题 */
//unsigned int val ;
int i,j;

for(i=0;i<maxline;i++)
{
for(j=0;j<80;j++)
{
if((int)xx[i][j] > 32)
{
xx[i][j] = (xx[i][j] * 11) % 256 ;
// xx[i][j] = val;
}
}
}

}

void main()
{
if(ReadDat()) {