全国计算机等级考试C语言上机考试题库2140套.docx
《全国计算机等级考试C语言上机考试题库2140套.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试C语言上机考试题库2140套.docx(102页珍藏版)》请在冰豆网上搜索。
全国计算机等级考试C语言上机考试题库2140套
2017年全国计算机等级考试C语言上机考试题库
学生练习用第21套至第40套
第二十一套
1、程序填空
给定程序中,函数fun的功能是:
将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。
例如,形参s所指的字符串为abs5def126jkm8,程序执行后的输出结果为22。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:
部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
-----------------------------------------------------------------------------------------------------------------
#include
#include
#include
intfun(char*s)
{intsum=0;
while(*s){
/**********found**********/
if(isdigit(*s))sum+=*s-__1__;
/**********found**********/
__2__;
}
/**********found**********/
return__3__;
}
main()
{chars[81];intn;
printf("\nEnterastring:
\n\n");gets(s);
n=fun(s);
printf("\nTheresultis:
%d\n\n",n);
}
-----------------------------------------------------------------------------------------------------------------
【参考答案】
(1)48
(2)s++(3)sum
【解题思路】
本题是把字符串中是数字字符转换成对应的数值并进行累加。
填空1:
'0'字符对应的ASCII码值是48,因此数字字符转换成对应数值时只要减去48,即是该数字字符对应的数值,所以应填48。
填空2:
判断完一个字符之后,将字符串指针移到下一个位置,所以应填s++。
填空3:
返回累加和sum,所以应填sum。
2、程序修改
下列给定的程序中,函数fun的功能是:
计算并输出k以内最大的10个能被13或17整除的自然数之和。
k的值由主函数传入,若k的值为500,则函数的值为4622。
请改正程序中的错误,使它能得出正确的结果。
注意:
部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!
-----------------------------------------------------------------------------------------------------------------
#include
#include
#include
intfun(intk)
{intm=0,mc=0,j;
while((k>=2)&&(mc<10))
{
/*************found**************/
if((k%13=0)||(k%17=0))
{m=m+k;mc++;}
k--;
/*************found**************/
returnm;
}
voidmain()
{system("CLS");
printf("%d\n",fun(500));
}
-----------------------------------------------------------------------------------------------------------------
【参考答案】
(1)if((k%13==0)||(k%17==0))
(2)}returnm;
【解题思路】
(1)C语言中,x能被y整除的表示方法是x%y==0,而不是题目中所表示的x%y=0。
所以,if((k%13=0)||(k%17=0))修改后的结果应该是答案所示信息。
(2)程序中缺少程序完整所需的"}",此类信息在做题时一定要注意,可以在做题前先运行一下程序,这样明显的错误一般都会有错误信息显示出来。
比如丢失"}"的错误信息是"Compoundstatementmissing}infunctionfun"。
3、程序设计
编写函数fun,它的功能是:
求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。
例如,若n为1000时,程序输出应为:
s=153.909064。
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
-----------------------------------------------------------------------------------------------------------------
#include
#include
doublefun(intn)
{
}
main()/*主函数*/
{voidNONO();
printf("s=%f\n",fun(1000));
NONO();
}
voidNONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*fp,*wf;
inti,n;
doubles;
fp=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<10;i++){
fscanf(fp,"%d",&n);
s=fun(n);
fprintf(wf,"%f\n",s);
}
fclose(fp);
fclose(wf);
}
-----------------------------------------------------------------------------------------------------------------
【参考答案】
doublefun(intn)
{
doublesum=0.0;
inti;
for(i=21;i<=n;i++)
if((i%3==0)&&(i%7==0))
sum+=i;
returnsqrt(sum);
}
【解题思路】
本题考查算术运算的算法,首先利用一个for循环判断小于n且能同时被3和7整除的整数,并将满足条件的整数累加到sum,之后调用sqrt函数计算sum的平方根,并作为函数的返回值。
第二十二套
1、程序填空
给定程序中,函数fun的功能是:
找出形参s所指字符串中出现频率最高的字母(不区分大小写),并统计出其出现的次数。
例如,形参s所指的字符串为:
abcAbsmaxless,程序执行后的输出结果为:
letter'a':
3times
letter's':
3times
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:
部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
-----------------------------------------------------------------------------------------------------------------
#include
#include
#include
voidfun(char*s)
{intk[26]={0},n,i,max=0;charch;
while(*s)
{if(isalpha(*s)){
/**********found**********/
ch=tolower(__1__);
n=ch-'a';
/**********found**********/
k[n]+=__2__;
}
s++;
/**********found**********/
if(max}
printf("\nAftercount:
\n");
for(i=0;i<26;i++)
if(k[i]==max)printf("\nletter\'%c\':
%dtimes\n",i+'a',k[i]);
}
main()
{chars[81];
printf("\nEnterastring:
\n\n");gets(s);
fun(s);
}
-----------------------------------------------------------------------------------------------------------------
【参考答案】
(1)*s
(2)1(3)k[n]
【解题思路】
本题统计字符串中各字母的个数,建立了一个包括26个整型变量的数组,用来存储每个字母的个数。
填空1:
isalpha函数的作用是判断当前字符是否为字母,tolower函数的作用是将当前字母转换为小写字母,所以应填*s。
填空2:
把该字母出现的个数累加到指定的数组中,所以应填1。
填空3:
max用来记录出现次数最高的字母的出现次数,如果当前该字母出现次数大于最大次数max,那么把该次数赋值给max,所以应填k[n]。
2、程序修改
下列给定程序中,函数fun的功能是:
求S的值。
例如,当k为10时,函数的值应为1.533852。
请改正程序中的错误,使它能得出正确的结果。
注意:
部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!
-----------------------------------------------------------------------------------------------------------------
#include
#include
#include
#include
/*************found**************/
fun(intk)
{
intn;floats,w,p,q;
n=1;
s=1.0;
while(n<=k)
{
w=2.0*n;
p=w-1.0;
q=w+1.0;
s=s*w*w/p/q;
n++;
}
/*************found**************/
returns
}
voidmain()
{system("CLS");