1、二级 C 语言-51 及答案解析(总分:74.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:4.00)1.以下程序的输出结果是_。 #include stdio.h main() int a5=2,4,6,8,10,*p; p=a;p+; prinft(“%d“,*p); (分数:4.00)填空项 1:_二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中函数 fun 的功能是:用递归算法计算斐波拉契数列中第 n 项的值。从第 1 项起,斐波拉契数列为:1,1,2,3,58,13,21, 例如,若给 n 输入 7,则该项的斐波拉契数值为 13。 请改正程序中的错
2、误,使它能得出正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includestdio.h long fun(int g) /*found*/ switch(g); case 0:return 0; /*found*/ case 1;case 2:return 1; return(fun(g-1)+fun(g-2); void main() long fib;int n; printf(“Input n:“); scanf(“%d“, int n, i=0; clrscr(); prlntf(“输入若干个字符串“); gets(ssi); pu
3、ts(ssi); while(!strcmp(ssi, “*“)=0) /*用*作为结束输入的标志*/ i+; gets(ssi);puts(ssi); n=i; ps=fun(ss,n, print(“/nmax=%s/n“,ps); (分数:40.00)_二级 C 语言-51 答案解析(总分:74.00,做题时间:90 分钟)一、B填空题/B(总题数:1,分数:4.00)1.以下程序的输出结果是_。 #include stdio.h main() int a5=2,4,6,8,10,*p; p=a;p+; prinft(“%d“,*p); (分数:4.00)填空项 1:_ (正确答案:4)
4、解析:解析 在主函数中,语句 p=a;p+使用指针 p 指向数组 a1,所以输出结果为 4。二、B改错题/B(总题数:1,分数:30.00)2.下列给定程序中函数 fun 的功能是:用递归算法计算斐波拉契数列中第 n 项的值。从第 1 项起,斐波拉契数列为:1,1,2,3,58,13,21, 例如,若给 n 输入 7,则该项的斐波拉契数值为 13。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includestdio.h long fun(int g) /*found*/ switch(g); case 0:r
5、eturn 0; /*found*/ case 1;case 2:return 1; return(fun(g-1)+fun(g-2); void main() long fib;int n; printf(“Input n:“); scanf(“%d“, int n, i=0; clrscr(); prlntf(“输入若干个字符串“); gets(ssi); puts(ssi); while(!strcmp(ssi, “*“)=0) /*用*作为结束输入的标志*/ i+; gets(ssi);puts(ssi); n=i; ps=fun(ss,n, print(“/nmax=%s/n“,ps); (分数:40.00)_正确答案:(fun(char (*a)81, int num, char *max) int i=0; max=a0; for (i=0; inum; i+) /*找出最长的一个字符串*/ if(strlen(max)strlen(ai) max=ai; return max; /*传回最长字符串地址*/ )解析:解析 做本题之前,我们先应该明白 ss 是一个指向一维数组的指针变量,max 是指向指针变量的指针变量。所以引用时要注意加上*。我们不可能只用 max,因为 ss0是一个数组地址而不是一个指针的地址。