您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > C语言试题学习考试大全1
下列给定程序中,函数fun的功能是计算如下公式12222213572462nnsn…-1直到3221102nn,并且把计算结果作为函数值返回。例如,若形参e的值为1e-3,则函数返回值为0.551690。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。和值通过函数值返回。23581321,,,,,,1235813…例如,若n=5,则应输出8.391667。请改正程序中的错误,使其得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。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));}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));}PROG1.C#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);}参考答案】(1)doublefun(intn)(2)s=s+(double)a/b;【考点分析】本题考查:函数定义,函数定义的一般形式为:类型标识符函数名(形式参数表列),其中类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型。【解题思路】(1)由语句return(s)和变量s定义为double数据类型可知,该函数定义时其类型标识符为double类型。(2)注意数据类型double的书写格式。【解题宝典】确定函数类型标识符在填空和改错题中经常考到,如果函数没有返回值,则函数定义为void型;如果函数有返回值,则函数类型应与返回值类型一致;如果不定义函数类型标识符,则系统默认为int型。参考答案】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++)……下列给定程序中,函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,接着把a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3],以此类推。例如,若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7;则按规则移动后,数据排列为:1、9、2、8、3、7、4、6、5。形参n中存放a所指数组中数据的个数。规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不行更改程序的结构!下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、……例如,若给n输入7,则该项的斐波拉契数值为13。请改正程序中的错误,使它能得出正确结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。BLANK1.C#includestdio.h#defineN9voidfun(inta[],intn){inti,j,max,min,px,pn,t;for(i=0;in-1;i+=2){/**********found**********/max=min=___1___;px=pn=i;for(j=i+1;jn;j++){/**********found**********/if(max___2___){max=a[j];px=j;}/**********found**********/if(min___3___){min=a[j];pn=j;}}if(pn!=i){t=a[i];a[i]=min;a[pn]=t;if(px==i)px=pn;}if(px!=i+1){t=a[i+1];a[i+1]=max;a[px]=t;}}}main(){intb[N]={9,1,4,2,3,6,5,8,7},i;printf(\nTheoriginaldata:\n);for(i=0;iN;i++)printf(%4d,b[i]);printf(\n);fun(b,N);printf(\nThedataaftermoving:\n);for(i=0;iN;i++)printf(%4d,b[i]);printf(\n);}MODI1.C#includestdio.hlongfun(intg){/**********found**********/switch(g);{case0:return0;/**********found**********/case1;case2:return1;}return(fun(g-1)+fun(g-2));}main(){longfib;intn;printf(Inputn:);scanf(%d,&n);printf(n=%d\n,n);fib=fun(n);printf(fib=%d\n\n,fib);}PROG1.C#includestdio.h#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voidfun(STREC*a){}main(){STRECs={GA005,85.5,76,69.5,85,91,72,64.5,87.5};inti;voidNONO();fun(&s);printf(The%s'sstudentdata:\n,s.num);for(i=0;iN;i++)printf(%4.1f\n,s.s[i]);printf(\nave=%7.3f\n,s.ave);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*out;inti,j;STRECs[10]={{GA005,85.5,76,69.5,85,91,72,64.5,87.5},{GA001,82.5,66,76.5,76,89,76,46.5,78.5},{GA002,72.5,56,66.5,66,79,68,46.5,58.5},{GA003,92.5,76,86.5,86,99,86,56.5,88.5},{GA004,82,66.5,46.5,56,76,75,76.5,63.5},{GA006,75.5,74,71.5,85,81,79,64.5,71.5},{GA007,92.5,61,72.5,84,79,75,66.5,72.5},{GA008,72.5,86,73.5,80,69,63,76.5,53.5},{GA009,66.5,71,74.5,70,61,82,86.5,58.5},{GA010,76,66.5,75.5,60,76,71,96.5,93.5},};out=fopen(out.dat,w);for(i=0;i10;i++){fun(&s[i]);fprintf(out,%7.3f\n,s[i].ave);}fclose(out);}参考答案】(1)a[i](2)a[j](3)a[j]【考点分析】本题考查:数组的引用;if语句条件表达式,如果表达式的值为真,则执行下面的语句,如果该值为假,则不执行下面的语句。【解题思路】填空1:for循环语句循环体中将数组元素a[i]赋值给变量max和变量min。填空2:通过一次for循环,找到数组中的最大值,if语句的条件表达式是maxa[j]。填空3:同理,此处if语句的条件表达式是mina[j]。【解题宝典】求最大值或者最小值的题目,一般都是假设一个元素最大或最小,然后通过if条件语句将该元素和其他元素进行比较操作来完成。【参考答案】(1)去掉分号(2)case1:case2:return1;【考点分析】本题考查:switch语句,其一般形式为:switch(表达式){case常量表达式1:语句1;case常量表达式2:语句2;……case常量表达式n:语句n;default:语句n+1;}其中switch(表达式)后不应该带有;,同时case语句常量后应该是:。【解题思路】C语言中,switch语句之后不能有分号,并且case语句常量后应用的是冒号。参考答案】oidfun(STREC*a){doubleave=0.0;inti;for(i=0;iN;i++)a-ave=a-ave+a-s[i];/*求各门成绩的总和*/a-ave/=N;/*求平均分*/}【考点分析】本题考查:结构体类型成员
本文标题:C语言试题学习考试大全1
链接地址:https://www.777doc.com/doc-2908533 .html