计算机三级信息管理技术上机考试试题一(附答案)
来源:优易学  2010-1-20 17:18:59   【优易学:中国教育考试门户网】   资料下载   IT书店

函数RData()实现从文件IN.dat中读取20行数据存放到字符串数组str中(每行字符串长度均小于80)。请编写函数oddSort(),其功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组str中。最后调用函数WData(),把结果str输出到OUT.dat文件中。

例如,位置       0 1 2 3 4 5 6 7

源字符串           h g f e d c b a

则处理后字符串      h a f c d e b g

注意:部分源程序已经给出。请勿改动主函数main()、读数据函数RData()和输出数据函数WData()的内容。

#include <stdio.h>

#include <string.h>

#include <conio.h>

char  str[20][80];

void oddSort()

{

 

}

void RData()

{    FILE  *in;

      int  i = 0;

      char  *p;

      in = fopen("IN.dat", "r");

      while (i<20 && fgets(str[i], 80, in)!=NULL)

      {       p = strchr(str[i], '\n');

                if (p)

                         *p = 0;

                i++;

      }

      fclose(in);

}

void WData()

{    FILE  *out;

      int  i;

      out = fopen("OUT.dat", "w");

      for (i=0; i<20; i++)

      {       printf("%s\n", str[i]);

                fprintf(out, "%s\n", str[i]);

      }

      fclose(out);

}

void main()

{    RData();

      oddSort();

      WData();

}

试题答案及详解

【审题分析】分析题目可知,本题只要实现oddSort()函数的功能即可。oddSort()要实现的功能是:以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组str中。因此解答本题的关键在于如何判断字符串变量的下标为奇数。

【解题思路】在最外层for循环语句中,自变量i0递增到19,完成对20行数据的循环。对于每一行字符串数组str[i],首先利用字符串函数strlen求出其长度,然后在for循环语句中,自变量j1开始到strl-2,每次递增2,这样就实现了对字符串数组str[i]中下标为奇数的字符的循环。在当前for循环的内嵌循环中,自变量kj+2开始到strl,每次递增2,进行下标为奇数两个相邻字符的ASCII码值大小的比较,如果字符str[i][j]大于字符str[i][k],则两个字符进行交换,实现字符串数组str[i]中下标为奇数的字符按其ASCII值从小到大的排序。

【参考答案】

void oddSort()

{   int  i, j, k, strl;

     char  ch;

     for (i=0; i<20; i++)

     {     strl = strlen(str[i]);

            for (j=1; j<strl-2; j=j+2)

                   for (k=j+2; k<strl; k=k+2)

                          if (str[i][j] > str[i][k])

                          {     ch = str[i][j];

                                 str[i][j] = str[i][k];

                                 str[i][k] = ch;

                          }

     }

}

【易错分析】 循环自变量jk每次递增都为2

【考点链接】for循环语句、字符按其ASCII值进行大小比较。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训