1、全国计算机二级 C 语言上机试题 68+2015 年及答案解析(总分:30.00,做题时间:90 分钟)1.给定程序中,函数 fun 的功能是:求 ss 所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参 n 所指变量中。ss 所指字符串数组中共有 M 个字符串,且串长。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1.C 中。不得增行或删行,也不得更改程序的结构! 给定源程序: #include #define M 5 #define N 20 /*found*/ int fun(char
2、(*ss) _1_, int *n) int i, k=0, len=0; for(i=0; i len=strlen(ssi); /*found*/ if(i=0) *n=_2_; if(len*n) /*found*/ _3_; k=i; return(k); main() char ssMN=“shanghai“,“guangzhou“,“beijing“,“tianjing“,“cchongqing“; int n,k,i; printf(“/nThe original strings are :/n“); for(i=0;i k=fun(ss, printf(“/nThe lengt
3、h of longest string is : %d/n“,n); printf(“/nThe longest string is : %s/n“,ssk); (分数:10.00)_2.给定程序 MODI1.C 中 fun 函数的功能是: 根据形参 m,计算如下公式的值。 1 1 1 1 t = 1 + - +- + - + + - 2 3 4 m 例如,若输入 5,则应输出 2.283333。 请改正程序中的错误或在下划线处填上适当的内容并把下划线删除, 使它能计算出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include dou
4、ble fun( int m ) double t = 1.0; int i; for( i = 2; i *n) /*found*/ _3_; k=i; return(k); main() char ssMN=“shanghai“,“guangzhou“,“beijing“,“tianjing“,“cchongqing“; int n,k,i; printf(“/nThe original strings are :/n“); for(i=0;i k=fun(ss, printf(“/nThe length of longest string is : %d/n“,n); printf(“/
5、nThe longest string is : %s/n“,ssk); (分数:10.00)_正确答案:(第一处:形参 ss 的定义,它是一个字符串数组的定义,其宽度为 N,所以应填:N。 第二处:取第一个字符串的长度赋值给变量*n,所以应填:len。 第三处:每循环一次,判断当前字符串的长度是否大于*n,如果大于,则*n=len。)解析:2.给定程序 MODI1.C 中 fun 函数的功能是: 根据形参 m,计算如下公式的值。 1 1 1 1 t = 1 + - +- + - + + - 2 3 4 m 例如,若输入 5,则应输出 2.283333。 请改正程序中的错误或在下划线处填上适当
6、的内容并把下划线删除, 使它能计算出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include double fun( int m ) double t = 1.0; int i; for( i = 2; i = m; i+ ) /*found*/ t += 1.0/k; /*found*/ _ main() int m; printf( “/nPlease enter 1 integer number:“ ); scanf( “%d“, printf( “/nThe result is %lf/n“, fun( m ) ); (分数:
7、10.00)_正确答案:(第一处:在此变量 k 没有定义过,再根据公式和 for 循环语句中所用的变量可知,这里的 k实际上是 i。 第二处:应是返回公式的值,函数中公式的值是存放在临时变量 t 中,所以应填 return t;。)解析:3.编写一个函数,该函数可以统计一个长度为 2 的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为: asd asasdfg asd as zx67 asd mklo,子字符串为:as,则应输出 6。 注意:部分源程序在文件 PROG1.C 中。 请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 给
8、定源程序: #include #include int fun(char *str,char *substr) main() char str81,substr3; int n; printf(“输入主字符串: “); gets(str); printf(“输入子字符串: “); gets(substr); puts(str); puts(substr); n=fun(str,substr); printf(“n=%d/n“,n); NONO(); (分数:10.00)_正确答案:(int fun(char *str,char *substr) int cnt = 0 ; char *p = str, *q ; while(*p) q = strstr(p, substr) ; if(q = NULL) break; p = q + strlen(substr) ; cnt+ ; return cnt ; main() char str81,substr3; int n; printf(“输入主字符串: “); gets(str); printf(“输入子字符串: “); gets(substr); puts(str); puts(substr); n=fun(str,substr); printf(“n=%d/n“,n); NONO(); )解析: