1、三级数据库技术-522 及答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.函数 readDat()是从文件 in.dat中读取 20行数据存放到字符串数组 xx中(每行字符串长度均小于 80)。请编制函数 jsSort(),其函数的功能是:以行为单位对字符串变量的下标为奇数的位置上的字符按其ASCII值从小到大的顺序进行排序,下标为偶数的位置上的字符仍按原来位置存放,排序后的结果仍按行重新存入字符串数组 xx中,最后调用函数 writeDat()把结果 xx输出到 out.dat文件中。 例如:位置 0 1 2 3 4 5 6 7 源字
2、符串 h g f e d c b a 则处理后字符串 h a f c d e b g 请勿改动数据文件 in.dat中的任何数据、主函数 main()、读函数 readDat()和写函数 writeDat()的内容。#include stdio.h #include string.h void readDat(); void writeDat(); char xx20 80; void jsSort() void main () readDat (); jsSort (); writeDat (); /*从文件 in.dat中读取 20行数据存放到字符串数组 xx中*/ void readDa
3、t() FILE *in; int i=0; char *p; in=fopen(“in.dat“, “r“); while(i20 if(p) *p=0; i+; fclose(in); /*把结果 xx输出到文件 out.dat中*/ void writeDat() FILE *out; int i; out=fopen(“out.dat“, “w“); for(i=0; i20; i+) printf(“%sn“, xxi); fprintf(out, “%sn“, xxi); fclose (out); (分数:100.00)_三级数据库技术-522 答案解析(总分:100.00,做题
4、时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.函数 readDat()是从文件 in.dat中读取 20行数据存放到字符串数组 xx中(每行字符串长度均小于 80)。请编制函数 jsSort(),其函数的功能是:以行为单位对字符串变量的下标为奇数的位置上的字符按其ASCII值从小到大的顺序进行排序,下标为偶数的位置上的字符仍按原来位置存放,排序后的结果仍按行重新存入字符串数组 xx中,最后调用函数 writeDat()把结果 xx输出到 out.dat文件中。 例如:位置 0 1 2 3 4 5 6 7 源字符串 h g f e d c b a 则处理后字符串 h a
5、 f c d e b g 请勿改动数据文件 in.dat中的任何数据、主函数 main()、读函数 readDat()和写函数 writeDat()的内容。#include stdio.h #include string.h void readDat(); void writeDat(); char xx20 80; void jsSort() void main () readDat (); jsSort (); writeDat (); /*从文件 in.dat中读取 20行数据存放到字符串数组 xx中*/ void readDat() FILE *in; int i=0; char *p
6、; in=fopen(“in.dat“, “r“); while(i20 if(p) *p=0; i+; fclose(in); /*把结果 xx输出到文件 out.dat中*/ void writeDat() FILE *out; int i; out=fopen(“out.dat“, “w“); for(i=0; i20; i+) printf(“%sn“, xxi); fprintf(out, “%sn“, xxi); fclose (out); (分数:100.00)_正确答案:()解析:char ch; int i, j, k; for(i=0; i20; i+) /*对文章第 i行
7、的字符串变量的下标为奇数的位置上的字符按其 ASCII值从小到大的顺序进行排序,下标为偶数的位置上的字符仍按原来位置存放*/ for(j=1; j (int) strlen(xxi); j+=2) for(k=j+2; k(int) strlen(xxi); k+=2) /*如果字符 xxij的 ASCII码值大于 xxik的 ASCII码值,则两者进行互换*/ if(xxijxxik) ch=xxik; xxik=xxij; xxij=ch; 解析 以行为单位对字符串变量的下标为奇数的字符按从小到大排序,结果仍按行重新存入字符串数组中。 因为要进行字符之间的互换,所以定义局部字符变量 ch。定义循环变量 i、j、k。 在第一层 for循环中,循环变量 i从 0开始,依次递增直到其值等于或大于 20,在循环体中实现对每行字符串的处理。在循环体中执行第二层 for循环,循环变量 j从 1开始,依次递增 2直到其值等于(int)strlen(xxi),在第三层 for循环中,循环变量 k从 j+2开始,依次递增 2,直到其值等于(int)strlen(xxi),如果字符 xxij的 ASCII码值大于 xxik的 ASCII码值,则两者进行互换,实现字符串 xxi中下标为奇数的位置上的字符按其 ASCII值从小到大的顺序进行排序,下标为偶数的位置上的字符仍按原来位置存放的功能。