函数ReadDat()实现从数据文件in.dat中读取一篇英文文章存人到字符串数组XX中;请编写函数StrOR(),其函数的功能是:以该文章中的行为单位依次扫描一行字符串中的小写字母O,每次将小写字母O的左右字符串部分作交叉换位,即左边字符串移到小写字母O

admin2013-12-10  41

问题 函数ReadDat()实现从数据文件in.dat中读取一篇英文文章存人到字符串数组XX中;请编写函数StrOR(),其函数的功能是:以该文章中的行为单位依次扫描一行字符串中的小写字母O,每次将小写字母O的左右字符串部分作交叉换位,即左边字符串移到小写字母O的右边,而原先右边的则反之,并把小写字母O删除,依次执行直至这一行中的小写字母O处理完,之后把已处理的字符串仍按行重新存入字符串数组XX中。最后main()函数调用函数WriteDat()把结果xx输出到文件out.dat中。
  例如原文:you have the correct record.
  第1个O:u have the correct record.y
  第2个0:rrect record.yu have the C
  第3个0:rd.yu have the crrect rec
  提示:对于每一行字符串数组处理有如下步骤可供参考:
    第一步:查找字符串中小写字母“0”的位置,没有找到则结束本字符串的处理。
    第二步:如果找到字符串中小写字母“0”的下标为pos,则调用函数change完成一次处理,并形成新的字符串输出。
    第三步:对新字符串回到第一步重新进行以上处理。
    原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
【试题程序】
  #include
  #include
  char xxE503E803;
  int maxline=0;  /*文章的总行数*/
  int ReadDat(void);
  void WriteDat(void);
  /*函数功能:以pos为下标,实现字符串的交叉换位输人参数:str:需要进行交叉换位处理的字符串;pos:小写字母~O在输入字符串中的下标位置;输出参数;str:交叉换位后的字符串。*/
    void change(char*str。int pos)
    {
    char st[80];
    str[pos]=0;
    strcpy(st,str+pos+1);
    strcat(st,str);
    strcpy(str,st);
    }
    void Str()R(void)
    {
    }
    void main()
    {
    if(ReadDat()){
    printf(“数据文件IN.DAT不能打开!\n\007”):
    return;
    }
    Str0R():
    WriteDat();
    }
Int ReadDat(void)
    {
    FILE*fp;
    int i=0;
    char*P;
    if((fp:fopen(“in.dat”。“r”))==NULL)
    return 1;
    while(fgets(xx,80,fp)!=NULL){
    p—strehr(xx,’\n’),
    if(p)”p=0;
    i++;
    }
    maxline=i;
    felose(fp);
    return 0;
    }
    void WriteDat(void)
    {
    FILE*fp;
    int i:
    fp=fopen(”out.dat”,”w”);
    for(i=0;i    printf(“%s\n”,xxEi]);
    fprintf(fp。“%s\n”,xxEi]);
    }
    fclose(fp);
    }

选项

答案void StrOR(void) { int i,j; for(i=0;i
解析
转载请注明原文地址:https://jikaoti.com/ti/kv37FFFM
0

最新回复(0)