1998年度中程下午试卷及答案.doc
约28页DOC格式手机打开展开
1998年度中程下午试卷及答案,页数:28字数:6228试题1 阅读以下程序说明和 c程序,将应填人棗(n)棗处的字句,写在答卷的对应栏内。 [程序说明] 函数 int commstr(char*strl, char*str2, int*sublen)从两已知字符串 strl和 str2中,...
内容介绍
此文档由会员 cnlula 发布
1998年度中程下午试卷及答案
页数:28 字数:6228
1998年度中程下午试卷及答案
试题1 阅读以下程序说明和 C程序,将应填人棗(n)棗处的字句,写在答卷的对应栏内。 [程序说明] 函数 int commstr(char*strl, char*str2, int*sublen)从两已知字符串 Strl和 Str2中,找出它们的所有最长的公共子串。如果最长公共子串不止 1个,函数将把它们全部找出,并输出。约定空串不作为公共子串。 函数将最长公共子串的长度送人由参数sublen所指的变量中,并返回字符串str1和 和stf2的最长公共子串的个数。如果字符串 strl和 str2没有公共子串,约定最长公共子串 的个数和最长公共子串的长度均为0。 [程序] int strlen(char * s) { char * t= s; while(*t++); return t/FONT>S一1; } int commstr(char *strl,char *str2, int *sublen) { char*sl,*s2; int count=0, len1, len2 , k, j, i, p; len1=strlen(str1); len2=strlen(str2); if(len1>len2) {s1=str1; s2=str2;} else {len2=len1; s1=str2; s2=str1;} for(j=len2; j>0; j--) /* 从可能最长子串开始寻找 */ { for(k=0; __(1)__<=len2; k++) /* k为子串S2的开始位置 */ { for( i=0; s1[ __(2)__ ] !=’0’; i ++;) /* I为子串s1的开始位置 */ { /* s1的子串与 的子串比较 */ for (p=0; pif ( __(4)__ ) /* 如果两子串相同 */ { for(p=0; pprintf(“%c”, s2[k+p]); printf(“n”); count++; /* 计数增1 */ } } } if (count >0 ) break; } *sublen = (count>0) __(5)__ ; 0 ; return count; } 试题三 阅读以下程序说明和 C程序,将应填人棗(n)棗处的字句,写在答卷的对应栏内。 [程序说明] 打保龄球是用一个滚球去打出十个站立的柱,将柱击倒。一局分十轮,每轮可滚球一次或多次,以击倒的柱数为依据计分。一局得分为十轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的;滚球情况有关。即,某轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。具体的滚球击柱规则和计分方法如下: 若某一轮的第一次滚球就击倒全部十个柱,则本轮不再滚球。(若是第十轮则还需另加两次滚球)。 该轮得分为本次倒柱数10与以后两次滚球所击倒柱数之和。 若某一轮的第一次滚球未击倒十个柱,则可对剩下未倒的柱再滚球一次。如果这两次滚球击倒全部十个柱,则本轮不
页数:28 字数:6228
1998年度中程下午试卷及答案
试题1 阅读以下程序说明和 C程序,将应填人棗(n)棗处的字句,写在答卷的对应栏内。 [程序说明] 函数 int commstr(char*strl, char*str2, int*sublen)从两已知字符串 Strl和 Str2中,找出它们的所有最长的公共子串。如果最长公共子串不止 1个,函数将把它们全部找出,并输出。约定空串不作为公共子串。 函数将最长公共子串的长度送人由参数sublen所指的变量中,并返回字符串str1和 和stf2的最长公共子串的个数。如果字符串 strl和 str2没有公共子串,约定最长公共子串 的个数和最长公共子串的长度均为0。 [程序] int strlen(char * s) { char * t= s; while(*t++); return t/FONT>S一1; } int commstr(char *strl,char *str2, int *sublen) { char*sl,*s2; int count=0, len1, len2 , k, j, i, p; len1=strlen(str1); len2=strlen(str2); if(len1>len2) {s1=str1; s2=str2;} else {len2=len1; s1=str2; s2=str1;} for(j=len2; j>0; j--) /* 从可能最长子串开始寻找 */ { for(k=0; __(1)__<=len2; k++) /* k为子串S2的开始位置 */ { for( i=0; s1[ __(2)__ ] !=’0’; i ++;) /* I为子串s1的开始位置 */ { /* s1的子串与 的子串比较 */ for (p=0; pif ( __(4)__ ) /* 如果两子串相同 */ { for(p=0; pprintf(“%c”, s2[k+p]); printf(“n”); count++; /* 计数增1 */ } } } if (count >0 ) break; } *sublen = (count>0) __(5)__ ; 0 ; return count; } 试题三 阅读以下程序说明和 C程序,将应填人棗(n)棗处的字句,写在答卷的对应栏内。 [程序说明] 打保龄球是用一个滚球去打出十个站立的柱,将柱击倒。一局分十轮,每轮可滚球一次或多次,以击倒的柱数为依据计分。一局得分为十轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的;滚球情况有关。即,某轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。具体的滚球击柱规则和计分方法如下: 若某一轮的第一次滚球就击倒全部十个柱,则本轮不再滚球。(若是第十轮则还需另加两次滚球)。 该轮得分为本次倒柱数10与以后两次滚球所击倒柱数之和。 若某一轮的第一次滚球未击倒十个柱,则可对剩下未倒的柱再滚球一次。如果这两次滚球击倒全部十个柱,则本轮不