1、三级数据库技术-533 及答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.函数 RData()实现从文件 in.dat中读取一篇英文文章存入到字符串数组 original中,请编写函数StrCharMove(),其函数的功能是:以行为单位把字符串中所有字符的 ASCII值右移 4位,然后把右移后的字符 ASCII值再加上原字符的 ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组 original中,最后调用函数 WData(),把结果 original输出到文件out.dat中。 原始数
2、据文件存放的格式是:每行的宽度均小于 80个字符(含标点符号和空格)。 请勿改动主函数 main()、读数据函数 RData()和输出数据函数 WData()的内容。 #include stdio.h #include string.h #include conio.h char original 50 80; int maxline=0; int RData (void); void WData(void); void StrCharMove() void main() RData (); StrCharMove (); WData (); /*从文件 in.dat中读取一篇英文文章存入到字
3、符串数组 xx中*/ int RData (void FILE *fp; int i=0; char *p; if (fp=fopen(“in.dat“, “r“) = NULL) return 1; while (fgets(originali, 80, fp)!= NULL) p=strchr(originali, “n“); if (p) *p=0; i+; maxline=i; fclose(fp); return 0; /*把结果 original输出到文件 out.dat中*/ void WData() FILE *fp; int i; fp=fopen(“out.dat“, “w
4、“); for (i=0; imaxline; i+) printf(“%sn“, originali); fprintf(fp,“%sn“, originali); fclose(fp); (分数:100.00)_三级数据库技术-533 答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.函数 RData()实现从文件 in.dat中读取一篇英文文章存入到字符串数组 original中,请编写函数StrCharMove(),其函数的功能是:以行为单位把字符串中所有字符的 ASCII值右移 4位,然后把右移后的字符 ASCII值再加上原字符
5、的 ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组 original中,最后调用函数 WData(),把结果 original输出到文件out.dat中。 原始数据文件存放的格式是:每行的宽度均小于 80个字符(含标点符号和空格)。 请勿改动主函数 main()、读数据函数 RData()和输出数据函数 WData()的内容。 #include stdio.h #include string.h #include conio.h char original 50 80; int maxline=0; int RData (void); voi
6、d WData(void); void StrCharMove() void main() RData (); StrCharMove (); WData (); /*从文件 in.dat中读取一篇英文文章存入到字符串数组 xx中*/ int RData (void FILE *fp; int i=0; char *p; if (fp=fopen(“in.dat“, “r“) = NULL) return 1; while (fgets(originali, 80, fp)!= NULL) p=strchr(originali, “n“); if (p) *p=0; i+; maxline=i
7、; fclose(fp); return 0; /*把结果 original输出到文件 out.dat中*/ void WData() FILE *fp; int i; fp=fopen(“out.dat“, “w“); for (i=0; imaxline; i+) printf(“%sn“, originali); fprintf(fp,“%sn“, originali); fclose(fp); (分数:100.00)_正确答案:()解析:int i, j.strl; for (i=0; imaxline; i+) strl=strlen (original i); /计算字符串 ori
8、ginali的长度 for (j=0; jstrl; j+) /*把字符 original i j的 ASCII码值右移 4位后所得到的值与原字符 originalij的 ASCII码值相中,仍存入原字符串对应的位置上*/ originali j += originali j4; 解析 以行为单位把所有字符的 ASCII值右移 4位,后把右移后的字符 ASCII值再加上原字符的ASCII值,得到新的字符。 首先定义循环变量 i、j 和表示字符串长度的整型变量 strl。 在第一层 for循环中,循环变量 i从 0开始,依次递增直到其值等于或大于 maxline,在循环体中,首先用函数 strlen(originali)计算字符串 originali的长度,把这个值赋给整型变量 strl。在第二层for循环中,循环变量 i从 0开始,依次递增直到其值等于或大于 strl,利用表达式 originalij+=originalij4 实现对字符 originalij的 ASCII码值右移 4位后所得到值与原字符originalij的 ASCII码值相加,仍存入原字符串对应的位置上的功能。