2023年河北省邢台市全国计算机等级考试C语言程序设计真题(含答案)_第1页
2023年河北省邢台市全国计算机等级考试C语言程序设计真题(含答案)_第2页
2023年河北省邢台市全国计算机等级考试C语言程序设计真题(含答案)_第3页
2023年河北省邢台市全国计算机等级考试C语言程序设计真题(含答案)_第4页
2023年河北省邢台市全国计算机等级考试C语言程序设计真题(含答案)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

2023年河北省邢台市全国计算机等级考试

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

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

一、2.填空题(10题)

1.以下程序的输出结果是【】。

#include<stdlib.h>

main()

{char*sl,*s2,m;

s1=s2=(char*)malloc(sizeof(char));

*sl=15;*s2=20;m=*sl+*s2;

printf("%d\n",m);

)

2.算法的基本特征主要包括叫个方面,它们分别是可行性、确定性、0

和拥有足够的情报。

3.自动批处理文件名必须是【】。

4.下面rotate函数的功能是:将n行n列的矩阵A转置为A,,例如:

123415913

5678261014

当4则A,=请填空。

9101112371115

13141516481216

#defineN4

voidrotate(inta()[N])

{inti,j,t;

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

for(j=0;[];j++)

{t=a[i][j];

[];

a[j][i]=t;

)

)

5.设丫是int型变量,请写出判断丫为奇数的关系表达式【】。

6.树中度为零的结点称为o

7.下列程序的运行结果是____o

#include<stdio.h>

func(a,B)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

)

mainO

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

printf("%d\n",p);

8.软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护

阶段。编码和测试属于【】阶段。

9.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存

入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完

整。

structnode

{intinfo;

【】link;};

10.某二叉树中度为2的结点有n个,则该二叉树中有【】个叶子结

点。

二、单选题(10题)

11.若有函数

voidfun(doublea[]0int*n)

以下叙述中正确的是()。

A.调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按

地址传送

B.形参a和n都是指针变量

C.形参a是一个数组名,n是指针变量

D.调用fun函数时将把double型参数组元素一一对应地传送给形参a数

12.

(24)有以下程序:

#include<stdio.h>

main()

{intc;

whilc((c=getchar())!=,\n,)

{switch(c-3*)

{Case0:

case1:putchar(c+4);

case2:putchar(c+4);break;

case3:putchar(c+3);

case4:putchar(c+3);break;

}}

printfl:w\nM);}

从第一列开始输入数据(<CR>代表一个何车符):3845<CR>,则程序输出结果为

().

A)77889B)77868C)776810D)77886610

13.同一个关系模型的任意两个元组值0。

A.可以全相同B.不能全相同C.必须全相同D.以上都不对

14•一个序列中有10000个元素,若只想得到其中前10个最小元素,最

好采用方法

A.快速排序B.堆排序C插入排序D.二路归并排序

15.判断一个顺序存储的队列sp为空的条件是()。

A.sp->front=sp->rear

B.sp->front=sp->rear+1

C.sp->front=sp->rear-1

D.sp->front=NULL

16.有下列程序:

intfunl(doublea){returna*=a;}

intfun2(doublex,doubley)

{doublea=0,b=0;

a=funl(x);b=funl(y);return(int)(a+b);

)

main()

{doublew;w=fun2(l.1,2.0)............}

程序执行后变量w中的值是()。、

A.5.21B.5C.5.0D.0.0

17.若有定义floata=25,b,*p=&b;,则下列对赋值语句*p=a;和p=&a;

的正确解释为()。

A.两个语句都是将变量a的值赋予变量p

B.*p=a是使p指向变量a,而p=&a是将变量a的值赋予变量指针p

C.*p=a是将变量a的值赋予变量b,而p=&a是使p指向变量a

D.两个语句都是使p指向变量a

18.有以下程序:

#include<stdio.h>

main()

charch[]="uvwxyz",*pc;pc=ch;

printf("%c\rr,*(pc+5));

}

程序的运行结果是()

A.zB.OC.元素ch[5]的地址D.字符y的地址

19.当调用函数时,实参是一个数组名,则向函数传送的是____o

A.数组的长度B.数组的首地址C.数组每一个元素的地址D.数组每个

元素中的值

20.在Windows环境下,单击当前窗口中的按钮“”,其功能是

A.将当前应用程序转为后台运行

B.退出Windows后再关机

C.终止当前应用程序的运行

D.退出Windows后重新启动计算机

三、程序设计题(10题)

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

案的项目中包含一个源程序文件progl.co此程序定义了NxN的二维

数组,并在主函数中自动赋值。请编写函数fun(),该函数的功能是将数

组下三角元素中的值全部置成0。如a数组中的值为

197

238

456

则返回主程序后a数组中的值应为

097

008

000

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

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#defineN5

voidfun(inta[][N])

{

}

voidmain()

(

inta[N][N],i,j;

system,CLS");

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

for(i=0;i<n;i++)<p=""x/n;i++)<>

/*产生一个随机的5x5矩阵*/

(

for(j=O;j<=""p="">

(

a[i][jl-rand()%10;

printf("%4d”,a[i][j]);

}

printfCt\n,,);

)

fun(a);

printf(€tTheResult\n,,);

for(i=0;i<n;i++)<p=""x/n;i++)<>

(

for(j=0;j<=""p="">

printf(-%4d-,a[i][j]);

printf("\n");

)

)

22.

编写函数如n,其功能是:删除一个字符串中指定下标的字符。其中,

a指向原字符串,删除指定字符后

的字符串存放在b所指的数组中,n放指定的下标。

例:输入一个字符串“world”,然后输入3,则调用该函数后的结果为

"word"。

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

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#d<fineLEN20

voidfiin(chara[]tcharb[],intn)

(,'

},

voidmain()

・{charstrl[LEN),str2(LEN];

intn;

prin好EnterthestringAn");

gets(strl);

prirttfEnier山epositionrfthestringdeleted:。

scanf(,,%drt,&n);

fun(strLstr2,n);

prinrf(HThenewstringis:%s\n?tr2);

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

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

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

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

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

finclude<stdio.h>

voidNONOO;

intfun(intn)

main()

{intn,place;

do{

printfL请输入一个4位以内的正整数:-);

scanfLid",&n);

>while(n<011n>9999);

place-fun(n);

printf(“粉人的数字是3位\M,place);

NONOO;

)

voidNONO()

{/・本函数用于打开文件,输入数据.调用雨数,输出数据,关闭文件。*/

FILE•fp,•wf;

intifn,place;

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

wf-fopen(*c:\test>cut.datH,Hw");

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

(

fscanf(fpr"%d",tn);

place,fun(n);

w

fprintf(wf/"%d\nrplace);

)

fclose(fp);

fclose(wf);

序:)

24.请编写一个函数proc(),它的功能是:将str所指字符串中所有下标

为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。例

如,若输入abcdel23,则应输出aBcDel23。注意:部分源程序给出如

下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc

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

■mciuii9»

・efirlu4r

■utclutl*<k>

・inclu4v<MriRg.Ii>

*o一peoc<clMir•H9>

m<>

rhaf

•X«IMB(*CLS>>•

pneih*\nPV««rEVTanxragwitlwi

10rhsracierv।\A>>I

gviMtOi

prin4i<*\n\nAft«rHurngNtf.the«sr・g

\aK*a«n>«

pmHitli

prmif<*\nbEOOK>\・X»\«*»n)a

25编写函数voidproc(intx,intpp口,int*n),它的功能是求出能整除x

且不是奇数的各整数,并按从小到大的顺序放在pp所指的数组中,这

些除数的个数通过形参返回。

例如,若x中的值为30,则有4个数符合要求,它们是261030。

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

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

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

试题程序:

*include<conio.h>

include<stdio.h>

/includeVntdlib.h>

voidproc(intx»infpp£]»int•n)

voidmain()

(

intx.arrflOOO].n»ii

syMem("CI-S")i

printf("\nPleascenteranintegernumber:\nH)i

«canf("%d".>

proc<x«arr.s

for(i-0si<nii++)

printf(*%d*•arr[i])i

print((**\nH)i

26.请编写函数proc(),其功能是:将str所指字符串中下标为偶数的字

符删除,串中剩余字符形成的新串放在t所指数组中。

例如,当str所指字符串中的内容为abedefg,则在t所指数组中的内容

应是bdfo

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

请勿改动main。函数和其他函数中的任何内容,仅在函数proc()的花括

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

试题程序:

Biodude•二afetflik.

StncluJrVcomo,

=incftudrV,tdxx!O»

$include<*nn<.li>

eidproc<Huir•ar.ciui,4])

voidHMMI<)

char»trC10Q]«t[100]i

wyvlcM<>i

pnm”.'aPlcenter*trtn<wiri")i

»canl《■外■"・Mr)i

proeCwir.tli

pnM((*\aTberesulttsrH»\n*tt)t

27.请编写函数proc(),该函数的功能是:删去一维数组中所有相同的

数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回

删除后数组中数据的个数。

例如,若一维数组中的数据是:

1122234456666778

9910101010

删除后,数组中的内容应该是:

12345678910

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

请勿改动main。函数和其他函数中的任何内容,仅在函数proc()的花括

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

试题程序:

sinrludrV.tdMkh>

9%fineMBO

mtptor(mi•[]・tainl

voidmain(>

8.0.9.IO.1O.IOJO).i.ii-ZZ.

print((eTh«ongtnAl<iftUj\na>i

(orii^OiYm,♦)>

|xint(<<K3d*»arr[i]>t

n»pror(arr»f>>i

pnnifC*\n\fiThedal>afterdeleted

foHi**Oii<tu[♦+)

pnnt«eX3d".>rr[.ij>3

pcintl<*\n\n")i

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

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

平均分,并放入记录的ave成员中。

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

则他的平均分应为78.875。注意:部分源程序在文件PROG1.C中。

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

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

tioclude<sldio.h>

fdefineN8

typedefstruct

Icharnum[10];

doubles[N];

doubleave;

|STREC;

voidfun(STREC•a)

main()

|STREC•»|*GA005",85.5,76,69.5.85.91,72,64.5.87.51;

int

voidNONO();

fUfl();

printf("The%-sludentchia:\n*,B.num);

fbr(i=0;i<N;i♦♦)

pnntf(*%4.1An-,«.»[>]);

pnntf("\nave=%7.3An".t.ave);

NONO();

I.

voidNONO()

I/.本函数用于打开文件,输人敷据,利用雨数,输出数据,关闭文件,

FILE•out;

inti.j;STREC式10]=I

|■GA005",85.5,76.69.3,85,91,72,64.5.87.51.

j"CA001*.82.5,66.76.S.76,89.76,46.5,78.51,

|«CA002-,72.5,56,66.5.66,79,68.46.5,58.51,

I-GA003*.92.5,76.86.5,86,99,86.56.5,88.5|,

|-CA004",82,66.5,46.5,56,76,75,76.5.63.51,

I"GA006",75.5,74,71.5.85,81,79,64.5.71.51,

|•GA007',92.5.61,72.5,84.79.75.66.5,72.51,

|-GA008,,72.5,86,73.5,80,69,63.76.5,53.51.

|-GA009-.66.5,71.74.5,70,61.82,86.5.58.51.

|«GAOJO”,76,66.5,75.S,60.76,71,96.5,93.51.

11

out=fopen(dM'*,"w");

fbr(is0;i<10;i♦♦)I

M

^pnntf(outr"%7.3An,•[i].ave);

I

fdoee(out);

29.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1-

1/2)+(1/3-1/4)+...+(1/(2n-l)-l/2n)例如,若主函数从

键盘给n输入20后,则输出为s=0.680803o注意:部分源程序给出

如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc

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

於includeVstdio.h>

doubleproc(intn)

(

}

voidmain<>

(

intm

doublesum;

print((N\nlnputnt**>:

scanf(・&-n)i

5um=proc(n>i

30.请编写函数proc,它的功能是计算:

s=(In(l)4+ln(2)4+ln(3)+...+In(m))0.5

在C语言中可调用log(n)函数求ln(n)o

例如,若m的值为30,则proc函数值为8.640500。

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

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#inclllde<stdio.h>

#include<math.h>

doubleproc(intm)

)

voidmain

system("CLS");

printf("%f\n",proc(30));

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

31.给定程序MOD11.c中函数fun的功能是;由形参给定n个实数,

输出平均值,并统计在平均值以上(含平均值)的实数个数。

例如,n=8时,输入:193.199,195,673,195,757,196.051,196.092,

196,596,196,579,196.763

所得平均值为:195.838745,在平均值以上的实数个数应为:5

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

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

1!*include<stdio.h>

;intfun(doublex(],intn)

3!(

4j/♦♦*♦♦*♦*•**•found**<•*••♦♦♦♦♦/

5intj9c・0.doublexa-0.0;

for(j«0;j<n;

Ixax(j)/n;

i

8printf(wave»%f\nw,xa);

9for(j»0;j<n;j++)

10!/*♦•*♦♦♦*>♦**found*

11if(x(j)->xa)

12C++;

13returnc;

14jJ

15!main()

16;{doublex(100)-(193.199,195.673,

!195.757,196.051,196.092,196.596,

•196.579,196.763};

17printf(R%d\nR,fun(x,8));

18

32.下列给定程序中,函数fun()的功能是:根据整型形参n,计算如下

公式的值。

Al=l,A2=1/(1+A1),A3=l/(1+A2),....An=(l/(1+A(n-1))

例如,若p=10,则应输出0.617977。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

/*******不***不**f^ound**不***不************不/

ihtfun(ihtn)

{floatA=l;inti;

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

A=1.0/(i+A);

returnA;

)

main()

{intn;

clrscr();

printf("\nPleaseentern:");

$canf("%d",&n);

printf("A%d=%lf\n",n,fun(n));

)

33.下列给定程序中,函数fun()的功能是;利用插入排序法对字符串中

的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串

中的头两个元素进行排序,然后把第3个字符插入到前两个字符中,插

入后前3个字符依然有序;再把第4个字符插入到前3个字符中,待排

序的字符串已在主函数中赋予。

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

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

试题程序:

#include<String.h>

#include<stdio.h>

#defineN80

voidinsert(char*aa)

{ihti,j,n;charch;

n=strlen(aa);

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

{c=aa[i];

j=i-l;

while((j>=0)&&(ch<aa[j]))

{aa[j+l]=aa[j];

j-;

)

aa[j+l]=ch;

)

)

main()

{chara[N]="QWERTYUIOPASDFGHJKIMNBVCXZ";

inti;

printf("Theoriginalstring:%s\n",a);

insert(a);

printf("Thestringaftersorting:

%s\n\n",a);

34.下列给定程序中,函数fun()的功能是:判断一个整数m是否是素

数,若是返回1,否则返回0。在main()函数中,若fun()返回1则输出

YES,若fun()返回0则输出NO!

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

intfun(intm)

{intk=2;

while(k<=m&&(m%k))

/***********不*found*******不************不/

k++

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

if(m=k)

return1;

elsereturnO;

)

main()

{ihtn;

clrscr();

printf("\nPleaseentern:");

scanf("%d",&n);

if(fun(n))printf("YES\n");

elseprintf("NO!\n");

)

35.下列给定的程序中,函数fun()的功能是:判断字符ch是否与str所

指字符串中的某个字符相同;若相同,则什么也不做,若相同,则将其

插在申的最后。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

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

voidfun(charstr,charch)

{while(*str&&*str!=ch)str++;

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

if(*str==ch)

{str[O]=ch;

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

str[l]-O';

main()

{chars[81],c;

clrscr();

printf("\nPleaseenterastrzng:");

gets(s);

printf("\nPleaseenterthecharacterto

search:");

c=getchar();

fun(s,c);

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

)

36.下列给定程序中,函数fun()的功能是:根据输入的3个边长(整型

值),判断能否构成三角形:若能构成等边三角形,则返回3,若是等腰

三角形,则返回2,若能构成三角形则返回1,若不能,则返回0。

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

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

试题程序:

#include<math,h>

intfun(inta,intb,intc)

{if(a+b>c&&b+c>a&&a+c>b)

{if(a==b&&b==c)

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

return1;

elseif(a==b||b==c||a==c)

return2;

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

elsereturn3;

)

elsereturn0;

)

main()

{inta,b,c,shape;

printf("\nlnputa,b,c:");

scanf("%d%d%d",&a,&b,&c);

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

shape=fun(a,b,c);

printf("\n\nTheshape:%d\n",shape);

37.下列给定程序中,函数fun()的功能是:求出以下分数序列的前n项

之和。

2/1,3/2,5/3,8/5,13/8,21/13...........

和值通过函数值返回main()函数。例如,若输入n=5,则应输出8.391667。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

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

fun(intn)

{inta=2,b=l,c,k;

doubles=0.0;

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

{s=s+1.0*a/b;

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

c=a;a+=b;b+=c;

)

return(s);

)

main()

{intn=5;

clrscr();

printf("\nThevalueoffunctionis:

fun(n));

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

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

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

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

voidfun(longs,long*t)

{intd;

longsl=l;

*t=0;

while(s>0)

{d=s%10;

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);

)

39.给定程序MOD11.C中函数fun的功能是:读入一个字符串(长度<

20),将该字符串中的所有字符按ASCII码升序排序后输出。

例如,若输入:edcba,则应输出:abcde0

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

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

1finclude<stdio.h>

2*include<string.h>

3voidfun(chart[])

4(

5charc;

6int1,j;

7/*♦♦♦**♦***found*****♦****♦/

8for(i■strlen(t);i;i-)

9for(j-0;j<i;j++)

10/**********found***********/

11if(t[j]<t(j+1])

12(

13c-t[j];

14t[j]-t(j♦1];

15t(j♦1]-c;

16)

17}

18main()

19

20chars[81];

21printf(w\nPleaseenteracharacter

string:

22gets(s);

23printf(w\n\nBeforesorting:\n

s);

24fun(s);

25printf(w\nAftersortingdecendingly:

\nWb,s);

26

40.下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元

素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并

将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是

5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对

前10个元素进行处理,不对最后的4个元素求平均值。

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

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

试题程序:

#include<stdio.h>

#defineSIZE20

fun(double*s,double*w)

{intk,i;doublesum;

for(k=2,i=0;i<SIZE;i++)

{s[i]=k;k+=2;}

sum=0.0;

for(k=0,i=0;i<SIZE;i++)

{sum+=s[i];

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

if(i+l%5==0)

{w[k]=sum/5;Sum=0;k++;}

)

returnk;

)

main()

{doublea[SIZE],b[SIZE/5];

inti,k;

k=fun(a/b);

printf("Theoriginaldata:\n");

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

if(i%5==0)printf("\n");

printf("%4.0f7a[i]);

printf{"\n\nTheresult:\n");

for(i=0;i<k;i++)printf("%6.2f,b[i]);

printf("\n\n");

)

五、程序改错题(2题)

41.

假如整数数列中的数不重复,并存放在数组中。下列给定的程序中,函

数proc()的功能是:删除数列中值为x的元素。n中存放的是数列中

元素的个数。请修改程序中的错误,使它能够得出正确的结果。注意:

不要改动main()函数,不得增行或删行,也不得更改程序的结构。试

题程序:

密iDclwk

►*dehneM2门

i»t•an«vnt,.皿x>

ifii

whale

rrtwra-It

eb«

for♦>

//••••found••••

rviim-11

voadouun<>

mi"r[MJ-f-3・0・1I0.1S.30.90).

x«n«it

・.10A

pnnt(<"Theortgioaldat«:\na)।

tor(i-0i・Vtui+,)prmtf<*%5d*«arr[ij)i

S

printf(*\nlnpui*<to<MH«>G>«

»c«nf<*Kd**&.*)<

eDeletetKd\n*«*>i

n*proc<arY»n»K)i

tl(«•—―!)

printf(e•••NobrIOUCMI!•••\n\aa)t

tix

p<ifH".Thcdala“lerdeleted)i

for<i9O&Ynil++)

pnntfl*K5d*«arr{t]>i

42.

下列给定程序中,函数proc()的功能是:计算并输出下列级数的前N

项之和SN,直到SN+1大于q为止。q的值通过形参传人。SN=2/1+3

/2+4/3+(N+l)/N例如,若q的值为57,则函数值为59.593612。

请修改程序中的错误,使它能得出正确的结果。注意:不要改动main

()函数,不得增行或删行,也不得更改程序的结构。试题程序:

aindude<Htdlihk>

MindudrVcocUo.b>

9include<*tdxkh>

//••••(ouf>3・・•・

dcHiblcproc(dr>u!4rq>

inil*idouble»ufn»tt

-&。,

whik<wm<WQ)

//•••••

sum*turnXn>I)/m

■十+,

//••••(outfit••••

rriimMitni

voidm*in(>

>ystefi><*CLS*)i

pntrtfC*S(\n"•proc<^0))«

六、操作题(2题)

43.请补充main()函数,该函数的功能是:从键盘输入一个长整数,如

果这个数是负数,则取它的绝对值,并显示出来。例如,输入>123456,

结果为:1234560注意:部分源程序给出如下。请勿改动main()函

数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语

句。试题程序:

霖includeV.tdLhb>

9mrlutlrVMdio.h>

9includeVconio.h?>

rotdmain()

longintnum।

»yMctn<*CLS*>i

pntttfCaf£nicribcdatai\n*)»

«can(<fl}_»i

••••theabsolutevalue•••\»")i

i!(nuai<CO)

■】

pnBtf(e\a\nM)t

prtntf(13]>।

44.观察题目要求,可以知道以下几点:}

参考答案

1.40

40解析:本题中指针si和s2都指向同一个内存中的地址。因此语句

“*s2=20;”执行后,*\u3000sl=*s2=20。所以m最后的值为40。

2.有穷性有穷性

3.AUTOEXEC.BAT

4.j<ia[i][j]=a[j][i]j<i\r\na[i][j]=a[j][i]解析:本题中要求将n行n列的

矩阵A转置,即让数组中行上的元素变成对应列上的元素。即把对角线

两边的元素对换,所以本题的第一个空格处应该填写j<i,第二个空格

处填写交换对角线两边的元素的语句a[i][j]=a[j][i]o

5.Y%2=1或Y%2!=OY%2=1或丫%2!=0解析:判断变量是否为奇数

可以用变量与2取模,判断结果是为1或下为0。本题具体做法如下:

Y%2=1或丫%2!=0。

6.叶子结点叶子结点解析树中度为零的结点,也就是没有后件的结点,

称为叶子结点。

7.11231123解析:在主函数中第一次调用func子函数时,m=0,i=2,i

=i+m+1=3,m=i+a+b=3+5+3=llo因为在子函数中将m和i定义成

了static类型,所以在子函数中对m和i进行的改变,在下一次调用子

函数时能进行保存,所以第二次调用子函数时,m=ll,i==3,贝IJi=

i+m+1=15,m=i+a+b=15+5+3=23。

8.开发开发解析:软件生命周期(SDLC,软件生存周期)是软件的产生

直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系

统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,其

中的编码和测试属于开发阶段。

9.structnode*structnode*解析:本题中的结构类型名为structnode,所

以空白处应填:structnode*o即定义一个指向自身的结构体指针。

10.n+ln+l解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总

是比度为。的结点多一个。

ll.B\n本题考查函数中数组和指针的传值,数组a□在参数传递时,是传

递的数组a的首地址,所以形参a和n都是指针变量。。

\n

12.A

13.B关系具有以下7个性质。①元组个数有限性:二维表中元组的个数

是有限的。②元组的唯一性:二维表中任意两个元组不能完全相同。③

元组的次序无关性:二维表中元组的次序,即行的次序可以任意交换。

④元组分量的原子性:二维表中元组的分量是不可分割的基本数据项。

⑤属性名唯一性:二维表中不同的属性要有不同的属性名。⑥属性的次

序无关性.二维表中属性的次序可以任意交换。⑦分量值域的同一性:二

维表属性的分量具有与该属性相同的值域,或者说列是同质的。满足以

上7个性质的二维表称为关系,以二维表为基本结构所建立的模型称为

关系模型。本题答案为B选项。

14.B

15.A

16.C

子函数funl(doublea)的功能是返回a的平方值的整数部分。子函数

fun2(doubleX,doubley)的功能是返回X的平方值的整数部分与丫的

平方值的整数部分的和。又因为题中变量W的定义为double型,函数

fun(2)的定义为int型,按照各类数值型数据间的混合运算,整型数据

被转换为实型数据。所以双精度型变量w的值为5.Oo

17.C解析:“p”是指针变量,指向一个地址:“*p”,为p指针所指向地

址的内容。

18.A语句“pc=ch;"使得指针变量pc指向字符数组ch的首地址,即指向

字符'u"而“pc+5”指向的是指针向后移动5位所指的字符,即指向字

符3,所以输出的“*(pc+5)”的值为玄。故本题答案为A选项。

19.B解析:当调用函数时,实参是一个数组名,则向函数传送的是数组

的首地址,函数中的形参可定义成以下三种形式:

①形参定义成数组;

②形参定义成可变长数组:

③形参定义为指针变量。

20.C

解析:在Windows环境下,单击当前窗口中的按钮“x”,其功能是终止

当前应用程序的运行,关闭当前窗口。

21.voidfun(inta[][n])

(

inti,j;

for(i=0;i<=""p="">

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

a[i][jl=O;/*将数组下三角元素中的值全部置成0*/

)

对于NxN二维数组,表示其下三角元素,可以通过以下语句实现。

for(i=0;i<n;i++)<p=""x/n;i++)<>

\tfor(j=0;j<=i;j++)

外层循环用来控制矩阵的行下标,内层循环用来控制矩阵的列下标。

注意列下标的取值范围,因为要表示下三角元素,所以j的范围是

0~io

22.

【答案】

vnidfun(chara[),eharH),intn)

(init.k=0;

iffi!却)/"将不是指定下标的字符存人数组b中♦/

hfkzX*

)肚h灯;片在字符串最后加上结束标识符*/

)

(解析】

根嶷题意要删除字符串中指定下标的字符.也就是保的非指定下标的字符,所以在话句为%!=0,在字

符串木尾加上字符中结束标识符.

23.

int恰时丈量随计仪敕

xhileS/10)〃到备是否为0,若不为O.blts加1,再

看n*以10,・续打嘴

(

bits”;

n-n/10;

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

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

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

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

24.

【解析】要将字符串中为奇数的字母转换为大写。首先应该判断奇数位

置上的字符是否为小写字母,若是则将其转换为大写,若不是则不予处

理。

25.

【解析】按照题目中要求,求出能整除x且不是奇数的各整数。首先

判断小于等于整数x的所有偶数是否能被x整除,将能被x整除的奇

数放入数组pp中。最后将数组pp中元素的个数返回到主函数当中。

26.

voidproctchef•mr«clMrciJ)

//k

lordlBiVhiii+Z)示力奇■

"七下际为今收的K收•

■中

iDl-AOi”■为[毫字料率,因比必SI用V•作

力雄未修二

【解析】题目要求将下标为偶数的字符删除,其余字符放在新的字符

数组t中。首先取出字符串str中下标为奇数的字符,将其赋值给新的

字符串3最后用‘\0'作为字符串结束的标志。

27.

【解析】题目中要求删去一维数组中所有相同的数,使之只剩一个。

首先需要将字符串中的每一个字符与其后的一个字符相比较,相同则

不做任何操作,不相同则将其放入新的字符串中。最后将新的字符串

中的字符个数返回给主函数。

28.

voidfun(STREC*a)

inti:

a->ave=0.0:

fbr(i=O;i<N;i++)a->ave=a一>ave+-->s[i];/*求各门成绩的总和}

/

a->ave/=N;/}求平均分*/}

【考点分析】

本题考查:结构体类型成员运算,指向结构体类型的指针变量作函数

参数。

【解题思路】

本题考查自定义形参的相关知识点,程序流程是这样的:在如n()函数

中求出平均分后,返回到主函数时平均分也要带回,所以只能定义一

个指针类型的形参STRECa,此时,引用成员的方式可以使用指向运

算符,即a—〉ave和a—>s[i],当然也可用(*a),aveW(*a).S[i]o

29.

【解析】由题目中所给的表达式可知,多项式的值为n项表达式的和。

可以利用n次循环求出n项表达式的值,求和放在变量s中。最后将多

项式的值返回到主函数当中。

30.doubleproc(intm)

\n{

\ninti;

\ndoubles=0.0;//s是表示其和

\nfor(i=1;i<=m;i++)

\ns=s+log(i);〃计算s=ln(l)+ln(2)+ln(3)+…+ln(m)

\nreturnsqrt(s);〃最后将其开平方的值返回到主函数中

\n}

\n【解析】由题目中所给表达式可知,表达式的值为m项表达式的和然

后开平方。可以首先通过m次循环求得m项表达式的和,然后将其和

开平方并返回到主函数当中。

\n

31.(l)intj-c=0;doublexa=0.0;(2)if(x[j]>=xa)(l)intj-c=0;double

xa=0.0;(2)if(x[j]>=xa)解析:本题中函数的功能是输出平均值,并

统计在平均值以上(含平均值)的实数个数。本题中的函数实现过程首先

求解平均值,然后将所有值与平均值进行比较,统计高于平均值的实数

个数。

32.(1)错误:intfun(intn)正确:floatfun(intn)(2)错误:for(i=2;i<n;

i++)正确:for(i=2;i<=n;i++)⑴错误:intfun(intn)正确:floatfun(int

n)\r\n(2)错误:for(i=2;i<n;i++)正确:for(i=2;i<=n;i++)解析:该

题中fun()函数的作用是计算数列前n项的和,而数列的组成方式是:第

n项的分母是功□第n-1项的值,分子为1,如果循环累加按for(i=2;

i<n;i++)执行的话,当我们输入n=2的时候会是什么结果?循环会怎么

执行呢?循环不能执行,但数学思路绝对正确,这就矛盾了,所以循环条

件应该是for(i=2;i<n;i++)o

33.错误:c=aa[i]正确:ch=aa[i];错误:c=aa[i]正确:ch=aa[i];解析:

对长度为n的数组元素进行排列,可先对数组的前m-l项进行排序,之

后再对前m项进行排序,如此循环直到数组全部元素完成排序。对前m

项的子数列进行排序的方法是,将该子数列的末尾元素与前m

温馨提示

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

评论

0/150

提交评论