1、国家二级( C语言)机试模拟试卷 337及答案与解析 一、程序填空题( 30分) 1 给定程序中,函数 fun的功能是:求 ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参 n所指变量中。 ss所指字符串数组中共有 M个字符串,且串长 #include #define M 5 #define N 20 /*found*/ int fun(char (*ss)【 1】 , int *n) int i, k=0, len=0; for(i=0; i*n) /*found*/ 【 3】 ; k=i; return(k); main() char ssMN=“sha
2、nghai“,“guangzhou“,“beijing“, “tianjing“,“cchongqing“; int n,k,i; printf(“nThe original strings are :n“); for(i=0;i #define N 20 int fun (int * a, int n) int i, m, t, k ; for(i=0;iam) t=ai;ai=am;am=t; main() int x, bN=11,5,12,0,3,6,9,7,10,8, n=10, i; for (i=0; iam) m=k; 【试题解析】 ( 1)第二个标识符下 for循环逐个对 m
3、个数据进行选择判断,原题中 “m=0;”语句将 m值设置为 0,在循环中 m值始终是 0,不会改变,根据“for(i=0;iam)”, ak比 am大, m记录下下标值 k,内层循环结束的时候 am值就是本次循环找到的最大值(如果 m=0, am是数组中的最大值;如果m=1, am数组中的次最大值),即 m记录最大值的下标值,因此第二标识下应该是 “if(akam) m=k;”。 三、程序设计题( 40分) 3 【正确答案】 int k; float str=1.0,sum=1.0; for(k=2;k=n;k+) sum=sum+k; /求得每一项的分母 str=str+1/sum; /级数累加求和 【试题解析】 进入 fun函数,根据前面的分析: 首先,求得每一项分母的值 sum,即利用上一项来表示 “sum=sum+k;”。 然后 ,对每一项进行累加 “str=str+1/sum;”。 最后,返回运算结果 “str”。