全国计算机等级考试C语言上机考试题库2140套.docx

上传人:b****6 文档编号:5640544 上传时间:2022-12-29 格式:DOCX 页数:102 大小:52.15KB
下载 相关 举报
全国计算机等级考试C语言上机考试题库2140套.docx_第1页
第1页 / 共102页
全国计算机等级考试C语言上机考试题库2140套.docx_第2页
第2页 / 共102页
全国计算机等级考试C语言上机考试题库2140套.docx_第3页
第3页 / 共102页
全国计算机等级考试C语言上机考试题库2140套.docx_第4页
第4页 / 共102页
全国计算机等级考试C语言上机考试题库2140套.docx_第5页
第5页 / 共102页
点击查看更多>>
下载资源
资源描述

全国计算机等级考试C语言上机考试题库2140套.docx

《全国计算机等级考试C语言上机考试题库2140套.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试C语言上机考试题库2140套.docx(102页珍藏版)》请在冰豆网上搜索。

全国计算机等级考试C语言上机考试题库2140套.docx

全国计算机等级考试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");

printf("%f\n",fun(10));

}

-----------------------------------------------------------------------------------------------------------------

【参考答案】

(1)floatfun(intk)

(2)returns;

【解题思路】

(1)此处为函数定义错误,根据返回值的类型可知函数类型标识符应为float。

(2)语法错误。

3、程序设计

请编写函数fun,其功能是:

计算并输出下列多项式的值。

例如,当n=10时,函数值为0.909091。

注意:

部分源程序在文件PROG1.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

-----------------------------------------------------------------------------------------------------------------

#include

#include

#include

doublefun(intn)

{

}

voidmain()

{

FILE*wf;

system("CLS");

printf("%f\n",fun(10));

/******************************/

wf=fopen("out.dat","w");

fprintf(wf,"%f",fun(10));

fclose(wf);

/*****************************/

}

-----------------------------------------------------------------------------------------------------------------

【参考答案】

doublefun(intn)

{

inti;

doubles=0.0;

for(i=1;i<=n;i++)

s=s+1.0/(i*(i+1));/*求级数的和*/

returns;

}

【解题思路】

本题要求级数的和,由多项式的形式可知,应使用循环语句实现,循环的通项为1/n(n+1)。

本程序首先定义了和变量及循环变量,然后运用一个for语句求出级数的和,最后将和变量s返回。

第二十三套

1、程序填空

给定程序中,函数fun的功能是:

利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。

ss所指字符串数组中共有N个字符串,且串长小于M。

请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

注意:

部分源程序在文件BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

-----------------------------------------------------------------------------------------------------------------

#include

#include

#defineN5

#defineM8

voidfun(char(*ss)[M])

{char*ps[N],*tp;inti,j,k;

for(i=0;i

for(i=0;i

/**********found**********/

k=__1__;

for(j=i+1;j

/**********found**********/

if(strlen(ps[k])

/**********found**********/

tp=ps[i];ps[i]=ps[k];ps[k]=__3__;

}

printf("\nThestringaftersortingbylength:

\n\n");

for(i=0;i

}

main()

{charch[N][M]={"red","green","blue","yellow","black"};

inti;

printf("\nTheoriginalstring\n\n");

for(i=0;i

fun(ch);

}

-----------------------------------------------------------------------------------------------------------------

【参考答案】

(1)i

(2)ps[j](3)tp

【解题思路】

本题是按字符串的长短进行排序。

填空1:

外循环每循环一次,k应保存当前的i值,所以应填i。

填空2:

使用内循环对i+1后面的字符串长度进行比较,所以应填ps[j]。

填空3:

此处的作用是交换两个变量的值,所以应填tp。

2、程序修改

已知一个数列从0项开始的前3项:

0、0、1,以后的各项都是其相邻的前3项之和。

下列给定的程序中,函数fun的功能是:

计算并输出该数列前n项的平方根之和sum。

n的值通过形参传入。

例如,当n=10时,程序的输出结果应为23.197745。

请改正程序中的错误,使它能得出正确的结果。

注意:

部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!

-----------------------------------------------------------------------------------------------------------------

#include

#include

#include

#include

/*************found**************/

fun(intn)

{doublesum,s0,s1,s2,s;intk;

sum=1.0;

if(n<=2)sum=0.0;

s0=0.0;s1=0.0;s2=1.0;

for(k=4;k<=n;k++)

{s=s0+s1+s2;

sum+=sqrt(s);

s0=s1;s1=s2;s2=s;

}

/*************found**************/

returnsum

}

voidmain()

{intn;

system("CLS");

printf("InputN=");

scanf("%d",&n);

printf("%f\n",fun(n));

}

-----------------------------------------------------------------------------------------------------------------

【参考答案】

(1)doublefun(intn)

(2)returnsum;

【解题思路】

(1)根据函数的返回值可知函数fun应定义为double类型。

(2)语法错误,缺分号。

3、程序设计

请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。

例如,当n=10,x=0.3时,函数值为1.349859。

注意:

部分源程序在文件PROG1.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

-----------------------------------------------------------------------------------------------------------------

#include

#include

#include

#include

doublefun(doublex,intn)

{

}

voidmain()

{

FILE*wf;

system("CLS");

printf("%f",fun(0.3,10));

/******************************/

wf=fopen("out.dat","w");

fprintf(wf,"%f",fun(0.3,10));

fclose(wf);

/*****************************/

}

-----------------------------------------------------------------------------------------------------------------

【参考答案】

doublefun(doublex,intn)

{

inti;

doubles=1.0,s1=1.0;

for(i=1;i<=n;i++)

{

s1=s1*i;/*各项中的阶乘*/

s=s+pow(x,i)/s1;/*按公式求出*/

}

returns;

}

【解题思路】

程序定义了变量s1和s,s1表示每项的分母(即各项的阶乘),s存放累加和。

循环语句控制累加的次数,在循环体中进行阶乘和累加操作,累加的结果存入s中。

此处使用了求乘方函数pow(x,i),其含义是求x的i次方的值。

第二十四套

1、程序填空

给定程序中,函数fun的功能是:

根据形参i的值返回某个函数的值。

当调用正确时,程序输出:

x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000。

注意:

部分源程序在文件BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

-----------------------------------------------------------------------------------------------------------------

#include

doublef1(doublex)

{returnx*x;}

doublef2(doublex,doubley)

{returnx*y;}

/**********found**********/

__1__fun(inti,doublex,doubley)

{if(i==1)

/**********found**********/

return__2__(x);

else

/**********found**********/

return__3__(x,y);

}

main()

{doublex1=5,x2=3,r;

r=fun(1,x1,x2);

r+=fun(2,x1,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1