函数ReadDat()实现从数据文件in.dat中读取一篇英文文章存入到无符号字符串数组XX中,请编写函数StrCharJL(),其功能是:以行为单位把字符串中的所有字符的ASCII码值左移4位,低位补0。如果左移后,其值小于等于32或大于100,则原字符

admin2013-12-10  30

问题 函数ReadDat()实现从数据文件in.dat中读取一篇英文文章存入到无符号字符串数组XX中,请编写函数StrCharJL(),其功能是:以行为单位把字符串中的所有字符的ASCII码值左移4位,低位补0。如果左移后,其值小于等于32或大于100,则原字符保持不变.留在原字符串对应的位置上。否则就把左移后的值再加上原字符的ASCII码值,得到新的值存人原字符串对应的位置上。然后把已处理的字符串按行重新存人无符号字符串数组XX中。最后通过main()函数调用函数WriteDat(),把结果XX输出到文件out.dat中。
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
【试题程序】
    #include
    #include
    unsigned char xxESO][80];
    int maxline=0;    /*文章的总行数*/
    int ReadDat(void);
    void WriteDat(void);
    void StrCharJ L(void)
    {
    /*第i行内容已作为字符串存入xx为起始地址的存储单元内*/
    /*存储中间处理结果的变量定义,应为无符号字符变量*/
    /*例如:trap=(xx[j]<<4);将字符变量xx[j]左移4位二进制位,低位补0,并将移位结果存放到tmp变量中。*/
    /*该提示仅供解题参考,考生也可用其他方法解题*/
    }
    void main()
    {
    if(ReadDat()){
    printf(”数据文件IN.DAT不能打开!\n\007”);
    return;
    }
    StrCharJAL();
    WriteDat(),
    }
    int ReadDat(void)
    {
    FILE*fp;
    int i=0L
    char*P;
    if((fp=fopen(“in.dat”,“r”))==NULL)
    return 11
    while(fgets(xxEi],80,fp)!=NULL){
    p:strchr(xx,\n);
    if(p)*p=0;
    i++;
    }
    maxline=i;
    felose(fp);
    return 0;
    }
    void WriteDat(void)
    {
    FILE*fp;
mt 1;
  fp=fopen(“out.dat”.“W”);
  for(i=0;i    printf(“%s\n”。xx);
    fprintf(fp,“%s\n”,xx);
  }
  fclose(fp);
}

选项

答案void StrCharJL(void) { int i,j; /*定义变量*/ unsigned char trap; for(i=0;i100) /*判断条件*/ continue; else xxEi]Ej]+=trap: } } }

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

随机试题
最新回复(0)