份二级C语言填空题.docx
《份二级C语言填空题.docx》由会员分享,可在线阅读,更多相关《份二级C语言填空题.docx(71页珍藏版)》请在冰豆网上搜索。
份二级C语言填空题
2013年9月21日二级C语言
“无纸化”考试“填空题”复习资料
填空题复习方法:
1、填空题占“无纸化”考试中的18分,一般情况下有3个空,每个空6分。
经过总结和分析,这些题目可以根据“考点”进行分类,各位考生将下面的题目认真理解并准确记忆,则填空题中的18分一般可以轻松拿下。
2、做填空题,必须注意以下几点:
(1)读题目。
注意关键词和函数返回内容,例如:
“从小到大排序”、“将a的值赋值给b”等,这些提示可以让考生快速的分析出要填入的空。
(2)注意上下行的程序,因为有的答案就来自下一行的代码。
例如:
“交换的格式”就可以从上下行得到。
(3)必须重点分析:
函数调用、函数定义首部和函数返回值,这些部分考试常考。
(4)有的空比较难,因此考生只能死记,这个不要太纠结。
3、下面所列举的题目,对做题没有影响的代码已经省略,考生只用分析剩余代码即可将题目做出。
一、数学公式类题目
该类题目的分析、做题方法:
(1)首先,看公式中的“通项”(注意:
一般是公司中的最后一项)。
(2)其次,确定循环变量i的范围,很多时候都是1到n,不过也有2到n的情况,考生要注意。
(3)最后,看返回值。
如果返回的是和,则求和变量sum要赋初值为0;返回的是个数,则求个数变量cnt要赋初值为0;返回积,则求积变量要赋初值为1。
注意:
输入小括号的时候必须是英文状态下的小括号,如果是中文状态下的小括号,则不能得分。
6、计算下列式前n项的和作为函数返回值。
doublefun(intn)
{inti;doubles,t;
/**********found**********/
s=__1__;填入:
0。
因为s是求和变量。
/**********found**********/
for(i=1;i<=__2__;i++)填入:
n。
因为循环的范围
{t=2.0*i;是1到n。
/**********found**********/
s=s+(2.0*i-1)*(2.0*i+1)/__3__;填入:
(t*t)。
此处计算s
}的和,通项中缺少了分母,
returns;根据公式可知应填入(t*t)
}记住不能缺少小括号。
main()
{intn=-1;
printf("\nTheresultis:
%f\n",fun(n));
}
25、给定程序中,函数fun的功能是计算下式
doublefun(doublee)
{inti;doubles,x;
/**********found**********/
s=0;i=__1__;填入:
0。
此处很多考生容易填入1,
x=1.0;和第2个空联系起来,则只能填入0
while(x>e){
/**********found**********/
__2__;填入:
i++。
循环中必定有i++,不过
一般都是在循环体中的最后,此题比较
特殊,在前面。
如果将i++放到s=s+x;
语句后面,则第一个空就只用填i=1。
/**********found**********/
x=(2.0*i-1)/((__3__)*(2.0*i));填入:
2.0*i。
此处计算通
s=s+x;项x的值,通项缺少分母,
}根据公式可知应填入2.0*i。
returns;
}
main()
{doublee=1e-3;
printf("\nTheresultis:
%f\n",fun(e));
}
29、
doublefun(intn)
{inti,k;doubles,t;
s=0;
/**********found**********/
k=__1__;填入:
1。
for(i=1;i<=n;i++){
/**********found**********/
t=__2__;填入:
2.0*i。
s=s+k*(2*i-1)*(2*i+1)/(t*t);
/**********found**********/
k=k*__3__;填入:
-1。
}
returns;
}
main()
{intn=-1;
printf("\nTheresultis:
%f\n",fun(n));
}
36、给定程序中,函数fun的功能是计算下式
例如:
若形参e的值为1e-3,函数的返回值为0.551690。
doublefun(doublee)
{inti,k;doubles,t,x;
s=0;k=1;i=2;
/**********found**********/
x=__1__/4;填入:
3。
/**********found**********/
while(x__2__e)填入:
>。
{s=s+k*x;
k=k*(-1);
t=2*i;
/**********found**********/
x=__3__/(t*t);填入:
(t+1)。
i++;
}
returns;
}
main()
{doublee=1e-3;
printf("\nTheresultis:
%f\n",fun(e));
}
最新热门考题1:
doublefun(doublex)
{doublef,t;intn;
f=1.0+x;
/**********found**********/
t=___1___;填入:
1。
n=1;
do{
n++;
/**********found**********/
t*=(-1.0)*x/___2___;填入:
n。
f+=t;
}
/**********found**********/
while(___3___>=1e-6);填入:
fabs(t)。
fabs(t)求t的
returnf;绝对值。
要求计算绝
}对值。
main()
{doublex,y;
x=2.5;
y=fun(x);
}
最新热门考题2:
doublefun(doublex,intn)
{doublef,t;inti;
/**********found**********/
f=___1___;填入:
1。
公式中第一项1很特殊,
t=-1;通项中假设n的值为1,则第1项
for(i=1;i{注意:
如果i从2开始,则f=1+x
/**********found**********/
t*=(___2___)*x/i;填入:
-1.0。
/**********found**********/
f+=___3___;填入:
t。
}
returnf;
}
main()
{doublex,y;
x=2.5;
y=fun(x,15);
}
最新热门考题3:
doublefun(doublex)
{doublef,t;intn;
/**********found**********/
f=1.0+___1___;填入:
x。
因为n=1,并且在循环
t=x;体中先执行n++,因此相关于n
n=1;的值从2开始。
do{
n++;
/**********found**********/
t*=x/___2___;填入:
i。
/**********found**********/
f+=___3___;填入:
t。
}while(fabs(t)>=1e-6);
returnf;
}
main()
{doublex,y;
x=2.5;
y=fun(x);
}
最新热门考题4:
doublefun(doublex,intn)
{doublef,t;inti;
f=1.0;
/**********found**********/
t=___1___;填入:
1。
/**********found**********/
for(i=___2___;i1。
{
/**********found**********/
t*=x/___3___;填入:
i。
f+=t;
}
returnf;
}
main()
{doublex,y;
x=2.5;
y=fun(x,12);
}
二、整数类型题目(题目简单,用对比法进行复习效果最好)
该类题目的重点考点:
(1)如果返回的是和,则求和变量sum要赋初值为0;返回的是个数,则求个数变量cnt要赋初值为0;返回积,则求积变量要赋初值为1。
(2)一个整数n:
n%10的结果为个位,n/10结果为去掉个位。
例如:
123%10结果为3,123/10结果为12。
1、函数的功能:
找出100~999之间(含100和999)所有整数中各位数字之和为x的整数,符合条件的个数作为函数值返回。
fun(intx)
{intn,s1,s2,s3,t;
n=0;
t=100;
/**********found**********/
while(t<=__1__){填入999。
/**********found**********/
s1=t%10;s2=(__2__)%10;s3=t/100;
填入:
t/10
/**********found**********/
if(s1+s2+s3==__3__)填入:
x
{printf("%d",t);
答案分析:
(1)题目要求找出100~999之间的整数,t被赋值为100,因此第一个空填入999。
(2)题目要求各位数字之和,s1=t%10得到个位,
s2=(t/10)%10;得到十位,s3=t/100得到百位。
(3)各位数字之和为x的整数,因此第三个空填入x。
n++;
}
t++;
}
returnn;
}
main()
{intx=-1;
printf("\nTheresultis:
%d\n",fun(x));↑
}
2、函数的功能:
找出100至x(x<=999)所有整数中各位章数字之和为15的整数,符合条件的个数作为函数值返回。
fun(intx)
{intn,s1,s2,s3,t;
/**********found**********/
n=__1__;填入:
0。
t=100;
/**********found**********/
while(t<=__2__)填入:
999。
{s1=t%10;s2=(t/10)%10;s3=t/100;
if(s1+s2+s3==15)
{printf("%d",t);
n++;
}
/**********found**********/
__3__;填入:
t++。
}
returnn;
}
main()
{intx=-1;
printf("\nTheresultis:
%d\n",fun(x));
}
3、函数的功能是:
将形成n所指变量中,各位上为偶数的数去除,剩余的数按原来从高到低位的顺序组成一个新的数,并通过形成指针n传回所指变量。
例如,输入一个数:
27638496,新的数为:
739。
voidfun(unsignedlong*n)
{unsignedlongx=0,i;intt;
i=1;
while(*n)
/**********found**********/
{t=*n%__1__;填入:
10。
/**********found**********/
if(t%2!
=__2__)填入:
0。
{x=x+t*i;i=i*10;}
*n=*n/10;
}
/**********found**********/
*n=__3__;填入:
x。
}
main()
{unsignedlongn=-1;
fun(&n);
}
最新热门考题1:
函数的功能是:
统计长整型n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量c1、c2、c3返回主函数。
intc1,c2,c3;
voidfun(longn)
{c1=c2=c3=0;
while(n){
/**********found**********/
switch(___1___)填入:
n%10。
{
/**********found**********/
case1:
c1++;___2___;填入:
break。
如果/**********found**********/不加break则会每一次
都执行cese2,case3。
case2:
c2++;___3___;填入:
break。
case3:
c3++;
}
n/=10;
}
}
main()
{longn=123114350L;
fun(n);
}
最新热门考题2:
函数的功能是:
从三个形参a,b,c中找出中间的那个数,作为函数值返回。
例如,当a=3,b=5,c=4时,中间的数为4。
intfun(inta,intb,intc)
{intt;
/**********found**********/
t=(a>b)?
(b>c?
b:
(a>c?
c:
___1___)):
((a>c)?
___2___:
((b>c)?
c:
___3___));第一个空填入:
b
returnt;第二个空填入:
a
第三个空填入:
b
}注意:
该题理解起来比较困难,因此建立直接记忆!
main()
{inta1=3,a2=5,a3=4,r;
r=fun(a1,a2,a3);
}
关于素数:
(1)只能被1和它自身整除的数,最小的素数是2,不是1。
(2)判断变量i是否值素数,只要用i除以2、3、4……n-1,如果有任何一个结果为0,则不是素数,否则是素数。
最新热门考题3:
函数的功能是:
统计所有小于等于n(n>2)的素数的个数,素数的个数作为函数值返回。
intfun(intn)
{inti,j,count=0;
printf("\nTheprimenumberbetween3to%d\n",n);
for(i=3;i<=n;i++){
/**********found**********/
for(___1___;j
j=2。
/**********found**********/
if(___2___%j==0)填入:
i。
break;
/**********found**********/
if(___3___>=i)填入:
j。
{count++;printf(count%15?
"%5d":
"\n%5d",i);}
}
returncount;
}
main()
{intn=20,r;
r=fun(n);
}
最新热门考题4:
用筛选法可得到2~n(n<10000)之间的所有素数,方法是:
首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找到一个非0数,并从数表中删去该数的所有倍数;依次类推,直到所找的小一个数等于n为止。
intfun(intn)
{inta[10000],i,j,count=0;
for(i=2;i<=n;i++)a[i]=i;
i=2;
while(i/**********found**********/
for(j=a[i]*2;j<=n;j+=___1___)填入:
i。
a[j]=0;
i++;
/**********found**********/
while(___2___==0)填入:
a[i]。
i++;
}
printf("\nTheprimenumberbetween2to%d\n",n);
for(i=2;i<=n;i++)
/**********found**********/
if(a[i]!
=___3___)填入:
0。
{count++;printf(count%15?
"%5d":
"\n%5d",a[i]);}
returncount;
}
main()
{intn=20,r;
r=fun(n);
}
最新热门考题5:
甲乙丙丁四人同时开始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。
函数的功能是:
根据形参提供的值,求出总共听到多少次鞭炮声作为函数值返回。
/**********found**********/
#defineOK(i,t,n)((___1___%t==0)&&(i/t填入:
i。
intfun(intt1,intt2,intt3,intt4,intn)
{intcount,t,maxt=t1;
if(maxtif(maxtif(maxtcount=1;/*给count赋初值*/
/**********found**********/
for(t=1;ti++。
{
if(OK(t,t1,n)||OK(t,t2,n)||OK(t,t3,n)||OK(t,t4,n))
count++;
}
/**********found**********/
return___3___;填入:
count。
}
main()
{intt1=7,t2=5,t3=6,t4=4,n=10,r;
r=fun(t1,t2,t3,t4,n);
}
三、一维数组考题
该类题目的重点考点:
(1)如果返回的是和,则求和变量sum要赋初值为0;返回的是个数,则求个数变量cnt要赋初值为0;返回积,则求积变量要赋初值为1。
(2)数组的下标从0开始,到长度减1结束。
(3)必考点,谨记两个数组的赋值形式:
a[j++]=a[i];或者为:
a[j]=a[i];j++;
(4)判断数组中元素是否为偶数:
a[i]%2==0
(4)一维数组的排序个数如下:
(红色部分常考)
for(i=0;ifor(j=i+1;jif(a[i]大于或小于a[j])其中if表达式中:
大于表示从大到小排序,小于表示从小到大排序。
(5)两个数据的交换格式:
t=a;a=b;b=t;
(6)两个数组元素的交换格式:
t=a[i];a[i]=a[j];a[j]=t;
(7)找最大值:
if(max找最小值:
if(min>a[i])min=a[i];
61、函数的功能是:
把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把偶数从数组中删除,奇数个数通过函数返回。
#defineN9
intfun(inta[],intn)
{inti,j;
j=0;
for(i=0;i/**********found**********/
if(a[i]%2==___1___)填入:
1。
a[i]%2结果为1
{表示a[i]是奇数。
/**********found**********/
a[j]=a[i];___2___;填入:
j++。
这个不多说。
}
/**********found**********/
return___3___;填入:
j。
}
main()
{intb[N]={9,1,4,2,3,6,5,8,7},i,n;
n=fun(b,N);
}
71、函数的功能是:
把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数个数通过函数返回。
#defineN9
intfun(inta[],intn)
{inti,j;
j=0;
for(i=0;i/**********found**********/
if(___1___==0){填入:
a[i]%2。
/**********found**********/
___2___=a[i];j++;填入:
a[j]。
}
/**********found**********/
return___3___;填入:
j。
}
main()
{intb[N]={9,1,4,2,3,6,5,8,7},i,n;
n=fun(b,N);
}
64、函数的功能是:
将形参a所指数组中的前半部分元素中的值和后半部分元素中的值对换。
形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。
例如:
a所指数组中的数据依次为:
1、2、3、4、6、7、8、9,则调换后为:
6、7、8、9、5、1、2、3、4。
#defineN9
voidfun(inta[],intn)
{inti,t,p;
/**********found**********/
p=(n%2==0)?
n/2:
n/2+___1___;填入:
1。
for(i=0;i{
t=a[i];
/**********found**********/
a[i]=a[p+___2___];填入:
i。
/**********found**********/
___3___=t;填入:
a[p+i]。
交换,记住交换的
}形式即可做出来。
}
main()
{intb[N]={1,2,3,4,5,6,7,8,9},i;
fun(b,N);
}
99、函数的功能是:
把形参a所指数组中的最小值放在元素a[0]中,