您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 国家计算机二级C语言110套操作题真题及答案解析
国家计算机二级考试C语言程序设计1下列给定程序中,函数fun的功能是:计算如下公式12222213572462nnsn…-1直到3221102nn,并且把计算结果作为函数值返回。例如,若形参e的值为1e-3,则函数返回值为0.551690。请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!#includestdio.hdoublefun(doublee){inti,k;doubles,t,x;s=0;k=1;i=2;/**********found**********/x=__1__/4;/**********found**********/while(x__2__e){s=s+k*x;k=k*(-1);t=2*i;/**********found**********/x=__3__/(t*t);i++;}returns;}main(){doublee=1e-3;printf(\nTheresultis:%f\n,fun(e));}【参考答案】(1)3.0或(double)3(2)(3)(t+1)【考点分析】本题考查:基本算术运算时的类型转换,其转换规则为:如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致;如果双目运算符两边运算的类型不一致,系统将自动进行类型转换,使运算符两边的类型达到一致后,再进行运算规律见下表。运算数1运算数2转换结果类型短整型大整型短整型→长整型整型大整型整型→长整型字符型整型字符型→整型有符号整型无符号整型有符号整型→无符号整型整型浮点型整型→浮点型while循环语句,一般考查如何根据题意确定循环条件,以及如何通过循环变量变化实现循环操作。【解题思路】填空1:变量x定义为double类型,而运算符/后面是整型数,所以给x赋值时,需要注意数据类型,此处不能将3.0写成3。填空2:while循环语句的循环条件,根据题意确定循环变量应大于1e-3,因此此处应填。填空3:表达式的通项是(2*i+1)/(2*i)2,由于程序中已定义t=2*i,所以此处应该填写(t+1)。【解题宝典】本题填空1还可以运用强制类型转换来实现。强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符)(表达式)。其功能是:把表达式的运算结果强制转换成类型说明符所表示的类型。例如:(float)a把a转换为实型(int)(x+y)把x+y的结果转换为整型国家计算机二级考试C语言程序设计1下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。和值通过函数值返回。23581321,,,,,,1235813…例如,若n=5,则应输出8.391667。请改正程序中的错误,使其得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#includestdio.h/************found************/voidfun(intn){inta,b,c,k;doubles;s=0.0;a=2;b=1;for(k=1;k=n;k++){/************found************/s=s+(Double)a/b;c=a;a=a+b;b=c;}returns;}main(){intn=5;printf(\nThevalueoffunctionis:%lf\n,fun(n));}【参考答案】(1)doublefun(intn)(2)s=s+(double)a/b;【考点分析】本题考查:函数定义,函数定义的一般形式为:类型标识符函数名(形式参数表列),其中类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型。【解题思路】(1)由语句return(s)和变量s定义为double数据类型可知,该函数定义时其类型标识符为double类型。(2)注意数据类型double的书写格式。【解题宝典】确定函数类型标识符在填空和改错题中经常考到,如果函数没有返回值,则函数定义为void型;如果函数有返回值,则函数类型应与返回值类型一致;如果不定义函数类型标识符,则系统默认为int型。国家计算机二级考试C语言程序设计1请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#includestdio.h#defineM4intfun(inta[][M]){}main(){intarr[2][M]={5,8,3,45,76,-4,12,82};voidNONO();printf(max=%d\n,fun(arr));NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*wf;intarr[][M]={5,8,3,90,76,-4,12,82};wf=fopen(out.dat,w);fprintf(wf,max=%d\n,fun(arr));fclose(wf);}【参考答案】intfun(inta[][M]){inti,j,max=a[0][0];for(i=0;i2;i++)for(j=0;jM;j++)if(maxa[i][j])max=a[i][j];returnmax;}【考点分析】本题考查:求数组的最大值,需要运用循环语句,因为数组是二维数值,所以应使用二层加for循环嵌套。使用for循环语句时需要注意循环变量的取值范围。【解题思路】此类求最大值或最小值的问题,我们可以采用逐个比较的方式,要求对数组中所有元素遍历一遍,并且从中找出数组最大值或最小值。首先定义变量max存放数组中的第一个元素的值,然后利用for循环逐个找出数组中的元素,并与max比较,如果元素值大于max,则将该值赋于max,循环结后max的值即为数组最大值,最后将该值返回。【解题宝典】该类题目考查较多,要掌握逐行比较的方法。对于m*n二维数组,如采用逐行查找方法,代码实现为:for(i=0;im;i++)for(j=0;jn;j++)……国家计算机二级考试C语言程序设计2下列给定程序中,函数fun的功能是:计算如下公式前n项的和并作为函数值返回。222221(21)1335572462nnsn…例如,当形参n的值为10时,函数返回值为9.612558。请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!#includestdio.hdoublefun(intn){inti;doubles,t;/**********found**********/s=__1__;/**********found**********/for(i=1;i=__2__;i++){t=2.0*i;/**********found**********/s=s+(2.0*i-1)*(2.0*i+1)/__3__;}returns;}main(){intn=-1;while(n0){printf(Pleaseinput(n0):);scanf(%d,&n);}printf(\nTheresultis:%f\n,fun(n));}【参考答案】(1)0(2)n(3)(t*t)【考点分析】本题考查:变量初始化操作,需要注意该变量是用作累加器还是累乘器;for循环语句。【解题思路】填空1:程序开始定义了变量s,但没有对其进行初始化,根据公式及后面的程序可知变量s用来存储公式的前n项和,因此该变量应初始化为0。填空2:通过for循环语句将表达式各项进行累加,结果存于变量s中,循环变量i的取值范围为1~n。填空3:根据题目要求确定表达式通项,前面已定义t=2.0*i,因此此空应填(t*t)。【解题宝典】程序要求计算表达式值时,一般我们都设定一个变量s,并赋初值,如果s用来存放表达式的和,则赋初值为0;如果s用来存放表达式的积,则赋初值为1。国家计算机二级考试C语言程序设计2下列给定程序中函数fun的功能是:统计substr所指的子符串在str所指的字符串中出现的次数。例如,若字符串为aaas1kaaas,子字符串为as,则应输出2。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!#includestdio.hintfun(char*str,char*substr){inti,j,k,num=0;/************found************/for(i=0,str[i],i++)for(j=i,k=0;substr[k]==str[j];k++,j++)/************found************/If(substr[k+1]=='\0'){num++;break;}returnnum;}main(){charstr[80],substr[80];printf(Inputastring:);gets(str);printf(Inputasubstring:);gets(substr);printf(%d\n,fun(str,substr));}【参考答案】(1)for(i=0;str[i];i++)(2)if(substr[k+1]=='\0')【考点分析】本题考查:for循环语句的格式,for循环语句使用最为灵活,其一般形式为:for(表达式1;表达式2;表达式3),注意表达式之间使用;相隔;if条件语句的格式,其中if关键字需要区别大小写,这里不能混淆使用。关键字是由C语言规定的具有特定意义的字符串,也称为保留字。用户定义的标识符不应与关键字相同,并且关键字应小写。【解题思路】我们先看循环条件for(i=0,str[i],i++),不难发现此处for循环语句的格式有误,其中表达式之间应以;相隔;同时很容易发现if条件语句处的关键字书写错误。国家计算机二级考试C语言程序设计2编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。1121231234121233535735793521nn…………程序运行后,若输入精度0.0005,则程序应输出为3.14…。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#includestdio.h#includemath.hdoublefun(doubleeps){}main(){doublex;voidNONO();printf(Inputeps:);scanf(%lf,&x);printf(\neps=%lf,PI=%lf\n,x,fun(x));NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti;doublex;fp=fopen(in.dat,r);wf=fopen(out.dat,w);for(i=0;i10;i++){fscanf(fp,%lf,&x);fprintf(wf,%lf\n,fun(x));}fclose(fp);fclose(wf);}【参考答案】doublefun(doubleeps){doubles=1.0,s1=1.0;intn=1;while(s1=eps)/*当某项大于精度要求时,继续求下一项*/{s1=s1*n/(2*n+1);/*求多项式的每一项*/s=s+s1;/*求和*/n++;}return2*s;}【
本文标题:国家计算机二级C语言110套操作题真题及答案解析
链接地址:https://www.777doc.com/doc-5892486 .html