函数ReadDat()实现从数据文件in.dat中读取一篇英文文章存入到字符串数组xx中;请编写函数CharConvA(),其函数的功能是:以该文章中的行为单位把字符串中的最后一个字符的ASCII码值右移4位二进制位,高位补0后加最后第二个字符的ASCII

admin2013-12-10  24

问题 函数ReadDat()实现从数据文件in.dat中读取一篇英文文章存入到字符串数组xx中;请编写函数CharConvA(),其函数的功能是:以该文章中的行为单位把字符串中的最后一个字符的ASCII码值右移4位二进制位,高位补0后加最后第二个字符的ASCII码值,得到最后一个新的值。最后第二个字符的ASCII码值右移4位二进制位,高位补。后加最后第三个字符的ASCII码值,得到最后第二个新的值,以此类推一直处理到第二个字符。注意:第一个新的值与上述处理不同,第一个字符的ASCII码值加原最后一个字符的ASCll码值,得到第一个新的值。得到的新值分别存放在原字符串对应的位置上,之后把已处理的字符串仍按行重新存入数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到out.dat文件中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。并也按它们的ASCII码值作以上处理。
【试题程序】
    #include
    #include
    char xxES03E80];
    int maxline=0;    /*文章的总行数*/
    int ReadDat(void);
    void WriteDat(void);
    void CharConvA(void)
    {
    }
    void main()
    {
    if(ReadDat()){
    printf(”数据文件IN.DAT不能打开!\n\007”):
    return;
  }
  CharConvA();
  WriteDal();
}
int ReadDat(void)
{
FILE*fp;
int i=0;
char*P;
if((fp=fopen(”in.dat”,”r”))==NU
    return 1;
  while(fgets(xx,80,fp)!=NULL)
    p=strchr(xx,‘\n’);
    if(p)*p=0;
    i++;
  }
  maxline=i;
  fclose(fp);
  return 0;
}
void WriteDat(void)
{
  FILE*fp;
  int i;
  fp=fopen(“out.dat”。“W”);
  for(i=0li    printf(“%s\n”.xx);
    fprintf(fp,“%skn”,xxEi]);
  }
  fclose(fp);
}

选项

答案void CharConvA(void) {int i,j; /*定义变量*/ int temp; for(i一0;i0lj一一) x)[[i]D]=(xx[i]D]>>4)+xxD]D一1]; xx[i3E03+=temp; } }

解析
转载请注明原文地址:https://kaotiyun.com/show/qElZ777K
0

最新回复(0)