函数readDat()从数据文件in.dat中读取20行数据并存放到字符串数组xx中(每行字符串长度均小于80)。请编写函数jsSort(),其函数的功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后调用函

admin2013-12-10  29

问题 函数readDat()从数据文件in.dat中读取20行数据并存放到字符串数组xx中(每行字符串长度均小于80)。请编写函数jsSort(),其函数的功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后调用函数writeDat()把结果XX输m到文件out.dat中。条件:从字符串中间一分为二,左边部分按字符的ASCII码值升序排序.右边部分不变。左边经排序后再与右边部分进行交换。如果原字符串长度为奇数。则最中间的字符不参加处理,字符仍放在原位置上。
例如:位置0 1 2 3 4 5 6 7 8
    原字符串d C b a h g f e
    4 3 2 1 9 8 7 6 5
    则处理后字符串h g f e a h C d
    R 7 6 5 9 1 2 3 4
【试题程序】
  #include
  #include
  char xxEZ03 E803;
  void readDat();
  void writeDat();
  void jsSort()
  {
    /*第i行文章的内容已作为字符串存入xxl-i]为起始地址的存储单元内*/
    /*提示:先对字符串左边部分的字符数组进行升序排序。左边部分字符数组对应的下标从0到strlen(xxEi])/2—1。*/
    /*该提示仅供解题参考,考生也可用其他方法解题*/
    )
    void main()
    {
    readDat();
    jsSort();
    writeDat();
    }
    void readDat()
    {
    FILE*in;
    int i=0;
    char*P;
    in=fopen(“in.dat”。‘r’);
    while(i<20&&fgets(XX,80,in)!=NULL){
    p:strchr(xx,‘\n’,
    if(p)*p=0;
    i++;
    }
    fclose(in);
    }
void writeDat()
{
  FILE*out;
  int i;
  OUt=fopen(”out.dat”,”W”);
  for(i=0;i<20;i++){
    printf(“%s\n”,xx);
    fprintf(out.“%s\n”,xx);
  }
  fclose(out);
}

选项

答案void jsSort() {unsigned int i,j,k;/*定义变量*/ int temp; for(i=0;i<20;i++) {for(j=0;jxxEi][k]) {temp=xx[i][j]; xxriq[j]=xx[i][k]; xx[i][k]=temp; } for(j=0;j
解析
转载请注明原文地址:https://kaotiyun.com/show/4olZ777K
0

最新回复(0)