2021年陕西省榆林市全国计算机等级考试C语言程序设计真题(含答案)_第1页
2021年陕西省榆林市全国计算机等级考试C语言程序设计真题(含答案)_第2页
2021年陕西省榆林市全国计算机等级考试C语言程序设计真题(含答案)_第3页
2021年陕西省榆林市全国计算机等级考试C语言程序设计真题(含答案)_第4页
2021年陕西省榆林市全国计算机等级考试C语言程序设计真题(含答案)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2021年陕西省榆林市全国计算机等级考试

C语言程序设计真题(含答案)

学校:班级:姓名:考号:

一、2.填空题(10题)

1.若先后输入county、side,以下程序的运行结果为【】。

main()

{charsi[40],s2[20];inti=0,j=0;

scanf("%s",si);

scanf("%s",s2);

while(sl[i]!='\0')i++;

while(s2fj]!='\0')sl[i++]=s2fj++];

sl[i]='\0';

printf("\n%s",si);

)

2.已知字符A的ASCH码为65,以下程序运行后的输出结果是【】。

#include<stdio.h>

main()

{chara,b;

a='A'+'5'-3;b=a+'6'-'2';

printf("%d%c\n",a,b);

3.数据库三级模式体系结构的划分,有利于保持数据库的【】。

4.下列程序的输出结果是【】。

#include<stdio.h>

main()

{charb[]="Helloyou";

b[5]=0;

printf("%s\n",b);

)

5.以下程序的输出结果是12.00,请将空白处填写完整。

main()

{inta=9,b=2;

floatx=[],y=l.l,z;

z=a/2+b*x/y+1*2;

printf("%52f\n",z);

}

6.由25人围坐成圆圈,先从任意一人出发用1到25顺时针依次编号,

然后从1号开始顺时针报数(1、2、3...),凡报5的倍数者出圈,剩下者

继续报数,求出最后出圈者的编号。

#include<stdio.h>

[]

{inta[26],j,n,count;

for(j=1;j<=25;j++)a[j]=j;

j=1;count=0;n=[];

do

{if(a[j]!=0)

if(n%5==0)

{[];

if(count==24)printf("%d\n",j);

count++;

}

)

j++;

ifG>25)j=l;

)

while"】);

)

7.以下程序运行后的输出结果是【】。

main()

{charm;

m='B'+32;printf("%c\n",m);

8.对软件是否能达到用户所期望的要求的测试称为【】。

9.以下程序运行后的输出结果是____o

main()

(

intx=10,y=20,t=0

if(x==y)t=x;x=y;y=t;

printf("%d,%d/n",x,y);

)

10.下列程序的输出结果是____o

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z+0;

elseZ+=1;

primf("%d\n",z);

)

二、单选题(10题)

11.软件生命周期中,花费最多的阶段是()。

A.详细设计B.软件编码C.软件测试D.软件维护

12.给出以下定义:charx[]="abcdefg";chary[]={'a?b?c','d?e',f,g};则正确

的叙述为()。

A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度

大于数组y的长度D.数组x的长度小于数组y的长度

13.(7-6-3-5-4-1-2)堆排序,升序排列,3的位置改变几次()

A.lB.2C.3D.4E.5F.6

14.数据库系统的核心是0。

A.数据模型B.数据库管理系统C.数据库D.数据库管理员

15.以下叙述中错误的是()。

A.将函数内的局部变量说明为static存储类是为了限制其他编译单位的

引用

B.一个变量作用域的开始位置完全取决于变量定义语句的位置

C.全局变量可以在函数以外的任何部位进行定义

D.局部变量的“生存期”只限于本次函数调用,因此不能将局部变量的运

算结果保存至下一次调用

16.需求分析的主要任务是()。

A.确定软件系统的功能B.确定软件开发方法C.确定软件开发工具D.

确定软件开发入员

17.对n个元素的有序表A[l..n]进行顺序查找,其成功查找的平均查找

长度(即在查找表中找到指定关键码的元素时,所进行比较的表中元素

个数的期望值)为()

A.nB.(n+l)/2C.log2nD.nA2

18.有如下程序:

main

{intx=l,a=0,b=0;

switch(x)

{

case0:b++;

case1:a++;

case2:a++.b++;

printf("a=%d,b=%d\n",a,b);

)

该程序的输出结果是()。

A.a=2,b=lB.a=l,b=lC.a=l,b=0D.a=2,b=2

40)下述程序的输出结果是().

#include<stdio.h>

19.voidmainf)

{chara=3,b=l;

charc=aAb«2;

printf!"%d",c);

}

A)1B)7C)3D)2

20.若有说明:inta口[3]={1,2,3,4,5,6,7};则a数组第一维的大

小是

A.2B.3C.4D.无确定值

三、程序设计题(10题)

21.

请编写一个函数proc(),它的功能是:根据以下公式求7c的值(要求

满足精度。.00。5,即某项小于0.005时停止迭代)。

w/2-l+1/3+1»2/(3•5)+1•2•3/(3«•5•7)+1

•2»3»4/(3»5»7»9)+,",+l»2*3»-",»n/C3»5«

.....

程序运行后,如果输入精度0.0005,则程序输出3.140578o注意:

部分源程序给出如下。请勿改动main()函数和其他函数中的任何内

容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

:iinclude<conio.h>

#include<Cntdio.h>

5include<math.h>

doubleproc(doubleeps)

voidmain()

(

doubleHI

printft"\nPkascenteraprecinion:*)i

scan"i

printf(*\nPi^%l(\n*,proc(s))t

22.

编写函数fun,其功能是:从字符串中附除指定的字符。同字母的大、小写按不同字符处理。

例如,若程序执行时输入字符串为:

Mlurbocandboriandrz”

从键盘上输入字符n:则输出为:

“hirbocadIxniadC++”

如果输入的字符在字符串中不存在,则字符串照原样输出.

注恚:部分源程序绐•出如F,

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

试题程序:

#include<sldio.h>

voidfun(chars[]jntc)

f

I.

main()

{staticcharstrf]="lurbocandBorlandC++”;

charch:

charch:

print。"原始字符串:%s\n".str);

输入一个字符An");

scanf("%c":&ch);

fun(strjtii);

printf(Mstr[]=%§\n"«strX

strepy(str/tuibocandBorland(:++");

fun(str/a'):

23.

请编写函数proc(),其功能是:将str所指字符串中除了下标为奇数、

同时ASCII值为偶数的字符外,其余的全部删除,串中剩余字符所形成

的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为

edB2A4Dsdg,其中字符A的ASCII码值为奇数,因此应当删除;其中

字符B的ASCH码值为偶数,但在数组中的下标为偶数,因此也应当

删除;而字符2的ASCII码值为偶数,所在数组中的下标为奇数,因此

不应当删除。依此类推,最后t所指的数组中的内容应是d24。注意:

部分源程序给出如下。请勿改动main()函数和其他函数中的任何内

容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

二includeVcomo.h>

■include<ttdicub>

9mdude<Hnng.

voidpror<char•Mr.rh«r

voidMm(>

(

charstr[100]«t[100jg

»ywtmC"CI^S*>i

pnntflentervirtng

pftfit((*\nThcr*»ulttsi

24.规定输入的字符串中只包含字母和*号。编写函数fun,其功能

是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字

符串函数。

例如,字符串中的内容为“****A*BC*DEF*G****”,删除后,字符串

中的内容应当是“ABCDEFG”。

注意:部分源程序给出如下。

请勿改动maini)函数和其他函数中的任何内容,仅在函数fun的花括号

中填入你编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

voidfun(chara)

(

voidmain

(

chars[81];

print{("Enterastring:\n");

gets(s):

fun(S);

printf("Thestringafterdeleted:\n");

puts(s);

)

25.使用VC++2010打开考生文件夹下progl中的解决方案。此解决方

案的项目中包含一个源程序文件progl.c。在此程序中,请编写函数

fun(),其功能是统计s所指字符串中的数字字符个数,并将其作为函

数值返回。例如,s所指字符串中的内容是

2def35adh253kjsdf7/kj8655x,函数fun()返回值为11注意:部分源程序在

文件progl.c中。请勿改动主函数main()和其他函数中的任何内容,仅在

函数fun()的花括号中填入你编写的若干语句。试题程序:

1#include<stdio.h>

2voidNONO();

3intfun(char♦s)

41

5

6}

7main()

8{char*s=w2def35adh253kjsdf

7/kj8655xn;

9printf(*'%s\n,\s);

M

10printf("%d\nzfun(s));

11NONO();

■)

13voidNONO()

14{/*本函数用于打开文件、输入数据、调

用函数、输出数据及关闭文件。*/

15FILE*fpz♦wf;

16inti;

17chars[256];

nHnn

18fp=fopen(in.datrr);

wf=fopen(Mout.daf\Hww);

20for(i-0;i<10;i++){

21fgets(S/255,fp);

22fprintf(wfffun(s));

■}

34fclose(fp);

25fclose(wf);

簧}

26.使用VC++2010打开考生文件夹下progl中的解决方案。此解决方

案的项目中包含一个源程序文件progl.c。在此程序中,请编写一个函

数fun(),该函数的功能是将大于整数m且紧靠m的k个素数存入所

指的数组中。例如,若输入17、5,则应输出19、23、29、31、370注

意:部分源程序在文件progl.c中。请勿改动主函数main。和其他函数中

的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题

程序:

♦include<conio.h>

2♦include<stdio.h>

3tinclude<stdlib.h>

4voidfun(intm,intk,intxx[])

5(

6

7)

8voidmain()

9(

10FILE♦wf;

1!intzz[1000];

12system(MCLSW);

13printf(M\nPleaseentertwoin­

tegers:;

scanf(w%d%d*\&n);

15fun(m,n,zz);

16for(m=0;m<n;m++)

17printf(H%dzz[m]);

18printf(w\n");

19/******拿**********/

20wf-fopen("out.dat","w");

fun(17,5,zz);

for(m=0;m<5;m++)

23fprintf(wf,”,zz[m]);

flBfclose(wf);

25//

■)

27.…请编写函数。fun能是:判断形参n中的正整数是几位数(输入数

据的位数不超过4位),并将结果通过函数值返回。例如:若输入的数

据为123,则输出结果为:输入的数字是3位。注意:部分源程序存在

PROGl.C中,请勿改动主函数main和其他函数中的任何内容,仅在函

数fun的花括号中填入所缩写的若干语句。试题程

linclude<stdio.h>

voidNONOO;

intfun(intn)

main()

{intn,place;

do{

printf「请输入一个4位以内的正整数:”);

scanf("id**,;

)while(n<011n>9999);

place-fun(n);

print-”输入的数字是加位place);

NONO();

)

voidNONO()

</•本函数用于打开文件,输入数据,调用函数.输出数据.关闭文件。•/

FILE•fp,•wf;

inti,n,place;

fp■fopen(wc:\test\in.dat","r");

wf-fopen("c:\test^ut.datw,Hw");

for(i-0;i<10;ii)

(

fscanf(fp,"Id",4n);

place■fun(n);

R

fprintf(wf/"%d\nrplace);

)

fclose(fp);

fclose(wf);

序:)

28.编写函数fun,其功能是:将s所指字符串中除了下标为奇数,同时

ASCH码值也为奇数自q字符之外。

其余所有字符全部删除,串中剩余字符所形成的一个新串放在所指的数

组中。

例如,若s所指字符串的内容为“ABCDEFG12345",其中字符A的ASCII

码值为奇数,但所在元素的

下标为偶数,因此需要删除;而字符1的ASCII码值为奇数,所在数组

中的下标也为奇数,因此不应当删除,

其他依此类推。最后t所指数组中的内容应为“135”。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括

号中填入你编写的若干语句。

试题程序:

#)nclude<stdio.h>

#include<striiig.h>

v(»idfun(char*s,chart(D

(

)

main()•

(

chars[100],1(100];

printff'VnPIeaseenterstrings:n);

printfC'XnTheresultis:%3\n'\t);

I

29.

某学生的记录由学号、8门课成绩和平均分组成,学号和8门课的成绩

已在主函数中给出。请编写proc()函数,它的功能是:求出该学生的

平均分并放在记录的ave成员中。请自己定义正确的形参。例如,若

学生的成绩是65.5,75,88,90,90.5,66,64.5,89.5,则他的

平均分应当是78.625。注意:部分源程序给出如下。请勿改动main

()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入

所编写的若干语句。试题程序:

u:ndudtVttdio.

3drfmrM8

rypedef»tn*ct

tcharmmi[)Oji

doable»[M]i

douHr

STRIXi

voidproc4STREC•p)

eidmam(>

STR**GA005・.,5・5.?$.U・90・8・S・

“■MSS9.Sh

tatii

peoc<&MU>I

pftRtf(eTbc%studentdhUi\n*«

stu.n«im>i/"出学号

for(iw0ii<Mii4,♦)

printf(<K4.4i])a

p<rimf《・\ruire-%7.3f\iT・Mu.ave)>

•出手均分

30.

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

sum=l-x+x2/2!-x3/31+...+(-l*x)n/n!例如,当n=23,x=0.3时,

函数值为0.740818。注意:部分源程序给出如下。请勿改动main()

函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编

写的若干语句。试题程序:

*include<tfdhb.b>

器inrludr00fm.h>

力ladudt<zdia.b>

ninclude<tMih.h>

doublepcor<dcMiMex.mta)

voidmain<)

sy*tcn(*CLS->i

pnntf<*KfM«proc<0,3»23))i

I

四、2.程序修改题(10题)

31.给定程序MODH.C中函数fun的功能是:求出以下分数序列的前

n项之和。和值通过函数值返回到main函数。

23S81321

T2*?5'TF……

例如,若n=5,则应输出:8.391667o

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

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include<stdio.h>

2/*♦**♦*♦♦****found***w*****♦*♦/

3voidfun(intn)

4{inta,brc,k;doubles;

5s=0.0;a•2;b»1;

6for(k-1;k<«n;k++)<

7/♦♦♦♦**♦♦♦***foundw***♦*♦♦♦♦**/

8s-s♦(Double)a/b;

9c-a;a=a+b;b-c;

10I

11returns;

12}

13main()

14(intn«5;

15printf(w\nThevalueoffunction

is:%lf\nH,fun(n));

16

32.给定程序中函数fun的功能是:从低位开始取出长整型变量s中偶

数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低

位。

例如,当s中的数为:7654321时,t中的数为:642。

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

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

[试题源程序]

#include<stdio.h>

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

voidfun(longs,longt)

(

longsl=10;

s/=10;

*t=s%10;

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

while(s<0)

(

s=s/100;

*t=s%10*sl+*t;

sl=sl*10;

}

)

mein()

(

longs,t;

printf("\nPleaseenters:");

scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:%ld\n",t);

)

33.下列给定程序中函数fun()的功能是:将长整型数中每一位上为偶数

的数依次逆向取出,构成一个新数放在t中。高位在低位,低位在高位。

例如当s中的数为25846513时,t中的数为6482。请改正函数fun()

中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdio.h>

#include<conio.h>

voidfun(longS,long*t)

intd;

longsl=l,i=l;

*t=0;

while(s/i>0)

i=i*10;

i=i/10;

while(s>0)

d=s/i

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

if(d%2!=0)

/vlx/**1*1**1**1**1**1*<1**1**1**1**1**1*/

/不不不不不不不不不不不不不TA\1In/]不不不不不不不不不不不不不/

t=d*sl+t;

sl*=10;

)

S=S%i;

i=i/10;

)

)

main()

|

longS,t;

clrscr();

printf("\nPleaseenterS:");

scanf("%ld",&s);

fun(S,&t);

printf("Theresultis:%ld\n",t);

)

34.下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数

的数依次取出,构成一个新数放在冲。高位仍在高位,低位仍在低位。

例如当s中的数为87653142时,t中的数为75310

请改正函数fun()中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdio.h>

#include<conlo.h>

voidfun(longs,long*t)

{intd;

longsl=l;

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

t=0;

while(s>0)

{d=s%10;

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

if(d%2==0)

{*t=d*sl+*t;

sl*=10;

s/=10;

main()

{longs,t;

clrscr();

printf("\nPleaseenters:");scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:%ld\n",t);

)

35.给定程序M0D11.C中函数fun的功能是:根据整型形参m,计算

如下公式的值。

.1I11

y=1+♦—♦■—+…+—

2”3/34,4

例如,若m中的值为:5,则应输出:1.46361lo

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

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

tinclude<stdio.h>

2doublefun(intm)

3{doubley-1.0;

4inti;

5

6for(i-2;i<m;i++)

7•found…………★/

8y1/(i*i);

9return(y);

10)

11main()

12{intn-5;

ww

13printf(\nTheresultis%lf\nx

fun(n));

14

36.给定程序M0D11.C中函数fun的功能是:首先将大写字母转换为

对应小写字母;若小写字母为a~u,则将其转换为其后的第5个字母;

若小写字母为V〜Z,使其值减21。转换后的小写字母作为函数值返回。

例如,若形参是字母A,则转换为小写字母f若形参是字母W,则转换

为小写字母b。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

finclude<stdio.h>

2*include<ctype.h>

3charfun(charc)

4{if(c>-fA'&&c<-Z)

5/…………round

6OC+32;

7if(O-^,&&c<»tut)

8w<rw****wfouncj*****♦*♦♦♦♦♦♦/

9c-c-5;

10elseif(c>-'v'z•)

11c»c-21;

12!returnc;

13i)

14;main()

{charclrc2;

16printf(w\nEnteraletter(A-Z):

);cl-getchar();

17if(isupper(cl))

18(c2-fun(cl);

19printf(w\n\nTheletter\1%c\1

changeto\'%c\'\n”,clrc2);

20}

21elseprintf(R\nEnter(A-Z)!\nw);

22)

37.下列给定程序中,函数fun()的功能是:对N名学生的学习成绩,按

从高到低的顺序找出前叫mglO)名学生来,并将这些学生数据存放在一

个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

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

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.

试题程序:

#include<conio.h>

#include<string.h>

#include<stdio.h>

#include<alloc.h>

#defineN10

typedefstructss

{charnumflO];

ints;

}STU;

STU*fun{STUa[],intm)

{STUb[N],*t;

inti,j,k;

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

*t=calloc(m,slzeof(STU));

for(i=0;i<N;i++)b[i]=a[i];

for(k=0;k<m;k++)

{for(i=j=0;i<N;i++)

if(b[i].s>b[j].s)j=i;

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

t[k].num=b[j].num;

t[k].s=b[j]s;

b[j].s=O;

)

returnt;

)

outresult(STUa[],FILE*pf)

{inti;

for(i=0;i<N;i++)

fprintf(pf,"No=%sMark-%d\n",

a[i].num,a[i].s);

fprintf(pf,"\n\n");

)

main()

{STUa[N]={{"AOI",81},{"A02",89},

{"A03",66},{"A04",87},{"A05",77},

{"A06",90},{"A07",79},{"A08",61},

{"A09",80},{"A10

STU*pOrder;

inti,m;

clrscr();

printf("*****THERESULT*****\n");

outresult(a,stdout);

printf("\nGivethenumberofthestudents

whohavebetterscore:");

scanf("%d",&m);

while(m>10)

{printf("lnGivethenumberofthe

studentswhohavebetterscore:");

scanf("%d",%m);

pOrder=fun(a,m);

printf("*****THERESULT*****kn");

printf("Thetop:\n");

for(i=0;i<m;i++)

printf("%s%d\n",pOrder[i].num,

pOrder[i].s);

free(pOrder);

}

38.下列给定程序中,函数fun()的功能是::求k!(k<13),所有阶乘的

值作为函数值返回。例如:若k=10,则应输出3628800。

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

注意:不要改动main函数,不得增行或删行,也不得更

改程序的结构。

试题程序:

#include<conio.h>

#include<stdio.h>

longfun(intk)

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

ifk>0

return(k*fun(k-1));

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

elseif(k=0)

return1;

)

main()

{intk=10;

clrscr();

print,("%d!=%ld\n",k,fun(k));

)

39.下列给定的程序中,fun()函数的功能是:将p所指字符串中每个单

词的最后一个字母改成大写(这里的“单词”是指有空格隔开的字符串)。

例如,若输入:

Iamastudenttotaketheexamination

则应输出:IaMAstudenTtOtakethEexaminatioN

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

注童:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<conio.h>

#include<ctype.h>

#include<stdio.h>

voidfun(char*p)

(

intk=0;

for(;*p;p++)

if(k)

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

if(P==")

k=0;

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

*p=toupper(*(p-l));

else

k=l;

main()

{charchrstr[64];

intd;

clrscr();

printf("\nPleaseenteranEnglishsentencewithin63letters:");

gets(chrstr);

d=strlen(chrstr);

chrstr[d=='';

chrstr[d+l]=O;

printf("\nBoforechanging:\n%s",chrstr);

fun(chrstr);

printf("\nAfterchanging:\n%s",chrstr);

)

40.下列给定程序中,函数fun()的功能是计算并输出high以内的素数

之和。high由主函数传给fun()函数。

例如:若high的值为100,则函数的返回值为1060o

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

[注意]不要改动main函数,不得增行或删行,也不得更改程序的结构。

[试题源程序]

#include<conio.h>

#include<stdio.h>

#include<math.h>

intfun(inthigh)

(

intsum=0,n=0,j,yes;

while(high>=2)

(

yes=l;

for(j=2;j<=high/2;j++)

ifhigh%j==O

(

yes=0;

break;

if(yes==0)

{'

sum+=high;

n++;

high-;

returnsum;

}

main()

(

clrscr();

printf("%d\n",fun(lOO));

)

五、程序改错题(2题)

41.

下列给定程序中函数fun()的功能是:用递归算法计算斐波拉契数列

中第n项的值。从第1项起,斐波拉契数列为:1,1,2,3,5,8,13,

21,…例如,若给n输入7,则该项的斐波拉契数值为13。请改正程

序中的错误,使它能得出正确结果。注意:不要改动main()函数,

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

HincludeVxdio.

kmgfun(ia<

〃••••found・•••

»wtich(g)।

cawOtreturn0s

//••••lOyfut••••

ca*c1ICASC2ireturn1।

rviurn(fun(gI)+fun《.一"九

voidmain()

long(iliimim

pruotf(*tnp«it1114)1

prim«*n-•n>*

(ib0(un<n)s

prteif(*6b——MflT.fib)•

42.下列给定程序中,函数proc()的功能是:从3个红球,5个白球,6

个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑

球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数

应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表

黑球数。

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

注意:不要改动main。函数,不得增行或删行,也不得更改程序的结

构。

试题程序:

SmcludrVMdidb>

inipror<>

mt

•\nT1wm«lti\n\n*)i

//••••fgnd♦•••

for(t-0iY-3ii+♦>

for+)

-ij«

〃・♦•♦found••••

+I,

*rcdiwhitet%4d

Mack।MidXfi

retuniwucii

voidfnainC)

inf>ucna

pnntf《•*um=%4d\o\n

六、操作题(2题)

43.请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最小

元素在数组中的下标并存放在k所指的存储单元中。

例如,输入如下整数:

234345753134436458100321135760

则输出结果为6,100°

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括

号中填入所编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

(

)

main()

{

inta[10]={234,345,753,134,436,458,

100,321,

135,760),k;

clrscr();

fun(a,10,&k);

printf("%dr%d\n",k,a[k]);

)

44.某学生的记录由学号、8门课成绩和平均分组成,学号和8门课的

成绩已在主函数中给出。请编写fun()函数,它的功能是:求出该学生的

平均分放在记录的ave成员中。请自己定义正确的形参。

例如,若学生的成绩是85.5,76,69.5,85,91,72,64.5,87.5,则

他的平均分应当是78.875。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括

号中填入所编写的若干语句。

试题程序:

#include<stdio.h>

#defineN8

typedefstruct

{charnum[10];

doubles[N];

doubleave;

}STREC;

voidfun()

{

)

main()

(

STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5);

inti;

fun(&s);

printf("The%s'sstudentdata:\n",s.num)//*输出学号*/

for(i=0;i<N;i++)

printf("%4.1f\n",s.s[i]);

/*输出各科成绩*/

printf("\nave=%7.3f\n",s.ave);

/*输出平均分*/

)

参考答案

1.countryside

''

2.67G67G解析:由于\'5\'-\'3\'=2,所以a=\'A\+\'5\'-\'3\'=\'C\,按%d'格式

输出\'C\'的ASCII码为67;同理,V6V-V2V=4,b=a+\'6\'-\,2\,=\'C\'+4=\'G\',

按'%c'格式输出为\'GV。

3.数据独立性数据独立性解析数据库的三级模式体系结构把数据的组

织管理工作进行了划分,把数据的具体组织留给DBMS管理,使用户能

逻辑地、抽象地处理数据,而不必关心数据在计算机中的具体表示方式

与存储方式,保证了数据的独立性。

4.HelloHello解析:语句b[5]=0;相当于语句b[5]='\\0';且'\\0'为字符串

结束标志,输出时遇到‘\\。'就停止输出。

解析:a/2=9/2=4,1/2=0,于是根据输出结果就有下列等式:

z=4+2*x/1.1=12.0,化简后,为x/l.l=4,x=4.4°

6.main()0a[j]=0count<25

7.bb解析:在ASCII码表中,至少有3个值考生得记住:,0,的ASCII

码为48厂A,的ASCII码为65;匕,的ASCII码为97o因为记住这3个

后,其他字母和数字的ASCH码就可以很容易推出来了。本题中,“B”

的ASCII码为安+1=66,所以,字符类型m的ASCII为

66+32=98=97+1=匕'+1,所以最后输出的结果为字符'b'。

8.有效性测试有效性测试

9.20020,0解析:本题考查的知识点是if语句的基本概念。在主函数中

首先定义了三个整型变量x、y,t,并分别给它们赋初值为10,20,0,

接着执行if语句,在if后面括号内的条件表达式中,条件“x==y"即

“10=20”不成立,则不执行其后的语句“t=x”,然后退出if语句,顺序执

行语句X=y;y=t;o执行完这两条语句后x的值变为20,y的值变为0,

所以最后输出x,y的值为20和0。

10.11解析:ifelse语句的功能:若表达式的值为真,执行语句1,并跳

过其他语句,执行ifelse语句的下一条语句,若表达式的值为假,跳过

语句1,执行语句2,依次往下判断。题中,x=3,y=2,第一个if语句

的控制条件x<y就不满足,又没有与之配对的else语句,所以直接执

行printf语句,在整个过程中变量z的值都没发生变化。

H.D本题考查对软件生命周期的理解,软件生命周期整体上可分为定义

阶段、开发阶段和维护阶段。其中定义阶段包括可行性研究与计划制订

和需求分析;开发阶段包括概要设计、详细设计、开发和测试;维护阶

段是一个单独阶段,不包含在开发阶段内,它是所花费用最多的一个阶

段。

12.C解析:在c语言中,字符串以,\\(y作为结束符,因此数组x的长度

为7+1=8,而数组y的长度等于7。

13.B

14.B解析数据库管理系统是数据库系统的核心,是负责数据库的建立、

使用和维护的软件。数据库管理系统建立在操作系统之上,实施对数据

库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,

最终都必须通过数据库管理系统。另外,数据库管理系统还承担着数据

库的安全保护工作,按照数据库管理员所规定的要求,保证数据库的完

整性和安全性。

15.A将函数内的局部变量说明为static存储类,第1次调用该函数时才

对其初始化,后续调用时使用上一次调用结束后的值;函数体内的局部

变量无论是否声明为stat\xlfic,外部编译单位都不能引用,选项A错

误,其他选项正确。本题答案为A选项。

16.A需求分析是软件开发之前必须要做的准备工作之一。需求是指用户

对目标软件系统在功能、行为、性能、设计约束等方面的期望。故需求

分析的主要任务是确定软件系统的功能。本题答案为A选项。

17.B

18.A

当x为1时,执行easel,a自加等于1,因为case1后没有break,接

着执行case2,此时a的值为2,b自加为1,故选择A选项。

19.B

20.B解析:本题考查二维数组的定义方式。第一维的大小由以下方法判

断:①当初值的个数能被第二维的常量表达式的值除尽时,所得商数就

是第一维的大小;2)当初值的个数不能被第二维的常量表达式的值除尽

时,则第一维的划、:所得的商数+1。

21.

【解析】我们应定义一个变量表示其和,一个变量表示其分数,由题目

中可知循环结束的标志为分数小于eps,因此其为循环结束的条件,根

据公式的变化规律,可求得s,最后把2*s返回到主函数中。

22.

【答案】

vnidfun(cha,s[),intc)

I,

inti=0;.

char*p;

P=s;

while(*p)/*判断是否为结束标识符*/

{,

if(*p!=e)/*判断字符串中字符是否与指定字符相同*/

(.

,s(i>*P;"如不同,将重新组合字符串*/

i++;

)如相同,则处理下一个字符*/

P++;}

)

【解析】

通过循环将非指定字符重新保存,字符串末尾加上结束标识符。

23.

【解析】题目中要求将字符串str中下标为奇数,同时ASCH码值为偶

数的字符放在数组t中,首先,需要检查字符串str中下标为奇数的字符

的ASCII码值是否为偶数,将符合要求的字符放在数组t中。最后,为

新的字符串数组添加结束符。

24.\n\tvoidfun(char*a)

\n{

\ninti,j=0;

\nfor(i=0;a[i]!=\0;i++)

\nif(a[i]!=*)

\na[j++]=a[i];//若不是要删除的字符*则保留

\na[j]=\O;//最后加上字符串结束符\0

\n}

\n【解析】此题是删除字符串中的星号。思路是通过for循环完成对字

符串的遍历,通过if判断,找到不是“*”的字符,将其赋值到数组a中

星号前的位置,“if(a[i]!=*)”“a[i++]=a[i/,最后返回主函数将删除*后

的字符串输出即可。\n

25.intfun(char*s)

2;{intn=0;

3char*p;

4:;for(p=s;*p!=,\\0';p_L+)

if((*p>,o,)&&(<,9,))

6n++;

7returnn;

8}要统计字符串中数字字符的个数,首先应定义变量n,并将其初始化

为0,然后遍历字符串,逐个判断字符是否为数字字符,判断条件为该

元素的ASCII值在字符。和9的ASCH值之间,若判断条件成立,则

使n的值加1,否则,继续判断下一个字符,直到字符串结束。

26.1voidfun(intm,intk,intxx[])

2{

3inti,j,n;

4for(i=m+l,n=0;n

<k;i++)p*<>找大于m的素数,循环k次,即找出紧靠m的k个素数

*/5{for(j=2;j<i;j++)p*#]断一<〉个M否为素数,如果不是,跳出此循环,

判断下一个数*/6if(i%j==0)break;7if(j>=i)/*如果是素数,存入数组XX中

*/8xx[n++]=i;9}10}本题主要考查素数的判定方法。如果一个数不能被除

了1和其自身以外的数整除,则这个数为素数。本程序使用循环语句控

制需要判断的数,在循环体中判断该数是否为素数,若是则存入数组XX

中。当数组XX的素数个数为k个时,退出循环。</i;j++)p*#]断一

<></k;i++)p*<>

27.

int修射度量统计位段

我备见香为0,若不为0,bits加1,再

除以10.lt修掴嘴

(

bitsx;

n-n/10;

returnbits;【考点分析】主要考察考生对循环

跳出的条件的理解,以及理解取数字位数的方法。【解题思路】通过

对指定的多位数每次除以10,去掉最后一位,直到为。结束,使用临时

变量来统计一个多位数的位数。

28.

【答案】

voidfun((^har*s,char])

I

inti.j=0,TK

n=strien(s);

fr)»(i=O;i<n;i++)

*%2!团&%2!田)

(tBMi];/*将下标为奇数同时ASCII码值为奇数的字符放人数组t中*/

J++;

)

/*最后加上结束标识符*/

)

【解析】

用循环遍历字符串,通过if语句将下标和ASCII码都为奇数的字符保

存到数组中,在字符串末尾加上结束标识符。

29.

【解析】要求该学生的平均成绩,首先要求出其各科成绩之和,然后求

出其平均成绩并放在成员变量ave中。

30.

【解析】首先定义两个变量分别用来存储级数的和与每一项的分母。观

察级数的特点,其每一项的正负号是交替变化的。根据这些特点,每增

加一项都需要变换符号。最后求出级数的和。

31.(l)doublefun(intn)(2)s=s+(double)a/b;(l)doublefun(intn)

(2)s=s+(double)a/b;解析:本题中函数的功能是求出分数序列的前n

项之和。首先根据题干中给出的公式推出每一项之间的关系,求出每一

项的表达式,然后求得数列的和。每一项的分母是前一项的分子,分子

是前一项分子和分母的和。

32.(1)错误:voidfun(longslongt)正确:voidfun(longslong*t)(2)错误:

while(s<0)正确:while(s>0)

(1)错误:voidfun(longs,longt)\r\n正确:voidfun(longs,long*t)\r\n

(2)错误:while(s<0)\r\n正确:while(s>0)解析:错误1:在函数fun

体中,t是一个指针型变量,由C的基础知识我们可以知道,定义形参

时也应定义指针。

错误2:由题目可以知道,此处条件应该s>0,所以这里应改为:

while(s>0)o

33.(1)错误:if(d%2!=0)正确:if(d%2==0)(2)错误:t=d*sl+t;正确

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论