c语言上机试题.pdf
《c语言上机试题.pdf》由会员分享,可在线阅读,更多相关《c语言上机试题.pdf(97页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、全国及四川二级C语言上机题目第一套-、填空题请补充f u n函数,f u n函数的功能是求m的阶乘。请勿改动主函数ma i n与其他函数中的任何内容,仅在f u n函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#i nclu d e long f u n(i nt m)(i f(1 )r e t u r n(m*f u n(_2 _);r e t u r n _3 _;)ma i nO(p r i nt f(8!=%ld n,f u n(8):二、改错题下列给定程序的功能是:读入 个整数n(2 WnW5 0 0 0),打印它的所有为素数的因子。例如,若输入整数1 2 3 4
2、,则应输出:2、6 1 70请修改程序中的错误,使程序能得出正确的结果。注意:不要改动ma i n函数,不能增行或删行,也不能更改程序的结构。#i nclu d e#i nclu d e /*e r r or*/Pr i me(i nt m);i nt j,p;P=l;/*e r r or*/f or(j=2;j m;j+)i f!(m%j)(p=0;br e a k;)r e t u r n(p);ma i nO(i nt i,n;p r i nt f(*np le a s e e nt e r a n i nt e g e r nu mbe r be t w e e n 2 a nd 5
3、0 0 0:);sc an f&n);p r i nt f (,znnTh c p r i me f a ct or (s)of%d i s (a r e):n);f or(i=2;i n;i+)i f(!(n%i)&(Pr i me(i)p r i nt f (%4 d,”,i);p r i nt f(n);)三、编程题数组p oi nt 中存放着m个人的成绩,请编写函数f u n,它的功能是:返回高于平均分的人数,并将高于平均分的分数放在h i g h 所指的数组中。例如,当p oi nt 数组中的数据为5 0、6 0、6 5、7 0、7 5、8 0、8 8、9 0、9 5 时,函数返回的
4、人数应该是5,h i g h中的数据应为7 5、8 0、8 8、9 0、9 5。请勿改动主函数ma i n与其他函数中的任何内容,仅在函数f u n的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#i nclu d e#i nclu d e#i nclu d e i nt f u n(i nt p oi nt,i nt n,i nt h i g h)(ma i n()(i nt j,m,h i g h 9;i nt p oi nt 9 =5 0,6 0,6 5,7 0,7 5,8 0,8 8,9 0,9 5;FILE*ou t;m=f u n(p oi nt,9,h i g h);p
5、 r i nt f(nHi g h t h e a v e r a g e p oi nt a r e :);ou t=f op e n(/zou t f i le.d a t ,w );f or(j=0;j l(2)m-1 (3)1【一起来审题】(1)该程序功能是对阶乘的实现。其中,阶乘的手算公式定义为:-m!=m*(m-l)*(m-2)*1 mlm l时,应该用什么程序来实现阶乘的计算:二是当m=l 时,函数直接返回1 即可。【解题思路】第一空:i f(1 )是要根据m的取值来判断使用何种阶乘的计算公式的。这里根据第2 句递归调用语句,可知该语句是用来计算当时的阶乘。因此第一空i f 语句
6、里面的条件应该是满足m l。所以,第一空应填m l。第二空:r e t u r n (m*f u n(2)很显然是采用递归函数来实现阶乘的计算,所以,第二空应填mT。第三空:r e t u r n _ 3 该语句是要实现当时的阶乘计算。所以,第三空应填1。【主要考点】递归函数。二、改错题【答案及难度指数】(1)P r i m e(i n t m)(2)i f(!(r e j)【起来审题】(1)整数n 的素数因子为整除n 的所有素数,但不含n 本身。素数是指能被1 和本身整除的正整数(1),所以判别n 是否为素数,只要用2、3、n T 这些数逐个去除n,观察余数是否为0即可,只要有次相除余数为0
7、,n 就不是素数,否则n 为素数。因此,求整数n 的素数因子,要从求整数n 的因子和判断该因子是否为素数的两方面来看。(2)从已给定源程序的m a i n 主函数开始入手,核心部分是循环判断i f (!(n%i)&(P r i m e(i),!(n%i)为判断i 是否是n 的因子,P r i m e 自定义函数的功能是判断i 是否为索数,&与逻辑是指当两个判断条件都为真的时候,i 即为n 的素因子。【解题思路】(1)第一个标识下面的P r i m e (i n t m);在程序中显然是一个函数,因此应将后面的分号去掉。(2)第二个标识下面的f o r 语句最简单的应用形式为:f o r (循环
8、变量赋初值;循环条件;循环变量增值)语句。显然i f 语句后面缺少括号,因此,i f !(瞰J)改为i f(!(m%j)。该题主要考查标点符号、运算符、基本定义。【主要考点】i f 条件语句;函数定义。三、编程题【答案及难度指数】i n t j,k=0,a v e r a ge=0;f o r(j=0;j n;j+)a v c r a ge+=po i n t j ;统计总分数a v e r a ge/=n;/求平均分f o r(j=0;j a v e r a ge)逐个判断每个分数是否大于平均分(h i gh k =po i n t j ;将高于平均分的人放入h i gh 数组k+;统计大于
9、平均分的人数)r e t u r n k;【一起来审题】(1)该程序功能是返回高于平均分的人数。它的解题思路可以分解为以下几步:求总分一求平均分一逐个元素与平均分比较一统计高于平均分的人数。(2)从已给部分源程序的m a i n 主函数开始入手,核心函数f u n (po i n t,9,h i gh)中的参数由题目可知,po i n t存放着m 个人的成绩,h i gh 存放高于平均分的分数。另外,根据po i n t 的定义,可知9为po i n t 数组中元素的个数,传给函数f u n 中的参数n。【解题思路】进入f u n 函数,根据前面的分析:首先,定义变量a v e r a ge,
10、通过循环,用a v e r a ge+二 po i n t j 计算总分数,然后通过a v e r a ge/二 n;语句来计算平均分。其次,通过循环,让每个分数利平均分比较,高于平均分数的分数给h i gh 口 (h i gh k =po i n t j ;)o在进行以上循环的同时,定义了一个变量匕每当发现一个大于平均分的分数,k 自动加1 (k+;)。最后,返回k 值,即是数组p o i n t 口中高于平均分的元素个数。【主要考点】数组操作;i f 条件语句;f o r 循环语句。第二套一、填空题请补充f u n 函数,该函数的功能是:判断一个年份是否为闺年。例如,2 0 0 7 年不是
11、闰年,2 0 0 8 是闰年。请勿改动主函数m a i n 与其他函数中的任何内容,仅在f u n 函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#i n c l u d e#i n c l u d e i n t f u n(i n t n)i n t f l a g=0;i f(n%4=0)i f(1 )f l a g=l;i f(2 )f l a g=l;r e t u r n _ _3 _ _ _;m a i n ()(i n t y e a r;p r i n t f(I n p u t t h e y e a r:);s c a n f(%d,&y e a r)
12、;i f(f u n(y e a r)p r i n t f C%d i s a l e a p y e a r.n,y e a r);e l s ep r i n t f r%d i s n o t a l e a p y e a r.n ,y e a r i ;二、改错题下列给定程序中,f u n 函数的功能是:根据形参n,计算如下公式的值。例如,若输入5,则应输出2.2 8 3 3 3。请修改程序中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。注意:不要改动m a i n 函数,不能增行或删行,也不能更改程序的结构。#i n c l u d e#i n c l u
13、d e d o u b l e f u n(i n t n)(d o u b l e s=l.0;i n t i;/*e r r o r*/f o r(i=2;i =n;i+)s+=l.0/k;/*e r r o r*/填 空)m a i n()(i n t n;p r i n t f(X n p l e a s e e n t e r 1 i n t e g e r n u m b e r s:n);s c a n f (%d ,&n);p r i n t f C n n t h e r e s u l t i s%l f n*,f u n(n);)三、编程题请编写函数f u n,它的功能是
14、:求出1 到5 0 0 之内能被7 或1 1 整除,但不能同时被7 和1 1 整除的所有整数,并将它们放在b 所指的数组中,通过m 返回这些数的个数。请勿改动主函数m a i n 与其他函数中的任何内容,仅在函数f u n 的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#i n c l u d e#i n c l u d e v o i d f u n (i n t *b,i n t *m)()m a i n ()i n t a 5 0 0,m,i;FI L E *o u t;f u n (a,&m);o u t=f o p e n(o u t f i l e.d a t,w);f
15、 o r (i=0;i m;i+)i f(i+l)%1 0=0)(p r i n t f (,/%5 d n,,a i);f p r i n t f (o u t,d n,a i);e l s e(p r i n t f (5 d,a i);f p r i n t f (o u t,%d,a i);)f c l o s e(o u t);)答案一、填空题【答案及难度指数】(1)n%1 0 0!=0 (2)n%40 0=0 (3)f l a g【一起来审题】(1)该题中函数功能是判断一个年份是否为闰年。其中,闰年的条件是年数可以被4整除,即为闰年;被1 0 0 整除而不能被40 0 整除的为平年
16、;被1 0 0 整除也可被40 0 整除的为闰年。(2)从已给部分源程序的m a i n 主函数开始入手,主函数中的 i f (f u n (y e a r)判断语句,调用函数f u n 对年数进行判断。(3)进入f u n 函数,利用i f 对年数进行判断。【解题思路】第一空:根据闰年的条件和已有的语句“i f(n%4=0),知道这里的条件应该是能被4整除但要排除被1 0 0 整除的整数,所以第一空填限1 0 0!二 0”。第二空:被1 0 0 整除也可被4 0 0 整除的为闰年,所以第二空填n%4 0 0=0 第三空:主函数中 i f(f u n(y e a r)语句是对函数返回值的判断,
17、所以f u n函数应该将对n的判断的门a g值返回,第三空填f l a g”。【主要考点】i f 条件语句。二、改错题【答案及难度指数】(1)s+=l.0/i;(2)r e t u r n s;起来审题】该题中函数功能是求题干累加公式的值。从已给定源程序的m a i n主函数开始入手,通过pr i nt f(n nt h er e s u l t i s%l f n,f u n(n)语句调用f u n函数,求得公式值。【解题思路】(1)第一个标识下,在以i 为循环参数的f or 循环中进行公式累加,每一项为1.0/i,所以 s+=L0/k;改为“s+:1.0/i;(2)第二个标识下,首先根据题
18、干,将填空删除,函数定义为d ou b l e f u n(i nt n),它有d ou b l e 型的返回值,所以这里返回累加公式的计算结果,即“r e t u r n s;。【主要考点】函数功能;函数返回。三、编程题【答案及难度指数】i nt j,k=0;f or(j=2;j 50 0;j+)循环条件i f(j%7=0|I j%l l=0)&j%77!=0)判断是否符合题干要求b k+=j;将结果放入数组b*m=k;将累加器值赋值给m【一 起来审题】(1)该程序的解题思路,可以分解为以下儿步:判断是否被7整除一判断或者是否被1 1 整除f并且不被77整除f按要求返回计算结果。(2)从已给
19、部分源程序的m a i n主函数开始入手,核心函数f u n(a,&m);,其中m 返回这些数的个数,a 传给函数中的参数,存放计算结果的数组b。【解题思路】进入f u n函数,根据前面的分析:首先,定义变量k,设置为累计器,计算符合条件的数的个数。然后,通过循环,判断小于50 0 的每一个整数是否符合题干中的要求。其中的判断条件能否被7或者被1 1 整除为j%7=0 j%l l=0,不能被1 1 和7同时整除为j%77!=0,它们之间的并关系就用&连接,最后结果即为(j%7=0|j%U=0)&j%77!=0 o最后,将符合条件的整数存入数组b 中,同时对k 进行自加,将k 值赋给m,返回结果
20、。【主要考点】数组操作;函数传值;i f 条件语句;f or 循环语句。第三套一、填空题函数f u n的功能是:从三个形参x、y、z 中找出中间的那个数,作为函数值返回。例如,当x=1 2 1,y=4 56,z=3 3 3 时,中间的数为3 3 3。请勿改动主函数m a i n与其他函数中的任何内容,仅在f u n函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。#i nc l u d e i nt f u n(i nt a,i nt b,i nt c)(i nt t e m p;t e m p=(a b)?(b c?b :(a c?c :_ _ _ 1 _ _ _):(a c
21、)?2:(b c)?c :3 _);re turn te m p;)m a i n O(i n t x=1 2 1,y=4 5 6,z=3 3 3,m i d;m i d=f un(x,y,z);pri n tf (X n Th e m i d d l e n um b e r i s:%d n”,m i d);)二、改错题下列给定程序中,函数f un 和que st的功能是:用二分法求方程2 x3-4 x、3 x-6=0 的一个根,并要求绝对误差不超过0.0 0 1。例如,若给m 输入-5 0,给n 输入3 0,则函数求得的一个根值为2.0 0 0。清修改程序中的错误,得出正确的结果。注意:
22、不要改动m a i n 函数,不能增行或删行,也不能更改程序的结构。#i n c l ud e#i n c l ud e d o ub l e que st(d o ub l e x)(re turn (2*x*x*x-4*x*x+3*x-6);d o ub l e f un(d o ub l e m,d o ub l e n)(/*e rro r*/i n t r;r=(m+n)/2;/*e rr()r*/wh i l e(f a b s(n-m)0.0 0 1)i f (que st(r)*que st(n)0)m=r;e l sen=r;r=(m+n)/2;re turn r;)m a
23、i n()(d o ub l e m,n,re sul t;pri n tf(P l e a se i n put m n :n);sc a n f&m,&n);re sul t=f un(m,n);pri n tf(re sul t=%6.3 f n”,re sul t);三、编程题请编写函数vo i d f un(i n t y,i n t b ,i n t*m),它的功能是:求出能整除y且是奇数的各整数,并按从小到大的顺序放在b 所指的数组中,这些除数的个数通过形参m 返回。例如,若y中的值为9 0,则有4 个数符合要求,它们是1、3、5、9、1 5、4 5。请勿改动主函数m a i n
24、 与其他函数中的任何内容,仅在函数f un 的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#i n c l ud e#i n c l ud e vo i d f un(i n t y,i n t b ,i n t*m)(m a i n ()(i n t y,a 5 0 0 ,m,j;FI L E *o ut;pri n tf (*X n P l e a se i n put a n i n te g e r n um b e r:n,z);sc a n f&y);f un(y,a,&m);f o r(j=0;j m:j+)pri n tf(*%d ”,a j );pri n tf(
25、n);f un (7 3 0,a,&m);o ut=f o pe n(o utf i l e.d a t,w);f o r(j=0;j b)?(b c?表示a b c,根据题目要求,则中间值为b,若只是满足第一个”?前面的条件,而c b,则选择执行(a c?c :1 当a c 时取值c,所以a c 时中间值为a,所以第一空填飞.第二空:语句(a c)?是对a、c 的比较选择,第三空处的(b c)?c 根据b、c 的判断,题目已经给出了c,所以这里应该是a,这样第三空中对于b、c 的判断选择缺少b,所以这里填b ,同样也可以根据第一空的逻辑关系进行分析,来填写第二空和第三空。【主要考点】选择语句
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 试题
限制150内