2023年安徽省合肥市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2023年安徽省合肥市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2023年安徽省合肥市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2023年安徽省合肥市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2023年安徽省合肥市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

2023年安徽省合肥市全国计算机等级考试

C语言程序设计预测试题(含答案)

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

一、2.填空题(10题)

1.数据库保护分为:安全性控制并发性控制和数据的恢复。

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

#include<stdio.h>

main()

{intfun();

fun();

)

fun()

{staticinta[4]={1,2,3,4);

inti:

for(i:0;i<4;i++)a[i]+=a[i];

for(i=0;i<4;i++)printf("%d,",a[i]);

printf("\n");

)

3.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分

为三种;前序遍历、【】遍历和后序遍历。

4.有以下程序

main()

{intt=l,i=5;

for(;i>=0;i—)t*=i;

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

)

执行后输出结果是______o

5.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不

能进行人队运算。这种情况称为【】。

6.以下程序的功能是计算:s=l+12+123+1234+12345。请填空。

main()

{intt=O,s=O,i;

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

{t=i+;s=s+t;}

printf("s=%d\n",s);

)

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

main()

{inta=l,b=10;

do

{b-=a;a++;}while(b—<0);

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

)

8.下面程序的输出结果是()。

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei—;}

i+=ll;

a+=i;

)

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

}

9.一个模块直接调用的其他模块的模块个数称为o

10.以下程序中,函数SumColumMin的功能是:求出M行N列二维数

组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数

输出。请填空。

#defineM2

#defineN4

voidSumColumMin(inta[M][Nl,int*sum)

{inti,j,k,s=0;

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

{k=0;

for(j=l;j<M;j++)

if(a[k][i]>aU][i])k=j;

s+=a[k][i];

)

*sum=s;

)

main()

{intx[M][N]={3,2,5,1,4,l,8,3},s;

SumColumMin([]);

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

二、单选题(10题)

11.

设有定义iRtrurtIchartnadtf)2j;inlnum!sdauUrniun2;!t)«t2;,

若变量均已正确赋初值,则以下语句中

错误的是()o

A.tl=t2;

B.t2.numl=tl.numl;

C.t2.mark=tl.Mark

D.t2.num2=tl.hum2;

12.

(3)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是

().

A)需求分析B)详细设计C)软件设计D)概要设计

13.有下列程序:

#include<stdio.h>

main()

I

charb[]="happychristmas",k;

for(k=0;b[k];k++)

I

if(b[k]<<m')

b[k]=b[k]-'a'+'A';

printf("%c",b[k]);

程序执行后的输出结果是0。

A.hAppychristmAs

B.happychristmas

C.HAppyCHrlstmAs

D.HAPPYCHRISTMAS

14.下列程序执行后的输出结果是()。

main

{charx=OxFFFF;printf("%d\n",x-);}

A.-32767B.FFFEC.lD.32768

15.以下能正确定义一维数组的选项是____o

A.inta[5]={0,123,4,5};

B.chara[]={0,l,2,3,4,5};

C.chara={'A','B','C');

D.inta[5]="0123";

16.有以下程序:

#include<stdio.h>

#include<string.h>

main()

{chara[]="THIS\O",*b="OK\0\0”;

printf("%d,%d,%d,%d”,strlen(a),sizeof(a),strlen(b),sizeof(b));

)

程序运行后的输出结果是()o

A.4,6,2,4B.4,4,4,1C.6,5,2,1D.6,4,2,4

17.以下不属于C语言整数的是()。

A.12fB.25uC.-32D.+20L

18(28)以下对C语言中联合类型数据的正确叙述是().

A)定义了联合变最后,即可引用该变量或该变域中的任意成员

B)一个联合变量中可以同时存放其所有成员

C)联合中的各个成员使用共同的存储区域

D)在向联合中的一个成员进行赋值时,联合中其他成员的值不会改变

19.假定下列x和y均为int型变量,则不正确的赋值为()。

A.x+=y++B.x++=y++C.x=++yD.++x=++y

20一个长度为99的循环链表,指针A和指针B都指向了链表中的同一

个节点,A以步长为1向前移动,B以步长为3向前移动,一共需要同

时移动多少步A和B才能再次指向同一个节点0。

A.99B.100C.101D.49E.50F.51

三、程序设计题(10题)

21.

编写函数fun(),其功能是:根据以下公式求的值(要求精度0.0005,

即某项小于0.0005时停止迭代)。

«,,1^.12,I2J,1234.12-a

2113535T157135-

程序运行后,若输入精度0.0005,则程序应输出为3.14…。注意:

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

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

tftcludch>

3inciiMkVcoaicxh>

•mcludrVath>h>

doublefun(doubleep«)

(

voidmain()

doublexi

pnnif<*1npuiep«i*)i

BcanfLW.A*

prmtlC^Xfwp*,%M・PI-Kl(\a9•

«•fun(s>)i

22.n个人的成绩存放在score数组中,请编写函数proc(),它的功能是

将低于平均分的人数作为函数值返回,将低于平均分的分数放在down

所指的数组中。例如,当score数组中的数据为{99,80,40,56,59,

84,60,76,100}时,函数返回的人数应该是4,down中的数据应为

40565960o注意:部分源程序给出如下。请勿改动main()函数和其

他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干

语句。试题程序:

9aneludek>

9inriudeVcooio.h>

Stnrludr<Ndxxh>

SincludeV,tr«ng.h>

uMproc(miscorrf;.mt••«m4owrCl>

roidmaiii()

inil・n«down[9]i

mitcorrO—<99。*0・40*”・5九弘・

•0«7<.|00|1

♦ywtem(*CLS*)i

pvoe<Mx>r*«9・down)।

pnntf(*\ndowntotbeaverage«corraret*)।

k>r<i・Oiynil+♦>

pnntf(*%d*»downf|]>i

prmt"・\n*)t

23.

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

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

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

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

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

*mcluje<.»tdbhb>

8include<eomo,h>

<mdidh>

”Vaih.h>

doubleproctdoublr«•mi•>

voidmaifi<)

*CLS*>(

pnfitl<*K(M«pror<0.3«23))i

24.

编写函数proc,它的功能是:计算和输出下列级数的和。S=1/(12)

+1/(23)+...+"(n(n+l))例如,当n=20时,函数值为0.952381。

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

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

题程序:

stndtxl*Vjirtlbb.h>

Utndude<conidh>

,indud#b>

doubleproctmin>

VOtdBTVItflC>

■ee<"CLS*)I

prtni«*Sf\ne»proc(IO>)^

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

案的项目中包含一个源程序文件progl.co在此程序中,编写函数fun(),

其功能是将s所指字符串中ASCII值为奇数的字符删除,将剩余字符形

成的新字符串放在t所指数组中。

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

ASCII值为奇数,字符1的ASCH值也为奇数,都应当删除,其他依

此类推。最后t所指的数组中的内容应是“BDF24”。

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

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(char*s,chartf])

(

)

main()

(

chars[100],t[100],Msg[]-'Pleaseenterstrings:";

printf(Msg);

scanf("%s",s);

fun(s,t);

printf("\nTheresuitis:%s\n”,t);

)

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

的项目中包含一个源程序文件prog“。在此程序中,定义了NxN的二

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

数组上三角元素中的值乘以m。若m的值为2,a数组中的值为197238456

则返回主程序后a数组中的值应为2181426164512注意:部分源程序在

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

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

序:l#include2#include3#include4#include5#defineN56voidfun(inta[][N],int

m)7{89}lOmain()ll{l2inta[N][N],m,i,j;13FILE*out;14printf("***Thearray

***\n");15for(i=0;i<n;i++)

16{for(j=0;j<n;i++)

27{for(j=0;j38{for(j=O;j<n;j++)

39fprintf(out,"%4d",a[i][j]);40fprintf(out,"\n");41}42fclose(out);43/*******

**found********/44}lvoidfun(inta[][nl,intm)2{3inti,j;4for(j=0;j<n;j++)

5:for(i=0;i<=j;i++)6:a[i][j]=a[i皿*m;/*上三角元素中的值乘以m*/

27.编写函数fun,其功能是:求出1〜1000之间能被7或11整除,但

不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通

过n返回这些数的个数。

注意:部分原程序在文件PROG1.C中。

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

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

#inr|udt*<h>

voidfun(ini•a,int•n)

tnain()

Iiniaa[1000],n,k(

voidNONO();

fun(aa,&n);

H>r(k=0;k))

if((k♦!)%10==0)pnntf(M\nM):

e!wprintf(**%5d*.aak]);

NONO();

voidNONO()

”•本函数用于打开文件,输入测试数据,调用fun雨数•输出数据,关闭文件•/

in<«a[1000]en,k;

FILEafp:

S-foprn("out.dat"w**)j

fun(aa.An);

fnr(ks0;k<n;k4♦)

w

if((k♦1)%10»«O)fprintf(fpt*\n);

rlwfprintf(fp.*%5d".aa[k]):

岫y(fp);

28.

编写函数intproc(intlim,intaa[M]),该函数的功能是求出小于或等于

lim的所有素数并放在aa数组中,该函数返回所求出的素数。例如,

若输入12时,则输出:235711。注意:部分源程序给出如下。请

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

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

*includeVstdlib.h>

:include<conio.h>

辛includeVstdio.h>

宰defineM100

intproc(intlim*intaa[M])

voidmain(>

(

int

intarrfMli

^ystemC"Cl^")i

printfL输入•个整数・),

"%d"♦&limit)।

sum=proc(limit«arr)i

for(i-10;iVsum।i++)

(

if(i%10==0&&i!-0)〃每行输出10个数

printf("\n*)»

printf(H%5d*»arr[ij)i

}

</n;j++)

</n;j++)

<n;i++)

</n;i++)

29.请编写函数proc,该函数的功能是:将M行N列的二维数组中的

数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放

在形参n所指的存储单元中。

例如,若二维数组中的数据为

13233343

14243444

15253545

则一维数组中的内容应该是132333431424344415253545。

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

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

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

试题程序:

#include<stdio.h>

voidproc(int(*s)[103,int*b,int*n,intrain.intnn)

(

}

voidmain

(

intarr[10][10]={{33,33,33,33),{44,44,44,44},

{55,55,55,55}),i,j;

inta[100]={o),n=o;

printf("Thematrix:\n");

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

(

for(j=O;j<4;j++)

printf("%3d",arr[i][j]):

printf("\n");

)

proc(arr,a,&n,3,4):

printf("TheAarray:\n");

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

printf("%3d",a[i]):

printf("\n\n");

30.下列程序定义了MxM的二维数组,并在主函数中自动赋值。请编

写函数fun(intarr[][M]),该函数的功能是使数组左下半三角元素中的

值全部置成0。例如,arr数组中的值为:

I23

■rrw4S6

789

MlMtWRFrf«rrCtOI中仲值应力.

023

f00<

AAA

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

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

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

试题程序:

ssmeltMlkVCOIMXh>

:£meludrVadic.h>

9include<Csldbk.h>

smcludrVlime.h>

9defineM5

midpfor<IMarr[]£M2>

Eidmam<)

initrr£M'[M,.i«ie

ay«iem(*CLS")।

pniiifc•••••Tbtarray••••\»*)।

・r・nd《(urvHgrMxl)timc<NULL))i

(or(i-Oit^Mi>4"+>

//i*t-个■机的5・SM・

r«nd<>MIOI

print”•%4d"・.rr[i]3)B

printf(a\n*)i

proc^arr)(

pnmfCTHERESVLT\n*)>

fort*>

foHj・0,«+)

pEMf(・为..tfG:[j]”

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

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

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

例如,若输入:edeba,则应输出:abcdeo

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

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

1linclude<stdio.h>

2linclude<string.h>

3voidfun(chart[])

4(

5charc;

6int1,j;

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

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

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

10/♦♦********found**w********/

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("XnPleaseenteracharacter

string:R);

22gets(s);

23printf(w\n\nBeforesorting:\n

\W,s);

24fun(s);

25printf("XnAftersortingdecendingly:

\n\W,s);

26

32.下列给定程序中,函数fun()的功能是:通过某种方式实现两个变量

值的交换,规定不允许增加语句和表达式。例如变量a中的值原为8,

b中的值原为3,程序运行后a中的值为3,b中的值为8。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

intfun(int*x,inty)

intt;

/***************'£iQund***************/

t=x;x=y;

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

return(y);

)

main()

{inta=3,b=8;

clrscr();

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

b=fun(&a,b);

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

)

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

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

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

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

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

试题程序:

#include<stdio.h>

#include<conlo.h>

voidfun(longs,long*t)

{intd;

longsl=l;

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

t=0;

while(s>0)

{d=s%10;

/*************^Qund**************/

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

)

34.给定程序M0D11.C中函数fun的功能是:从低位开始取出长整型

变量s中奇数位上的数,依次构成一个新数放在1中。高位仍在高位,

低位仍在低位。

例如,当S中的数为:7654321时,t中的数为:753lo

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

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

1tinclude<stdio.h>

2Z************found****♦*******/

3voidfun(longs,longt)

4{longsl-10;

5*t-s%10;

6while(s>0)

7(s■s/100;

8*t-s%10,si+*t;

9/♦***w*******found*******♦***♦/

10si■sl*100;

11)

12)

13main()

14{longsrt;

15printf("\nPleaseenters:;

R

scanf("%ld#&s);

16fun(sr&t);

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

18

35.下列给定程序中,函数fun()的作用是,将字符串tt中的大写字母都

改为对应的小写字母,其他字符不变。例如,若输入"Ab,cD",则输出

"ab,cd"0

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

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

试题程序:

#include<stdio.h>

#include<string.h>

#include<conio.h>

char*fun(chartt[])

(

inti;

for(i=0;tt[i];i++)

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

{if(('A,<=tt[i]||(tt[i]<='z'))

tt[i]+=32;}

return(tt);

)

main()

{inti;

chartt[81];

clrscr();

printf("\nPleaseenterastring:");

gets(tt);

printf("\nTheresultstringis:\n%s",fun(tt));

)

36.给定程序M0D11.C中函数fun的功能是:将s所指字符串的正序

和反序进行连接,形成一个新串放在t所指的数组中。

例如,当s所指字符串为:“ABCD”时,则t所指字符串中的内容应为:

“ABCDDCBA”。

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

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

1♦include<stdio.h>

2*include<string.h>

3/…………"und…………/

4voidfun(chars,chart)

5(

6inti,d;

7d・strlen(s);

8for(i=0;i<d;t[i]»s[1];

9for(i,0;i<d;i++)t[d+i]=

s(d-l-i);

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

11t[2*d-l)-,\0,;

12

13main()

14(

15chars[100],t[100];

16printf(w\nPleaseenterstringS:w);

Rw

scanf(%s#s);

17fun(s,t);

wn

18printf(\nTheresultis:%s\nrt);

19

37.给定程序MODU.C中函数fun的功能是:用下面的公式求兀的近

似值,直到最后一项的绝对值小于指定的数(参数num)为止:

一xM1.I11•••

4357

例如,程序运行后,输入0.0001,则程序输出3.1414°

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

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

**include<math.h>

2!finclude<stdio.h>

3;floatfun(floatnum)

{ints;

floatn,t,pi;

s*1;

while(t>=num)

pi=pi♦t;

n・n♦2;

12!s«-s;

13I/•肯•★•••**■■•♦found*

14\t«s%n;

15

16pi-pi♦4;

17returnpi;

18

19main(J

20;(floatnl,n2;

21!printf("Enterafloatnumber:w);

22;scanf(0%f&nl);

23:n2-fun(nl);

Hw

24iprintf(%6.4f\nrn2);

25•1

38.给定程序M0D11.C中函数fun的功能是:先从键盘上输入一个3

行3列矩阵的各个元素的值,然后输出主对角线元素之和。

请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使

它能得出正确的结果。

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

1;#include<stdio.h>

2Ifinclude<string.h>

3voidfun()

4(

5inta[3][3],sum;

6intj;

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

8!;

9jprintf("Inputdata:w);

10;for(i-0;i<3;i*+)

11{for(j・0;j<3;j++)

12*********/

wR

13scanf(%dra[i](jj);

14

15for(i-0;i<3;

16sum-sum*a(i)[i];

Hw

17printf(Sum»%d\nrsum);

18}

19main()

20(

21fun();

22

39.下列给定的程序中,函数fun()的功能是;将s所指字符串中出现的

n所指字符串全部替换成t2所指字符串,所形成的新的字符串放在w所

指的数组中。在此处,要求H和t2所指字符串的长度相同。例如:当

s所指字符串中所指的内容为abcdabfab,tl所指字符串中的内容为ab,

t2所指字符串中的内容为99时,结果在w所指的数组中的内容应为

99cd99f99。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

/*************^Qund**************/

intfun(char*s,char*tl,char*t2,char*w)

inti;char*p,*r,*a;

strcpy(w,s);

while(*w)

{p=w;El;

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

while(r)

if(*r==*p){r++;p++;}

elsebreak;

if(*r=='\0')

{a=w;r=t2;

/*************■J^Qurid**************/

while(*r){*a=*r;a++;r++}

w+=strlen(t2);

elsew++;

)

main()

{chars[100],tl[100],t2[100],w[100];

clrscr();

printf("\nPleaseenterstringS:");

scanf("%s",s);

printf("\nPleaseentersubstringtl:");

scanf("%s",tl);

printf("\nPleaseentersubstringt2:");

scanf("%s",t2);

if(strlen(tl)==strlen(t2))

(

fun(s,tl,t2,w);

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

)

elseprhitf("Error:strlen(t2)\n");

40.给定程序中,函数fun()的功能是:使数组中的元素的值缩小5倍。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

floatmflO];

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

intfun(void)

intj;

printf("Insubfuncaftercalling\n");

for(j=O;j<10;j++)

/*************^Qund**************/

print("%f",m[j]%5);

)

main()

inti;

printf("Inmainbeforecalling\n");

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

m[i]=i+20;

printf("%f",m[i]);

)

fun();

printf("\nlnmainaftercalling\n");

fbr(i=O;i<10;i++)

printf("%f",m[i]/5);

)

五、程序改错题(2题)

41.

下列给定程序中,函数fun的功能是:从整数10-55,查找能被3整除且

有一位上的数值是5的数,把这些:故放在b所指的数组中,这些数的

个数作为函数值返回。规定函数中al放位数,a2放十位数。

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

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

试题程序:

include<stdio.h>

i;itfun(int*b)

{intk,al,i=0;

for(k=:IO;k<=55;k++)

产m**********a)und*****************/

a2=k/tO;

al=k-a2*10;

if((k%3^==0&&a2==5)fl(k%3==0&&

al==5))

).

/*****************lhund*****************/

returnk;

returnk;

ma:n()

inta[100J»k,m;

m=fuh(a);

printf(n,D]eresultis:\n");

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

printf(',%4d,>[k]);

printf「\n”X

42.

下列给定程序中函数fun()的功能是:求出如下分数序列的前n项之

和,结果通过函数值返回。

T2.*2T*AT*TA*1T2*n

例如,若n=5,则应输出8.391667。请改正程序中的错误,使其得出

正确的结果。注意:不要改动main()函数,不得增行或删行,也不

得更改程序的结构!试题程序:

2iftcludr<Ktdlili.h*1

UmcludrVcomo»h>

smcludeV«uliQ,h>

/••••iound••••

(Ufl(Mlt■)

itx・一2.bwI•c.bi

4o«ble«*0»0i

,WhlkV♦)

//••••••••

<

•・•♦<Do«i4t>a.bi

r»iuni<•>।

rOtdNMiB<>

uitfi-6,

・»tMn<-CLS*)•

(E\ATWvalwol(aBctsMi

六、操作题(2题)

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

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

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

如,输入3个边长为3,4,5,实际输入时,数与数之间以Enter键分隔

而不是逗号。请修改程序中的错误,使它能得出正确的结果。注意:

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

题程序:

•*ifirlodrV加点dh>

答includeCnuith.h>

ifiiproHsnt«»mib»intc)

Ab*♦>•&&a+・〉!»》

4fcbK&b--*c)

//••••louad••••

return11

♦!”东•―■、|b""cl!>―~c>

mum2i

//••••found••••

eb*rviwm3i

)

ehemurnOi

voedouim()

KUa»b>r«>lMprt

prmif(M\ntnpul・・b・ci•).

・enR・%d%d%di

pruidL'na**%d.b-Kd«%d\tT.a・b・c)i

Rhapceaproc(««b»c)i

prm<l("\n\nThcshape,%dXn*.shape).

44.以下程序运行后的输出结果是[]o

#include<string.h>

voidfun(char*s,intP,intk)

{inti;

for(i=p;i<k-l;i++)s[i]=s[i+2];

main()

{chars[]="abcdefg";

fun(s,3,strlen(s));puts(s)

参考答案

1.完整性控制完整性控制

2.24682,4,6,8解析:子函数fun()的功能是将数组a中的元素都自加一

遍,然后仍然将结果存在原数组中,其实就是将数组a的每个元素都变

为原来的2倍,然后输出。在主程序中首先通过intfun。定义了子函数

fun(),然后再调用fun()o

3.中序中序解析:在先左后右的原则下,根据访问根结点的次序,二叉

树的遍历可以分为三种:前序遍历、中序遍历和后序遍历.前序遍历是

指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,

然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访

问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结

点、遍历左了树与遍历右子树这三者中,首先遍历左子树,然后访问根

结点,最后遍历右子树:并且遍历左、右子树时,仍然先遍历左子树,

然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左

子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后

遍历左子树;并且遍历左、右子树时,仍然光遍历右子树,然后访问根

结点,最后遍历左子树。

4.00解析:本题中的for循环共执行了6次,每执行一次将相应i的值

相乘,最后当i=-1时停止循环.该for循环执行完后t的值为

5*4*3*2*1*0=0,故最后输出I的值为0。

5.上溢上溢解析:入队运算是指在循环队列的队尾加入一个新元素。这

个运算有两个基本操作:首先将队尾指针进一(即rear=rear+1),并当

rear=m+l时,置rear=1;然后将新元素插入队尾指针指向的位置。当

循环队列非空(s=1)且队尾指针等于队头指针时,说明循环队列已满,

不能进行人队运算,这种情况称为“上溢”。

6.t*10或或10*t解析:本题要求累加一系列有规律的数,从

输出结果来看,s保存的是最终结果,而s在循环体中,每次累加一个

t,则说明t在5次循环中分别等于1.12、123、1234、12345;而t每

次循环等于“填空内容”加上循环变量i.又因为i在5次循环中分别等

于1、2、3、4,5,所以t每次循环要加的“填空内容”应分别为0、10、

120,1230,12340,这一系列值正好是前一次t的值的10倍.所以“填

空内容”应是伊10。

7.282,8解析:do...while语句的功能是:首先执行循环体语句,然后检

测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退

出循环。这里程序初始时a=l,b=10,经过操作b-=a;a++后b=9,a=2,

判断条件b-<0不成立,退出循环,但b的值被减1,因此结果为:

a-2,b=8°

8.3232解析:while(表达式)的功能是:首先计算表达式的值.若为真,

则执行循环体语句,执行完毕,再计算表达式的值.若仍为真,则重复

执行循环体语句,直到表达式的值为假,结束while语句的执行,继续

执行while语句后面的语句;i=0时满足循环条件,也满足if的条件,

执行语句得i=U,a=U,第2次循环不满足if的条件,执行i—,i=10,

执行i+=ll;a+=i后,得i=21,a=32,不满足i<20,循环结束。

9.扇出扇出解析在结构图中,调用一个给定模块的模块个数称为扇入,

一个模块直接调用的其他模块个数称为扇出。

lO.x&sx,&s解析:函数SumColumMin中变量k存放一列数组元素中

值最小的数组元素的行标,函数通过形参sum带回值,sum是指针变量,

将s中的值赋给*sum。空为函数调用,函数SumColumMin有两个形参,

二维数组和指针变量,故空中应填x,&so

11.C

结构体变量中的第一成员都是数组,不能直接将变量tl的成员mark数

组的地址赋给另一个变量t2的成员mark数组的地址。因为地址都是

固定值,不能被赋值。结构体可以进行整体的赋值。

12.A

13.C

程序定义一个字符数组b和一个字符变量kofor循环通过循环变量

k,遍历数组b中的各个字符,通过if语句判断当前下标为k的字符的

ASCII值与字符'm,的ASCII值的大小,ASCII值小于,m,的ASCII值的

字符改成大写字母(b[k]=b[k]」a=A),然后输出b[k]。在字符串

“happychristmas”中,ASCII值小于'm'的字符有h,a,c,h,i,a,所

以程序输出:HAppyCHrlstmAso本题答案为C选项。

14.C

因为x=0xFFFF=11111111,因此当以整型形式输出时对应的数为一

lo

15.B解析:选项A)定义的是长度为5的数组元素,但初值有6个元素,

所以错误;选项C)不符合数组定义形式,数组名后应加上切;选项D)

的类型说明符错误,应改为char;选项B)中的0,1,2,3,4,5分别

表示对应字符的ASCII码,所以正确。

16.Astrlen函数求得参数中字符串的长度(不包括字符串结束标识“\\0”)

sizeof函数求得特定类型参数所占存储空间的长度。题干中a是数组名,

由于定义时省略维数大小,因此数组大小是初始化的字符个数,即a的

数组大小为6。综上,strlen(a)只计算字符力”“S”,结果为43izeof(a)

求得数组a的大小,结果为6;指针b指向一个字符串“OKWOWO",所以

strlen(b)只计算字符结果为2;sizeof(b)求得指针占用存储空间

的大小,结果为4。故本题答案为A选项。

17.AC语言中整型常量,从表示形式来看,有十进制、八进制或十六进

制;从符号位来看,有有符号整数和无符号整数两类。选项A的“12广

是float类型的实数,不是整数;选项B的“25u”属于无符号整数;选项

C的“-32”是十进制形式的有符号整数;选项D的“+20L”是十进制形式

的长整数。故本题答案为A选项。

18.C

19.B

20.A

21.

【解析】此题考查的是用迭代法求多项式的值。通过观察题目中给出的

数学公式可知,后面一项是前面一项乘以n/(2*n+l),发现这个规律后,

问题迎刃而解。通过定义double类型变量,并且赋初值,用来存放多项

式的总和。此题中需要注意的是,表示每一项的S1和表示多项式之和

的s,两者的初值都是1.O0

22.

【解析】要找到所有学生中成绩低于平均分数的人数,首先需要算出所

有学生的平均成绩。然后将所有学生的成绩与平均成绩相比较。将低于

平均分数学生的记录存放在新的数组中,并将低于平均分数的学生数返

回给主函数。

23.

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

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

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

24.

【解析】首先定义一个变量来表示其和s,通过n次循环求出n项的和,

最后将所得到各项的和值返回给主函数。

25.voidfun(char*s,chart[])

(

inti,j=0,n;

n=strlen(s);

/*遍历整个数组*/

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

/*如果元素的ASCII值为偶数*/

if(s[i]%2==0)

(

/*将元素保存到t中*/

t[j]=s[i];

j++;

)

)

要删除ASCH值为奇数的字符,也就是要保留ASCII值为偶数的字符,

将ASCH值为偶数的字符保存到新字符串。所以本题的算法是对原字

符串从头到尾进行扫描,找出ASCII值为偶数的字符并依次存入数组。

26.1voidfun(inta[][n],intm)2{3inti,j;4for(j=0;j<="">5for(i=0;i

<=j;i++)6a[i][j]=a[i][j]*m;/*上三角元素中的值乘以m*/7}本程序

实现的是:矩阵上三角元素的值乘以mo上三角元素下标的特点是行下

标小于等于列下标,即"i<=『使用循环语句遍历数组元素,第1个循环

用于控制列坐标,第2个循环用于控制行下标。

27.

【考点分析】

本题考查:if语句,用来判断能被7整除或者能被11整除,但是又不

能同时被7和11整除的数,在这里充分理解“逻辑与“和“逻辑或”的区

别;for循环语句的循环变量用来控制取值范围。

【解题思路】

该题需要运用循环判断结构来实现,其中循环语句比较容易,只要确

定循环变量的范围即可,下面来看判断语句,题目要求找出能被7或

11整除,但不能同时被7和11整除的所有整数。能同时被7和11整

除的整数一定能被77整除,且不能被

77整除的数不一定就是能被7或11整除的数,所以可得出程序

温馨提示

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

评论

0/150

提交评论