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

admin2013-12-10  31

问题 函数readDat()是从数据文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编写函数jsSort(),其函数的功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组XX中。最后调用函数writeDat()把结果xx输出到文件out.dat中。条件;从字符串中间一分为二,左边部分按字符的ASCII码值降序排序,右边部分不作处理。排序后,左边部分与右边部分按例子所示进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。
    例如:位置0 1 2 3 4 5 6 7 8
    原字符串    a h C d h g f e
    1 2 3 4 9 8 7 6 5
    处理后字符串h g f e d C b f
    8 7 6 5 9 4 3 2 1
【试题程序】
    #include
    #include~string.h>
    char xxE20][80];
    void readDat();
    void writeDat();
    void jsSort()
    {
    /*第i行文章的内容已作为字符串存入xx为起始地址的存储单元内*/
    /*提示:先对字符串左边部分的字符数组 进行降序排序.左边部分字符数组对应的下标从0到strlen(xx[iJ)/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’);
    ir(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<20Ii++) {for(j=0;j
解析
转载请注明原文地址:https://jikaoti.com/ti/Br37FFFM
0

最新回复(0)