c上机模拟详细参考答案

上传人:微*** 文档编号:168528611 上传时间:2022-11-10 格式:DOCX 页数:107 大小:272.37KB
返回 下载 相关 举报
c上机模拟详细参考答案_第1页
第1页 / 共107页
c上机模拟详细参考答案_第2页
第2页 / 共107页
c上机模拟详细参考答案_第3页
第3页 / 共107页
点击查看更多>>
资源描述
参考答案:第1套上机考试答案解析:1、程序填空题【答案及难度指数】(1) ml( 2 ) m-1(3)1【起来审题】(1)该程序功能是对阶乘的实现。其屮,阶乘的计算公式定义为:ml叫I:m!=lm=l公式分为参数m是1和大于1的两种情况,例如,1的阶乘1! =1; 5的阶乘5! =5X4X3X2XI.(2)从已给部分源程序的main主:函数开始入手,函数执行print喩出语句,该语句调用自定义的fun函数,并将数值8传递给fun函 数的m参数。其中fun函数就是对阶乘算法的实现。(3)进入fun函数,根据前面的定义,它对阶乘算法的实现可以分为两种情况,是当ml时,应该用什么程序来实现阶乘的计算: 二是当m=l时,函数直接返回1即可。【解题思路】第一空:if(一I一)是要根据m的取值来判断使用何种阶乘的计算公式的。这里根据第2句递归调用语句,可知该语句是用来计算当 ml时的阶乘。因此第空if语句里面的条件应该是满足ml。所以,第空应填ml。第二空:return (m*fun(2_)很显然是采用递归函数来实现阶乘的计算,所以,第二空应填m-1。第三空:return_3该语句是要实现当m=l时的阶乘计算。所以,第三空应填1。【主要考点】递归函数。2、程序改错题【答案及难度指数】(1) Prime (int m)(2 ) if (! (m% j)【起来审题】(1)整数n的素数因子为整除n的所有素数,但不含n本身。索数是指能被1和本身整除的正整数(1),所以判别n是否为素数,只要用2、3这些数逐个去除n,观察余数是否为即可,只要有次相除余数为, n就不是素数,否则n为素数。因此,求整数n的素数因子,要从求整数n的因子和判断该因子是否为素数的两方面来看。(2)从已给定源程序的main主函数开始入手,核心部分是循环判断if(!(n%i) & (Prime),”!(n%i)”为判断i是否是n的因,Prime 白定义函数的功能是判断i是否为素数,&与逻辑是指当两个判断条件都为真的时候,i即为n的素因子。【解题思路】(1)第一个标识下面的“Prime (intm)在程序中显然是个函数,因此应将后面的分号去掉。(2)第二个标识下面的for语句最简单的应用形式为:for (循环变量赋初值;循环条件;循环变量增值)语句。显然if语句后面缺少 括号,因此,if !(m%j)改为if(!(m%j)。该题匸要考查标点符号、运算符、基本定义。【主要考点】if条件语句;函数定义。3、程序设计题【答案及难度指数】int j,k=0z average=0;for(j=0;jn;j+)average+=point j ; /统计总分数average/=n; /求平均分for(j=0;javerage) /逐个判断每个分数是否大于平均分(highk=pointj;/套高于平均分的人放入high数组k+; /统计大于平均分的人数return k;起来审题】(1)该程序功能是返回高于平均分的人数。它的解题思路可以分解为以下儿步:求总分一求平均分一逐个元素与平均分比较统计 髙于平均分的人数。(2)从已给部分源程序的main主函数开始入手,核心函数fun(point.9,high)中的参数由题目可知,point存放着m个人的成绩,high存 放髙于平均分的分数。另外,根据point的定义,可知9为point数组中元素的个数,传给函数fun中的参数n。【解题思路】进入fun函数,根据前面的分析:首先,定义变量average,通过循环,用average+=pointj计算总分数,然后通过average/5;语句来计算平均分。其次,通过循环,让每个分数和平均分比较,髙于平均分数的分数给high (highk=pointj;)在进行以上循环的同时,定义了一 个变量k,每当发现个大于平均分的分数,k白动加1 (k+;)。最后,返回k值,即是数组point。中高于平均分的元素个数。【主要考点】数组操作;if条件语句;for循环语句。第2套上机考试答案解析:1程序填空题【答案及难度指数】(1) n%100!=0 ( 2 ) n%400=0(3) flag【起来审题】(1)该题中函数功能是判断个年份是否为闰年。其中,闰年的条件是年数可以被4整除,即为闰年;被100整除而不能被400整除 的为平年;被100整除也可被400整除的为闰年。(2)从已给部分源程序的main主函数开始入手,主函数中的if(ftin(year)”判断语句,调用函数ftm对年数进行判断。(3)进入fun函数,利用i两年数进行判断。【解题思路】第一空:根据闰年的条件和已有的语句”if(n%4=0)”,知道这里的条件应该是能被4整除但要排除被100整除的整数,所以第一空填 n% 100!=”。第二空:被100整除也可被400整除的为闰年,所以第二空填!!400=0。第三空:主函数中if(fun(year)”语句是对函数返回值的判断,所以fun函数应该将对n的判断的flag值返回,第三空填flag。【主要考点】if条件语句。2、程序改错题【答案及难度指数】(1) s+=l.0/i;(2 ) return s;【起来审题】该题中函数功能是求题干累加公式的值。从己给定源程序的main主函数开始入手,通过printf(nnthe result is%lfn.fun(n);语句调用fun 函数,求得公式值。【解题思路】(1)第一个标识下,在以i为循环参数的for循环中进行公式累加,每项为1.0/i,所以s+=1.0/k;改为s+=1.0/i;。(2)第二个标识下,首先根据题干,将填空删除,函数定义为double fun(intn)”,它有double型的返回值,所以这里返回累加公 式的计算结果,即returns;。【主要考点】函数功能;函数返回。3、程序设计题【答案及难度指数】int j,k=O;for(j=2; jb)?(bx?”表示abx,根据题目要求,则中间值为b,若只是满足第一个?前面的条件,而cb,则选择执行(ac ? c:1一),当ac时取值c,所以ac)?是对a、c的比较选择,第三空处的(bc)?c根据b、c的判断,题冃已经给出了c,所以这里应该是a,这样第 三空中对于b、c的判断选择缺少b,所以这里填b,同样也可以根据第一空的逻辑关系进行分析,来填写第二空和第三空。【主要考点】选择语句。2、程序改错题【答案及难度指数】(1 ) double r;(2) while(fabs(n-m)0.001)【起来审题】(1)该题中函数功能是二分法求方程根。其中,二分法的求根过程,是将含根区间平均分为两个小区间,然后判断哪个区间是含根 区间。在此基础上,将这里的小含根区间进步划分为两个更小的区间,继续判断根所在区间。继续细分下去,含根区间将划分地越来 越小,区间的范围也越来越小。经过多次细分后,就可以将此很小区间的中点近似为方程的极了。(2)从己给定源程序的main主函数开始入手,通过result=fun(m,n);语句调用fun函数求得方程根,其中fun函数对quest函数进行调 用,对根进行判断。【解题思路】(1) fun函数要求返回方程的个根,由return语句来实现,而函数fun是定义为double型的,但第个标识下面的r却被定义为int类 型。所以intr;改为doubler;。(2)检查while循环的控制表达式(fabs(n-m)0.001).【主要考点】变量定义:逻辑关系。3、程序设计题【答案及难度指数】int j=l,i=0,k=0,*s=b;for (j=0;j=y;j+)if (j%2! =0)/判断j是否是奇数(s i = j; /将小于y的奇数存入数组si+;/累加小于y的奇数个数for (j=0;ji;j+)if (y%s j =0) /判断y是否被s j整除(b k =s j ; / /将符合条件的结果存入数组bk+; /累加符合条件的结果个数*m=k;【起来审题】(该程序的解题思路可以分解为以下几步:从0开始逐个求得小于y的奇数一按顺序将这些奇数存入数组一逐个判断该数组中的值 是否能整除y累加能整除y的数值个数一最后按要求传冋结果。由于采取的是按照小于y的所有整数按照j+逐个增加的顺序进行判断并 依次进行存储的思路,所以最后求得的结果是符合要求的,是由小到大排列的。(2)从已给部分源程序的main主函数开始入手,核心函数”ftm(y,a,&m);”,其中m返回这些数的个数,a传给函数中的参数存放计算 结果的数组b。【解题思路】进入firn函数,根据(1)的分析:首先,通过小于y的循环条件,判断小于y的每个整数是否是奇数。其中的判断条件”if(j%2!=0)”,并且累计这些奇数个数i+;”。第4套上机考试答案解析:1、程序填空题【答案及难度指数】(1) m ( 2 ) t j=t m ( 3 ) t m=s【起来审题】(1)该程序功能实现字符串的逆置。把字符串中字符逆置就是把字符串中的第一个元素和最后个元素交换,第二个元素和倒数第 二个元素交换,直到所有的元素交换完成为止。(2)从已给部分源程序的main主函数开始入手,主函数调用fun(b);,通过键盘输入字符串b,作为参数传给函数void fun(char *t) 中的t。(3)进入fun函数,耍想实现逆置,首先要求得字符串的长度。通过m=strlen(t)-l;求得m的值即为字符串的长度。然后通过for循环 对字符串进行置换。【解题思路】第空:for(j=0;jm;j+,1一)根据前面的分析,对字符串的置换是从第个元素和最后一个元素(jm, m是字符串的长度)开始 进行循环交换,从第一个元素j=0开始向后增加为j+,所以从最后个向前减少即为m-,第一空填m。第二空:chars;”用来定义存放临时的字符,的目的是首先用s存放字符串t的第j个字符,这样将第m个字符存放在j的位置, 就首先实现了将后面的第m个字符置换到前面的第j的位置,所以第:空填第三空:前面实现了后面的第m个字符置换到前面的第j个字符,同时将第j个字符的内容存放在临时的字符s,现在就将这个临时字 符s中的内容存放在第m个字符位置,这样就完成了j位置的字符与m位置字符的置换,所以第三空填tm=s.【主要考点】字符数组。2、程序改错题【答案及难度指数】(1) void fun(char *s,char c)(2 ) if(*s=0)(3 ) sl = 0;【起来审题】该题中函数功能首先是查找子串再判断,最后是实现将符合条件的字符串进行连接。从已给定源程序的main主函数开始入手,通过 fun(str,ch);语句调用fun函数,实现题干的要求。【解题思路】(1)第一个标识下,void fun(chars,charc)根据主函数屮的定义,知道s为数组名,传的应该是数组地址,所以应改为void fun(char *s,char c) (2)while循环中对c与s进行匹配检査,第:个标识,是当不同时执行连接操作,那么判断s是否为结尾的表达式应该是if(*s=(r)。(3)第二个标识下,连接后的新串要添加结尾符,所以正确的表达是将sJ=U;改为sl=(y;。【主要考点】函数定义语法;数组操作。3、程序设计题【答案及难度指数】int i/j,s=0;for (j=0; jN; j+)统计行元素(s+=b0j;s+=bM-lj;for (i=l; i=M-2; i + + ) /统计列元素(s+=bi0;s+=biN-1;|return s;【一起来审题】该程序功能是求出二维数组周边元素之和。其中周边元素是指数组的最上和最的两行,最左和最行的两列。数组第一行元素的行 下标为,最后一行元素的行下标为M-1,第一列的列下标为,最后一列的列下标为N-1。【解题思路】进入fun函数,根据前面的分析:求周边元素的和,可以采用两个循环分别把行元素和列元素相加。但要避免把周边元素重复相加。 【主要考点】二维数组;for循环语句。第5套上机考试答案解析:1、程序填空题【答案及难度指数】(1 )&a ( 2 ) a=-a ( 3) %ld,a【起来审题】该题中函数功能是取长整数的绝对值。此类题的解题思路是判断键盘输入的长整数的正负,然后对其进行操作。【解题思路】第一空:获得由键盘输入的长整数,根据C语言提供的标准输入函数scanf函数格式,第一空填第二空:if(al;i-)(for(j=2;j=i) /若是素数,将其存入bbk=i;k+; /累加素数个数)return k+;【一起来审题】该程序功能是求定范围内的素数。素数是只能被1和自身除尽的数。判断i是不是素数最简单的方法就是用2(i-1)去除i,只要 能除尽就不是素数。【解题思路】进入fun函数,根据前面的分析:(1)首先,判断i是否是素数,即是否能被2(i-1)整除。(2)若是素数,就将i存入数组b,并对计数器k加1。(3)最后返回素数的个数k。其中,对丁素数的判断并不只局限丁 I:面提到的方法,也可以采用其他的方法进行判断。【主要考点】数组操作:if条件语句:for循环语句。第6套上机考试答案解析:1程序填空题【答案及难度指数】(1) j=m (2)|(3) 1.0【起来审题】(1)该程序功能是求小于等于m的所有被2或5整除的所有自然数的倒数之和。从己给部分源程序的main主函数开始入手,主函数 f=fun(m);通过键盘输入自然数m,作为参数传给函数double fun(int m)中的m。(2)进入fun函数,首先通过循环对小于m的自然数进行判断,求得所有被2或5整除的自然数,然后求得该自然数的倒数并对其求 和。【解题思路】第一空:for(j=l;1;j+),根据题冃要求,对所有小于等于m的数值进行循环判断,条件应该是满足jv=m,因此第一空应填jv=m。第二空:判断是否能被2或5整除,其屮的判断条件中的或“用逻辑语句应为II”,因此第二空应填II。第三空:toal+=_3。;语句是对满足被2或5整除的自然数”的倒数求和,函数的返回值为double型,所以j的倒数为1.0小因此第三 空应填1.0。【主要考点】逻辑语句。2、程序改错题【答案及难度指数】(1) int fun(int n) (2 ) if(n=l)【起来审题】(1)该题中函数功能是按题目中给出的递归公式求函数值。其中,递归是指函数直接或者间接调用函数本身的种方法。(2)从已给定源程序的main主函数开始入手,从键盘获得输入的参数n,然后通过primf(The result:%dnn”,fun(n);语句调用fun 函数,计算公式的值。【解题思路】(1)定义函数fun时,形参n并没有指定参数类型,因此,int fun(n)改为int fun(int n)。(2)根据题目要求,原题中的if(n=l)应该是用于判断!是否等于1,但是被错误表示成赋值表达式。因此,if(n=D应该改为 if(n=l)o【主要考点】函数定义;逻辑表达式。3、程序设计题【答案及难度指数】char t;int i,j;for (i=l;in-2;i+)/对n个元素进行循环选择for(j=i+l;jn-l;j+)if (str istr j ) /将str设为最大值,和剩下的jn-1进行比较(t=stri;stri=strj;strj-t;)【起来审题】该程序功能是对字符的排序。字符的排序有多种方法,如冒泡排序、选择排序等。本题答案中采用的是选择排序。其中,选择排序 法的降序排序,首先从数组中挑选一个最大的元素,把它和第一个元素交换,接着从剩的!1个元素中再跳出个最大的元素,把它和 第二个元素交换,不断重复以上过程,直到比较完最后两个元素。【解题思路】进入fun函数,根据前面的分析:选择排序法屮的降序排序,首先从数组中挑选个最大的元素,把它和第一个元素交换,接着从剩下的!-1个元素中再挑出个最大的 元素,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。【主要考点】数组操作;函数传值;if条件语句;for循环语句第7套上机考试答案解析:1、程序填空题【答案及难度指数】(1) ab ( 2 ) ac ( 3 ) bc【起来审题】该题中函数功能是把从键盘输入的三个整数按从大到小的顺序输出。本题中函数的实现过程是通过if语句分别对三个整数进行两两 判断。【解题思路】第一空:根据第一空下面的三条赋值语句,可以很淸楚地知道第一个if条件语句中是对a与b进行比较。题干要求对三个数按从大到 小的顺序输出,if下面的交换关系表明,当a小丁b时要对a与b的位置进行交换,所以第一空填ab同理,第二空填ac,第三空填bc。【主要考点】if条件语句。2、程序改错题【答案及难度指数】(1) for(k=2;k=m;k+)(2 ) c-=1.0/(k*k);【起来审题】该程序功能是根据题目要求计算公式。从已给定源程序的main主函数开始入手,printf(nThe result is%lfn”,fun(para);语句中的 fun(para)将参数para传给函数double fun(int m)中的m,实现公式的计算结果。【解题思路】(1)第一个标识下面,foKk=2;km;k+)中的循环条件根据题干中的公式,可以知道要计算的公式屮应包括k=m时的值,所以循 环条件应该改为for(k=2;k=m;k+)。(2)第二个标识下面,因为c被定义为浮点型,k被定义为整型,所以l/(k*k)的计算结果为整型,即c-=l/(k*k);的返回值为整型, 随着k的增加,计算结果一直为0,因此改为c-=l.O/(k*k);。【主要考点】C语言基本语法;变最类型。3、程序设计题【答案及难度指数】long s=0z t;int i=0,j,n=strlen(str),k,sl;/求得字符串长度nif(str0=-)i+;for (j=i;j=n-l;j+)(t=str j -,把字符变成数值sl=10;for(k=j;k=A,& *str=eps)【起来审题】该题中函数功能是根据公式计算“值。从给定源程序的main主函数开始入手,通过键盘输入制定精度,然后通过 printf(neps=%lf.Pi=%lfnn,x,fun(x);”语句来调用fun函数。【解题思路】(1)根据题目中的公式,应该从1开始加。如果temp起始为,结果就少加一个1。又由于temp定义为浮点数,所以,第一个错误标 识下应该将temp=O;改为temp=l.O;。(2)根据题冃知,当精度大于等于给定的精度变量eps时,就会继续进行计算,直到满足精度小于给定的eps,所以,第二个标识下 应该将while(lemp=eps)。【主要考点】变量范围;逻辑关系。3、程序设计题【答案及难度指数】char *p,*tl=t,*sl=str;int n=0,m=0;while (*sl) /计算串str的长度n,其中si为临时指针(n+;sl+;fwhile(*tl) /计算串的长度m,其中1为临时指针(m+;tl+;if (n=m) /比较m和n的值,设置p指向较大的指针p=str;elseP=t;return p;【起来审题】该程序功能是比较两个字符串的长度。解题过程是首先分别求得两个字符串的长度,然后对这两个值进行判断,实现两个字符串长 度的比较。【解题思路】进入fun函数,根据前面的分析:(1)首先求得字符串的长度,设变量n和m分别用来求字符串的长度,初值设为,把字符串中的字符逐个访问,每访问个字符, n和m分别加1,直到字符串结束。(2)使用两个临时指针变量si、U分别作为访问字符串的变量。(3)根据m和n的值返回串,设置指针p,指向返回串的开始地址。【主要考点】指针操作;函数传值;while条件。第9套上机考试答案解析:1、程序填空题【答案及难度指数】(2) d( 2 ) z ( 3 ) z【起来审题】(1)该程序功能是计算1/4的圆周长。从已给部分源程序的main主函数开始入手,主函数通过键盘输入获得圆的直径,通过调用printf 输出语句中fun函数计算1/4的圆周长。2)进入fun函数,根据前面的定义,计算四分之一的圆周长并返回。【解题思路】第一空:return 3.14159*_1_/4.0;”这里根据return知道该语句是返回四分之一的圆周长,根据圆周长公式,很容易知道这里缺 少圆的直径参数,结合函数fun的定义double fiin(double d)”中的参数d,第,空应填d。第二空:scanf(%l 口&-2);是获得由键盘输入的参数值,&是C语言中的求地址运算符。主函数初始定义了参数z,因此 填z。其中,&z为输入项.第三空:printf(=%lAn ”,fun(3一);输出函数fun的计算结果,将直径参数传给函数定义中的d,根据前面的定义和输入,这里 应该填z。【:要考点】函数调用;参数传值。2、程序改错题【答案及难度指数】(1 ) long r=l; (2 ) n/=10;【起来审题】(1)本题中函数的功能是计算正整数各个位上的数字之积。首先要对正整数进行截取,取得该正整数的各个位上的数字,然后对求 得的数进行累积。(2)从己给定源程序的main主函数开始入手,通过键盘输入个正整数m,语句printf(ldn,fun(m);调用fun函数求得m各个 位上的数字之积。【解题思路】(1)第个错误标识下的r是函数的返回值,子函数fun中在执行r*=n%10;之前,只进行了定义,却没有赋初值,编译的时候会指 出在无定义前使用了变量r。r代表了各个位上的数字之积,其初值应为1。因此,第个标识下的longr;改为long匸1;。(2)第二个标识下的符号是非法字符,根据题意,这里应该是进行除法运算,所以n=10;应该改为n/=10;。【在要考点】变量初始化;算术表达式语法。3、程序设计题【答案及难度指数】int i,j=0;*n=0;for(i=l;i=m;i+)if(i%7=0|i%ll=0)bj=i;j+;*n= j;【起来审题】该题是求某范围内能被7或11整除的数。该程序的解题思路可以分解为以下几步;判断是否被7整除一判断或者是否被11整除一按要 求返冋计算结果。【解题思路】进入fun函数,根据前面的分析:(1)数i能否被7或11整除,它的逻辑表达式为(i%7=0lli%n=0)。=a) & (stri=W) & (stri=z)o(2)第二个标识下小写字母转换为大写字母的转换算法有误,小写转换为大写应该是减去32,而不是加上32,所以st巾+=32;改 为str叶32;”。【主要考点】大小写字符之间的转换。3、程序设计题【答案及难度指数】int i;*min=b 0 ; 设置最小值初值*d=0;/设置最小值标志位初值for (i=0;in;i+)if (bi *min) /在循环中,对每个元素与最小值标志值进行比较(*min=bi; /对最小值进行赋值*d=i; 对最小值标志位进行赋值【起来审题】该程序功能是求一维整型数组元素中最小的值和它所在的标。其中,求最小元素的方法:用最小值变量min标记第一个待找数据, 逐个把所有待找数据和min进行比较,并用min标记其当前最小值及其所在位置,从而找出最小值。【解题思路】进入fun函数,根据前面的分析:(1) *min指针变量首先指向数组b的第一个数据,同时将标志位*d初始值赋为0。(2)然后利用for循环对每个当前数组数据与min标记的数据进行比较。(3)循环中将求得的最小数据bi赋值给min,并将该数据项数组标志位赋给标志位d。【主要考点】数组操作;指针操作。第1I套上机考试答案解析:1、程序填空题【答案及难度指数】(1 ) &ni (2) MAXni? ( 3 ) ni!=-1起来审题】(1)该程序功能是使用条件表达式找出最大的整数。从已给部分源程序的main主函数开始入手,主函数执行int i=-l; int MAX=-1;初始化参数定义。(2)进入do-while循环语句从键盘输入整数,并且通过条件表达式找出最大值。【解题思路】第一空:scanf(%d,1);是从键盘输入,取值。根据上一句primf(n%d=,i);输出语句,可知该空应填&ni。第二空:MAX=2ni : MAX;是使用条件表达式判断当前输入的ni和MAX值的大小,根据printf(The MAX=%dn,MAX);循 环外的输出语句,可知MAX用来存储最大值,因此根据条件表达式语法,第二空应填MAXb,首先进行同(1)相同的修改,然后根据题干要求,要进行进制到进制的转换,它的权 值为8,而不是7,因此是n*8而不是n*7,所以此句改为:n=n*8+*s-U;。【主要考点】字符;数制。3、程序设计题【答案及难度指数】int i/j,k=0;double r=0.0;for (j=0; jN; j+) /统计第一行进行统计(r+=b0j;k+;for (j=0; jN; j+) /对第n-1行进行统计(r+=bN-lj;k+;for (i = l; i=N-2; i+) / 对第一列进行统计(r+-bi0;k+;for(i=l; i=N-2; i+) /对第n-1 列进彳计(r+=biN-1;k+;)return r/=k; /求平均数【起来审题】该程序功能是求出数组周边元素的平均值。其屮周边元素是指第一行的元素的行下标为0,或者第n行的元素行下标为n-1,或者第一 列元素的元素列下标为0,或者第n列的元素的列标为I。【解题思路】进入fun函数,根据前面的分析,采用循环分别对符合周边元素条件的元素进行统计求平均值。【主要考点】二维数组:for循环语句。第12套上机考试答案解析:1、程序填空题【答案及难度指数】(1) str j =n),所以第- 空填strjk=N。第二空:根据转换方法的分析,这里是对小写字母的ASCII码减32的操作,所以第二空填32”。第三空:函数fun定义时,返回值为char*,这里是对操作后的字符串的返回,所以这里填str.【主要考点】指针;数组;函数返回值。2、程序改错题【答案及难度指数】(1) if(n%ll=O) | | (n%190) (2 )【起来审题】该题中函数功能是求能被11或19整除的自然数之和。从已给定源程序的main主函数开始入手,priiHf(dn”,fun(300);语句中的fun函 数将300传给n,计算小于300的能被11或19整除的自然数之和。【解题思路】第一个标识下的1代(11%11=0)11(11%19=0)语句应该是判断!I是否能被11或19整除,所以应该用逻辑符号=而不是赋值符号=, 即if(n% 11 =0) II (n%l9=0).(2)第二个标识下,填空明显没有函数结束括号,所以这里应该填。【主要考点】逻辑语法:函数返回值。3、程序设计题【答案及难度指数】int i,j=0,n;n=strlen (str) ;/取字符串str长度for (i=0;in;i+)if(i%2=04&stri%2=0)/判断字符i是否符合条件(s j=stri;/将偶数下标及偶数ASCII码的字符放入新串j+; /新串长度加1s j = 0; /新串添加尾符【起来审题】该程序功能是将字符串中除了标为偶数、ASCII值也为偶数的字符外,其余的全都删除。解题过程利用if条件判断表达式选择符合 条件的字符,然后将符合条件的字符放入指定的字符串。【解题思路】(1)判断个字符串中的某一字符下标i是否为偶数,可用i%2=0来判断,而判断字符中的ASCH码值是否为偶数,则可用 stri%2=0来判定。(2)对串str中各个字符串逐个进行考査,满足条件的字符就顺序放在新串s中,否则就不存放。(3)所有字符处理完后,记得在新串s的末尾加上结束符(T。【主要考点】数组操作:函数传值;if条件语句;for循环语句。第13套上机考试答案解析:1、程序填空题【答案及难度指数】(1) *p(2) j+(3) 0【一起来审题】(1)该程序功能是取出字符串中所有大写字母。(2)从已给部分源程序的main主:函数开始入手,上函数语句fun(str);调用函数fiin实现题目要求。(3)进入fun函数,利用while循环对字符串中的每个字符进行判断。【解题思路】第一空:根据fun函数的定义和while中if判断语句中的表达式,知道这里字符为指针型,即这里填*p。第二空:如果字符p符合条件语句中的表达式,即p为大写字母,将p的值赋于sU,并且计算器j加1,所以第二空填j+”.第三空:対所有字符处理完后,要注意的就是在新字符串s的末尾加上串结束符、:所以第三空填W。【主要考点】while语句;字符串操作。2、程序改错题【答案及难度指数】(2) sum=0 ( 2 ) scanf(%d,&aai j);【起来审题】该题中函数功能是计算元素的和。从已给定源程序的main主函数开始入手,然后通过“ftin。;语句调用fun函数的功能。【解题思路】(1)根据题意计算元素求和,所以函数firn中不仅要有用于存储累加和的变量sum,而且要给sum赋初值。因此,填空处填sum=O。(3) scanf()语句中的实参必须是地址型的,而下标aaij却是整型的变量。因此第二个标识下aaiU”应改为。【主要考点】变量定义;输入函数的语法。3、程序设计题【答案及难度指数】int temp ,min;min=s0;/将数组s的第一个元素s 0 赋于minfor(temp=0;tempt;temp+)if(stempmin)/判断min与数组每个元素的大小(min=s temp ; /将小于min的数组元素赋值给min*result=temp; /Z将结果下标赋彭合指针result【起来审题】(1)该程序功能是求最小元素在数组中的下标。它的解题思路是,用最小值变量min标记第一个待找数据,逐个把所有待找数据和 min进行比较,并用min标记其当前最小值及其所在位置,从而找出最小值。(2)从!给部分源程序的main主函数开始入手,核心函数”fun(slore,l,&result);屮的参数store存放着试题给出的整数,fun函数实现查 找最小元素的下标。【解题思路】进入fun函数,根据前面的分析:函数fun中形参*s”为指针变量,与主函数中的store相对应;的实参值为10;形参*result为指针变量对应resull的值。首先,min赋值给数组s的第一个元素,通过“for(iemp=0;tempt;lemp+)循环将min与s数组中的元素依次比较,求出数组的最小元素 值。本题考点是函数用指针参数返回值。【主要考点】数组操作;指针操作。第14套上机考试答案解析:1、程序填空题【答案及难度指数】(1) ! =( 2 ) s 1 ( 3 ) str, c【起来审题】(1)首先审题,要了解程序要实现的功能,该题中函数功能是判断小S中的某个字符是否与字符ch相同,最后将符合条件的字符进 行连接。(2)进入fun函数,利用while循环对字符串中的每个字符进行判断。【解题思路】第一空:根据题干要求,如果字符Ch和串S中的字符相同什么都不做,根据逻辑这里应该是字符Ch和串S中的字符不同,所以第一空 填”!。第二空:如果没有找到字符ch,则在while循环结束后,s指针指向串的结束符W,此时应将字符ch写入这里,并在下一地址写入一 个串结束符,所以这里应该是“sl/。第三空:根据主函数中的gets(str);、c=getchar();“语句和函数的定义void fun(char *s,char ch)知道函数的调用表达式中fun的参 数应该是str和c,所以第三空填str,c。【主要考点】if条件语句;函数调用。2、程序改错题【答案及难度指数】if ( (i + l)%5=0) 【起来审题】本题函数的功能是对每五个元素求一个平均值。首先要依顺序读取每五个元素,并对这五个元素取平均值。 【解题思路】错误标识下的if判断语句是依顺序取五个字符,if屮的逻辑表达式语法有误,由于1%5恒等于1,所以i+1%5也就等价于i+l了,所以 将if(i+l%5=()改为if(i+l)%5=0),此处主要注意的是运算符的优先级。【主要考点】if条件语句。3、程序设计题【答案及难度指数】int r=0 rtemp,p,sign=l;for(temp=x+l;tempx*x;temp+)/从temp开始循环,判断紧靠temp的整数(for(p=2;p=temp)(if(sum=0)/判断已有的素数个数是否已经满足sum个(select r+ =temp; /将素数temp存入数组selectsum; 将题目中要求的素数个数减1)elsebreak;)【起来审题】(1)该程序功能是取大于整数X且紧靠x的sum个素数。其中,素数是指只能被1和自身除尽的正整数(1),所以判别n是否为素数, 只要用2n-1这些数逐个去除n,判断余数是否为0即可。只要有一次取余的余数为0, n就不是素数,否则n为素数。它的解题思路,可以分解为以下儿步:判断是否为素数判断素数个数是否满足要求一存储素数到指定的数组。(2)从已给部分源程序的main主:函数开始入手,核心函数”fun(x,y,a);”中的参数由题目可知,a存放素数,y为要求的素数个数。 【解题思路】进入fun函数,根据前面的分析:首先,定义、初始化变量sign,作为素数的标志:定义r,初始化为存储素数数组的起始位。然后,每判断一次temp中的值是否为素数后,使temp的值增1,再次对temp中新的值进行判断其是否为素数,不断循环此过程,直到 y的值等于指定的个数,即函数中的sum个数。【主要考点】if条件语句;for循环语句。第15套上机考试答案解析:1、程序填空题【答案及难度指数】(1) score i ( 2 ) high ( 3 ) high i【起来审题】(1)该题中
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!