国家二级C语言机试(操作题)模拟试卷335
程序填空题
1.给定程序中,函数fun的功能是:判断形参s所指字符串是否是”回文”( Palindrome),若是,函数返回值为1;不是,函数返回值为0。”回文”是正读和反读都~样的字符串(不区分大小写字母)。
例如,LEVEL和Level是“回文”,而LEVLEV不是。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#include
int fun (char *s)
{ char *lp,*rp;
rp=s+strlen (s)—1;
while ((toupper (*lp) ==toupper
if (lp<rp) ____3____ ;
else return 1;
}
main ()
{ char s [81] ;
printf (\\
(1)s
(2) —N
(3) return 0
解析:函数fun的功能是:判断形参s所指字符串是否是“回文”,即比较第一个字符和最后一个字符是否相同,第二个字符和倒数第二个字符是否相同,依此类推,可以用循环来实现。
第一空:“rp=s+strlen(s)—1;”可知rp指向最后一个元素,因此lp是指向第一个元素,因此第一空应为“s”。
第二空:“lpH; rp ____2____; ”lp往后移动,rp应该往前移动,故第二空处应为“——”。
第三空:“if(lp<rp)”成立说明lp和rp比较没有比较到字符串的最中间的字符,也就是说s字符串不是回文,因此第三空处的应为“return 0”。
字符数组和字符串、指针作为函数的参数。
程序修改题
2.给定程序MODI1.C中fun函数的功能是:求出以下分数序列的前n项之和。
(1) double fun (int n)
(2)c=a; a+=b; b=c;
解析:本题中函数的功能是求出分数序列的前n项之和。首先根据题干中给出的公式推出每一项之间的关系,求出每一项的表达式,然后求得数列的和。每一项的分母是前一项的分子,分子是前一项分子和分母的和。
(1) fun函数中的语句“double s=0.0;”以及“return (s); ”说明fun函数具有double返回值,所以应将“fun(int n)”改为“double fun(int n)”。
(2)根据题干中给出的公式可以推出每一项的特点,知道每一项的b值是前一项的c值,所以第二个标识下“b+=c;”改为“b=c; ”。
程序设计题
3.请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17,5,则应输出:19,23,29,3 1,37。
注意:部分源程序在文件PROG1.C文件中。
请勿改动主函数mam和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
Void fun (int m, int k, int xx[])
{
}
Main()
{
int m,n. zz [1000]; void NONO();
printf \\
1 int r=0, temp,p, sign=1;
2 for( temp=m+l; temp<m*m; temp++)
3 //从temp开始循环,判断紧靠temp的整数
4 { for (p=2; p<temp; p++)
5 { if (temp% p! =0) //判断temp是否为素数
6 sign=1; //若是素数,标志设为1 7 else
8 { sign=0; //若不是素数,标志设为0
9 break; }
10 }
11 if (sign==1&&p>=temp)
12 {if(k>=0) //判断已有的素数个数是否已经满足sum个
13 {XX[r++] =temp; //将素数temp存入数组select
14 k——; //将题目中要求的素数个数减1__ 15__ }
16 else
17 break;
18 }}
解析:(1)该程序功能是取大于整数m且紧靠m的k个素数。其中,素数是指只能被1和自身除尽的正整数(>1),所以判别n是否为素数,只要用2~n—1这些数逐个去除n,判断余数是否为0即可。只要有一次余数为0,n就不是素数,否则n为素数。
(2)从已给部分源程序的mam主函数开始入手,核心函数“fun(m,n,zz); ”中的参数由题目可知,zz存放素数,n为要求的素数个数。
进入fun函数,根据前面的分析:
首先,定义、初始化变量sign,作为素数的标志;定义r,初始化为存储素数数组的起始位。然后,每判断一次temp中的值是否为素数后,使temp的值增1,再次对temp中新的值进行判断其是否为素数,不断循环此过程,直到m的值等于指定的个数,即函数中的k个数。
本文档预览:3600字符,共2878字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载