【计算机类职业资格】三级数据库技术-546及答案解析.doc

上传人:livefirmly316 文档编号:1321210 上传时间:2019-10-17 格式:DOC 页数:4 大小:29.50KB
下载 相关 举报
【计算机类职业资格】三级数据库技术-546及答案解析.doc_第1页
第1页 / 共4页
【计算机类职业资格】三级数据库技术-546及答案解析.doc_第2页
第2页 / 共4页
【计算机类职业资格】三级数据库技术-546及答案解析.doc_第3页
第3页 / 共4页
【计算机类职业资格】三级数据库技术-546及答案解析.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、三级数据库技术-546 及答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.编写一个函数 findStr(char *str,char*substr),该函数统计一个长度为 2 的子字符串 substr 在另一个字符串 str 中出现的次数,该次数作为函数值返回。 例如,假定输入的字符串为“asd asasdfg asd as zx67 asd mklo“,子字符串为“as“,函数返回值是 6。 函数 ReadWrite()实现从文件 in.dat 中读取两个字符串,并调用函数 findStr(),最后把结果输出到文件out.dat 中。

2、 请勿改动主函数 main()和其他函数中的任何内容,仅在函数 findStr()的花括号中填入你编写的若干语句。#include stdio.h #include string.h void ReadWrite(); int findStr(char *str, char *substr) main () char str81, substr3; int n; printf (“输入到原字符串:“); gets(str); printf (“输入子字符串:“); gets(substr); puts (str); puts (substr); n=findStr(str, substr);

3、printf(“n=%dn“, n); ReadWrite (); /*从文件 in.dat 中读取两个字符串,并调用函数 findStr(),最后把结果输出到文件 out.dat 中*/ void ReadWrite() char str81, substr3, ch; int n, len, i=0; FILE *rf, *wf; rf=fopen(“in.dat“, “r“); wf=fopen(“out.dat“, “w“); while(i5) fgets (str, 80, rf); /从文件 in.dat 中读取长度为 79 的字符串存入到字符串 str fgets (subst

4、r, 10, rf); /从文件 in.dat 中读取长度为 9 的子字符串存入到字符串 substr len=strlen (substr)-1; /把子字符串 substr 的长度减 1 的值赋给 len ch=substr len; /把子字符串的最后一个字符的值赋给字符 ch if(ch = “n“ | ch = 0x1a) substrlen=0; /*调用函数 findStr(str, substr)返回子字符串 substr 在字符串 str 中出现的次数*/ n=findStr(str, substr); fprintf (wf, “%dn“, n); /把计算结果 n 写入到

5、文件 out.dat i+; /循环变量 i 加 1 fclose(rf); fclose(wf); (分数:100.00)_三级数据库技术-546 答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.编写一个函数 findStr(char *str,char*substr),该函数统计一个长度为 2 的子字符串 substr 在另一个字符串 str 中出现的次数,该次数作为函数值返回。 例如,假定输入的字符串为“asd asasdfg asd as zx67 asd mklo“,子字符串为“as“,函数返回值是 6。 函数 ReadWri

6、te()实现从文件 in.dat 中读取两个字符串,并调用函数 findStr(),最后把结果输出到文件out.dat 中。 请勿改动主函数 main()和其他函数中的任何内容,仅在函数 findStr()的花括号中填入你编写的若干语句。#include stdio.h #include string.h void ReadWrite(); int findStr(char *str, char *substr) main () char str81, substr3; int n; printf (“输入到原字符串:“); gets(str); printf (“输入子字符串:“); get

7、s(substr); puts (str); puts (substr); n=findStr(str, substr); printf(“n=%dn“, n); ReadWrite (); /*从文件 in.dat 中读取两个字符串,并调用函数 findStr(),最后把结果输出到文件 out.dat 中*/ void ReadWrite() char str81, substr3, ch; int n, len, i=0; FILE *rf, *wf; rf=fopen(“in.dat“, “r“); wf=fopen(“out.dat“, “w“); while(i5) fgets (s

8、tr, 80, rf); /从文件 in.dat 中读取长度为 79 的字符串存入到字符串 str fgets (substr, 10, rf); /从文件 in.dat 中读取长度为 9 的子字符串存入到字符串 substr len=strlen (substr)-1; /把子字符串 substr 的长度减 1 的值赋给 len ch=substr len; /把子字符串的最后一个字符的值赋给字符 ch if(ch = “n“ | ch = 0x1a) substrlen=0; /*调用函数 findStr(str, substr)返回子字符串 substr 在字符串 str 中出现的次数*

9、/ n=findStr(str, substr); fprintf (wf, “%dn“, n); /把计算结果 n 写入到文件 out.dat i+; /循环变量 i 加 1 fclose(rf); fclose(wf); (分数:100.00)_正确答案:()解析:char *p,*q=str;int cnt=0; while(1) /*调用 C 语言的字符串库函数 strstr(),返回子字符 substr 在字符串 str 中第一次出现的位置*/ p=strstr(q,substr); if(p=NULL) break; /如果 p 的值为空,则说明在字符串 str 没有找到子字符串,

10、退出循环 cnt+; /否则,统计变量 cnt 加 1 /*指针 q 指向子字符串 substr 在字符串 str 中出现位置的后 2 个位置的子串*/ q=p+2; return cnt; /返回子字符串 substr 在字符串 str 中出现的次数 解析 统计一个长度为 2 的子字符串在另一个字符串中出现的次数。 定义字符指针 p,q,并且 q 指向字符串 str。定义计数整型变量 cnt,设置其值等于 0。 在 while 循环中调用 C 语言的字符串库函数 strstr(),返回子字符串 substr 在字符串 q 第一次出现的位置,赋给变量 p。用 if 语句判断,如果 p 的值为空,则说明在字符串 str 没有找到子字符串,退出循环。否则,变量 cnt 加 1,再把 p 的值加 2(因为子字符串 substr 的长度为 2)赋给变量 q,执行下一次循环。直到字符串中不存在子字符串时,退出循环结束。 最后,返回子字符串 substr 在字符串 str 中出现的次数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1