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

下载本文档

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

文档简介

2023年湖北省武汉市全国计算机等级考试

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

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

一、2.填空题(10题)

1.诊断和改正程序中错误的工作通常称为【】。

2.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其

中,是用户的数据视图,也就是用户所见到的数据模式。

3.以下程序的功能是:处理由学号和成绩组成的学生记录,N名学生的

数据已在主函数中放入结构体数组s中,它的功能是:把分数最高的学

生数据放在h所指的数组中,注意:分数高的学生可能不只一个,函数

返回分数最高学生的人数。请填空。

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b)

{inti,j=0,max=a[0].s;

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

if(max<a[i].s)max=a[i].s;

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

if(【】)bU++]=a[i];

returnj;

)

main()

{STRECs[N]={{"GA005",85},{"GA003",76},{"GA002",69},

{"GA004",85},

{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GAO13",91},{"GAO12",64},{"GA014",91},

{"GAO11",66},{"GAO17",64},{"GAO18",64},{"GAO16",72)

);

STRECh[N];

inti,n;FILE*out;

n=fun(s,h);

printf("The%dhighestscore;\n",n);

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

printf("%s%4d\n",h[i].num,h[i].s);

printf("\n");

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

fprintf(out,"%d\n",n);

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

fprintf(out,"%4d\n",h[i].s);

fclose(out);

)

4.数据的逻辑结构在计算机存储空间中的存放形式称为数据的【】。

5.有如下图所示的双链表结构,请根据图示完成结构体的定义:

Iheaddatarchild

structaa

{intdata;

[]}node;

6.在面向对象方法中,信息隐蔽是通过对象的性来实现的。

7.x、y、x均为int型变量,描述"x、y和z中至少有两个为正数”的表达

式是______O

8.由计算机、操作系统、DBMS、数据库、应用程序及用户组成的一个

整体叫做【】0

9.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是[]0

10.执行下面程序段后,k的值是【】。

r=l;n=203;k=l

do{k*=n%10*r;n/=10;r++;}while(n);

二、单选题(10题)

11.

(13)以下标识符不是关键字的是().

A)breakB)charC)switchD)return

12.下列程序的输出结果是()。

餐indiMk<st<bo«

Sinr]ud<<Mrtn9.h>

voidmi

<»tactcml••OB

do

(+

(while<+♦

)

HMItflC)

Itnt(1

foKk-OskVS」——)printf(*Wd*♦•CkJ>i

A.13579B.48579C.48549D.48999

13.下列二维数组的说明中,不正确的是()。

A.floata[][4]={0,l,8,5,9);

B.inta[3][4]

C.#defineN5floata[N][3]

D.inta[2][9.5];

14.有以下程序:

#include<stdio.h>

main()

{inta=0,b=0,c=0;

c=(a=a=5);(a=b,b+=4);

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

)

程序运行后的输出结果是()oA.O,4,5B.4,4,5C.4,4,4D.0,

0,0

15.面向对象方法中,继承是指()。

A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.

各对象之间的共同性质D.类之间共享属性和操作的机制

16.以下一维数组a正确的定义是()

A.inta(5)B.intn=5,a[n]C.inta[SZ]其中SZ为符号常量D.inta{5}

17.下列叙述中错误的是()。

A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值

B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容

C.在C语言中,外部变量的隐含类型是自动存储类别

D.在C语言中,函数形参的存储类型是自动(auto)类型的变量

18.现有二叉搜索树(BST)前序遍历结果序列为abdefgc,中序遍历结果序

列为debgfac,请问后序遍历结果序列为0

A.debgfaCB.edgfbcAC.edgbfcAD.degbfaC

19.下面排序算法中,初始数据集的排列顺序对算法的性能无影响的是()

A.堆排序B.插入排序C.冒泡排序D.快速排序

20.有以下程序:

#include<stdio.h>

intfun(intx,inty)

{if(x!=y)

return((x+y)/2);

elsereturn(x);

)

main()

{inta=4,b=5,c=6;

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

)

程序的运行结果是()。

A.6B.3C.8D.12

三、程序设计题(10题)

21.

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

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

x/2-l+1/3+1♦2/(3•5)+1•2•3/(3•5•7)4-1

•2»3»4/(3«5»7•9)+,,,+1»2•3•••••n/(3•5•

7w•••»(2n4-1)1

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

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

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

Minclude<conio.h>

UincludeVstdio.h>

3includeVmath.h>

doubleproc(doubleeps>

voidmain()

(

doublesi

printf("\nPkascenteraprecision:*)i

primfC*\nPi—%lf\n*,proc(s))t

22.

请编写一个函数proc(),它的功能是:比较2个字符串的长度(不得

调用C语言中求字符串长度的函数),函数返回较长的字符串。若2个

字符串长度相等,则返回第1个字符串。例如,若输入jiangxi<;Enter>;

beijing<;Enter>;则函数返回jiangxio注意:部分源程序给出如下。

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

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

£includeVzdio.h>

rhar•proHcKar•«•char•f)

voidmam<)

chaii{20j.b[i0j«•p・•q,

prtaifC*Inputilhsiring:")»

gtiA(a)i

p>nRt(<*Input2thtiriRgt*)g

gt<B<b)i

pruitf(•%.**・proc《■・b》).

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

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

fun(),其功能是根据以下公式求P的值,结果由函数值返回。m与n

______m!

为两个正整数且要求m〉n。“n!(m-n)!例如:m=12,n=8时,

运行结果为495.000000。注意:部分源程序在文件progl.c中。请勿改

动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中

填入你编写的若干语句。试题程序:

1tinclude<stdio.h>

2floatfun(intm,intn)

3{

4

5)

6main()/»主函数♦/

7(voidNONO();

8printf(MP-%f\n”,fun(12,8));

9NONO();

10}

11voidNONO()

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

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

13FILE♦fpz♦wf;

14inti,m,n;

15floats;

16fp«fopenMrn);

nMMH

17wf=fopen(out.datrw);

18for(i=0;i<10;i4-+){

M

19fscanf(fprd,%d,&n);

20s=fun(m,n);

21fprintf(wf,•'%f\nH,s);

22}

23fclose(fp);

24fclose(wf);

25}

24.编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返

回此值。例如,若输入字符串123412132,输入字符为1,则输出3。

注意:部分源程序在文件PRO©.C中。

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

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

tinclude<stdio.h>

tinclude<string,h>

defineM81

inffim(char•M,charc)

main()

Ichara[M].ch;

voidNONO();

printf("\nPleaseenterastring:*);ge<8(a);

printf(*\nP1e«seenterachar:");ch=getchar();

printf(*\nThenumberofthecharis:%d\n",fun(a,ch));

NONO();

I

voidNONO()

|/»本函数用于打开文件,输入测试数据,调用fun函数,输出数据.关闭文件。*/

imi;

FILEerf,•wf;

chara[M],b[M],ch;

rf=fopen("in.dat"."r");

wfsfopen("out.dal",*w");

for(i«0;i<10;i4+)

I

fecanf(rf,a);

f»canf(fftb):

ch=•b;

w

fprintf(wf.%c«%d\n*,ch.fun(atch));

I

fcloec(rf);

fcloee(wf):

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

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

其功能是根据以下公式求兀的值(要求精度0.0005,即某项小于0.0005

时停止迭代)O

X=1+±+ps2Ix2j<3+12<2x3x4

233x53x5x73x5x7x9

__1x2x…xn

3x5x•••x(2n-F1)

程序运行后,若输入精度0.0005,则程序应输出为3.140578。

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

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#include<math.h>

doublefun(doubleeps)

{

)

voidmain()

(

doublex;

printf("Inputeps:^^);

scanf("%lf',&x);

printf("\neps=%lf,PI=%lf\n”,x,fun(x));

26.

请编写一个函数voidproc(chara[],charbE3,intn),其功能是:删除

一个字符串中指定下标的字符。其中,a指向原字符串,删除后的字符

串存放在b所指的数组中,n中存放指定的下标。例如,输入一个字符

串student,然后输入5,则调用该函数后的结果为studet。注意:部分

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

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

#includeVwtdlib.h>

★include<stdio.h>

第include<conio.h>

5defineN2。

voidproc(chnraf]•charb[].intn)

(

I

voidmain()

{

charstr![N].Mr2[N]t

intni

xyyuem("CIf”>i

printf("Enterthestring:\n")t

gets(strl)i

printf("Enterthepositionofthesiringdeleted»

*),

scan1&-n)i

proc(strl«»tr2•n)i

printf("Thenewstringis:i

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

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

其功能是删除一个字符串中指定下标的字符。其中,a指向原字符串,

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

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

为“Word”。

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

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

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

试题程序:

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

#defineLEN20

voidfun(chara[],charbf],intn)

{

}

voidmain()

(

charstr1[LEN],str2[LEN];

intn;

system(“CLS”);

printf("Enterthestring:\n^^);

gets(strl);

printf("Enterthepositionofthestringdeleted:,,);

scanf("%d",&n);fiin(strl,str2,n);

printf("Thenewstringis:%s\n^^,str2);

)

28.输出1—100之间不能被12整除的数。

29.有一个一维数组,内放10个学生成绩,写一个函数,求出平均分。

30.请编写一个函数voidproc(char*str),其功能是:将字符串str中所有

下标为偶数位置上的字母转化为大写(若该位置上不是字母,则不转换)。

例如,若输入字符串:“thankyou6verymuch",则应输出:

“TbAnKYoU6vErYMuCh”。注意部分源程序给出如下。请勿改动main

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

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

*includeVcocUo^b>

丹includeVzdio.h>

*includeVndlih.h>

void(m)c<char•xr)

«wdn»»in()

chartt(513i

"Cl^5")i

pfint«.ptmxeeierancharacterBtnnc

wiihrtn$0cHanKier«An")i

pnotfCE\B\IIAfterchan<tng.tbczri®g\Wtt〃

prar<tt)s

print”.\tibcconK9\f>

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

31.给定程序MODII.C中函数fun的功能是:把主函数中输入的3个

数,最大的放在a中,最小的放在c中,中间的放在b中。

例如,输入的数为:551234,输出结果应当是:a=55.0,b=34.0,

c=12.0o

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

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

finclude<stdio.h>

2voidfun(float*a#float*b^float*c)

4/***♦•**♦**found***♦**♦**♦/

5float*k;

6if(*a<*b)

7{k«*a;*a-*b;*b-k;}

8/♦*♦♦♦♦***wfound*w****w***/

9if(*a>*c)

10(k-*c;*c»*a;*a-k;}

11if(*b<wc)

{k-*b;*b-*c;*c-k

131

14main()

15{floata,b,c;

16printf(wInputabc:*);scanf

R

17printf(a・%4.Ifrb■%4.Ifrc

fV

■%4.1f\n\nrafb,c);

18fun(&a,&b,&c);

w

19printf(a-%4.If,b■%4.Ifrc

■%4.1f\n\n"rarbrc);

20

32.下列给定函数中,函数fun()的功能是:统计字符串中各元音字母(即

A,E,I,O,U)的个数。注意:字母不分大小写。例如,输入THIsis

aboot,则应输出是10220。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

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

fun(char*s,intnum[5])

{intk,i=5;

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

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

num[i]=0;

for{;*s;s++)

{i=-l;

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

switch(s)

{case'a':case'A':{i=0;break;}

case'e':case'E':{i=l;break;}

case'i':caseT:{i=2;break;}

case'o':case'O':{i=3;break;}

case'u':case'U':{i=4;break;}

)

if(i>=0)

num[i]++;

)

)

main()

{charsl[81];intnuml[5],i;

clrscr();

printf("\nPleaseenterastring:");

gets(si);

fun{sl,numl);

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

printf("\n");

)

33.下列给定程序中,函数fun()的功能是:输出M行N列整数方阵,

然后求两条对角线上的各元素的平方和,返回此和数。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#defineM5

intfun(intn,intXX[][M])

(

inti,j,sum=O;

printf("\nThe%dx%dmatrix:\n",M,M);

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

(

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

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

printf("%4d",XX[ij]);

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

printf('\n');

)

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

sum+=xx[i][i]*XX[i][i]+XX[i][n-i-1]

*XX[i][n-i-l];

retum(sum);

)

main()

(

intaa[M][M)={{3,12,4,24,35},

{11,3,3,7,56},{61,27,58,49,24},

{17,28,7,36,85},{15,33,5,24,9}};

clrscr();

printf("\nTheresultofallelementson2

diagnalsiS%d",fun(M,aa));

34.下列给定程序中,函数fun()的功能是:从s所指字符串中,找出t

所指字符串的个数作为函数值返回。例如,当s所指字符串中的内容为

abcdabfab,t所指字符串的内容为ab,则函数返回整数3。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

intfun(char*s,char*t)

{intn;char*p,*r;

n=0;

while(*s)

{p=s;

r=t;

while(*r)

/******不*******fk)und*不***不********/

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

elsebreak;

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

if(r=='\0')

n++;

s++;

)

returnn;

)

main()

{chars[100],t[100];intm;

clrscr();

printf("\nPleaseenterstrings:");

scanf("%s",s);

printf("\nPleaseentersubstringt:");

scanf("%s",t);

m=fun(s,t);

printf("\nTheresultis:m=%d\n",m);

)

35.给定程序MODD.C中函数fun的功能是:比较两个字符串,将长

的那个字符串的首地址作为函数值返回。

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

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

♦include<stdio.h>

2/••••found…•……/

3charfun(char*srchar*t)

4{intsl«=0rtl»0;char*ssr*tt;

5ss«s;tt»t;

6while(*ss)

7{sl++;

8/♦♦♦******♦found*♦*♦****♦♦/

9(*ss)

10}

11while(*tt)

12(

13/……★•••found…*……/

14

15}

16if(tl>sl)returnt;

17elsereturns;

18}

19main()

20{chara[80]rb[80);

21printf(H\nEnterastring:H);

gets(a);

22printf("\nEnterastringagain:

");gets(b);

23printf(w\nThelongeris:\n\n\

"%s\=\n”,fun(a,b));

24

36.下列给定程序中,函数fun()的功能是;求S的值。设

S=(22/l*30))*(42/(3*5))*(62/(5*7))*...*(2k)2/((2k-l)*(2k+l))

例如,当k为10时,函数的值应为1.533852。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

/*******不*不************/

fun(intk)

{ihtn;floats,w,p,q;

n=l;

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

).................................................................

/*********不***不**不***不******/

returns

)

main()

{clrscr();

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

)

37.给定程序中函数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);

38.下列给定程序中,函数fun()的功能是读入一个字符串(长度<20),

将该字符串中的所有字符按ASCII码降序排序后输出。

例如:输入dafhc,则应输出hfdcao

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

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

intfun(chart[])

(

charc;

inti,j;

for(i=0;i<strlen(t)-l;i++)

for(j=i+l;i<strlen(t);j++)

if(t[i]<tU])

(

c=t[jl;

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

t[i]=t[i++];

t[i]=c;

)

main()

chars[81];

clrscr();

printf("\nPleaseenteracharacter

string:");

gets(s);

printf("\n\nBeforesorting:\n%S",s);

fun(s);

printf("\nAftersortingdecendingly:\n

%s",s);

39.下列给定程序中,函数fun()的功能是将字符串s中位于偶数位置的

字符或ASCII码为奇数的字符放入字符串t中(规定第一个字符放在第0

位中)。

例如:字符串中的数据为ADFESHDI,则输出应当是AFESDIO

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

#defineN80

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

voidfun(chars,chart[])

inti,j=0;

for(i=0;i<strlen(s);i++)

/*********found*+************/

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

tU++]=s[i];

tUl-\O';

)

main()

(

chars[N],t[N];

clrscr();

printf("\nPleaseenterstrings:");

gets(s);

fun(s,t);

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

)

40.下列给定程序中,函数fun()的功能是:先从键盘上输入一个3行3

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

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

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

试题程序:

#include<stdio.h>

intfun()

inta[3][3],sum;

inti,j;

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

sum=l;

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

{for(j=O;j<3;j++)

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

scanf("%d",a[i][j]);

)

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

sum=sum+a[i][i];

printf("Sum=%d\n",sum);

)

main()

(

fun();

)

五、程序改错题(2题)

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

公式的值。

Al=I.A2=1〃l+Ai).A3=1/(14-A2).

•••.AAOI/<14-A<i))

例如,若n=12,则应输出0.618026o

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

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

构。

试题程序:

Gincludeb>

笠mcludeVemo.h>

9KHCI«MW<»idio.

〃••••found••••

mtproc(MIIn>

floatA91tintii

//•••■(ound••••

(or<iH»2ei<mi*f♦)

A,LO/<1>A)i

rtturtiAi

voidmaifiC)

ininufni

tywtcm(*CLS*>।

prtni(<a\fiPI<«!Hpenlrrnusn:*)i

*cAnf(*%dn.&DtKn)«

prmtK*A**d-SIf\n*«Dixm•prodnum>)i

42.下列给定程序的功能是:读入一个整数n(2<;=n<;=5000),打印

它的所有为素数的因子。例如,若输入整数1234,则应输出2,617。

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

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

公include<conio.h>

Sinclude<stdio.h>

//••••found•»••

Pnme(intm)i

(

inij.pj

p-11

JI•■••found«**♦

for(jH2ijVm$j++)

(

p=0;

breaki

]

rcturn(p)।

main()

inti.iu

printK"\nplcascenteranintegernumberbetween2

and5000J)i

^canf(*%d"♦&-n)i

printf(*\n\nTheprimefactor(s)of%dis(are):N«

for(t=2ii<nii4-+)

if((!(n%i»&.&(Prime(i)))

prmtf(MH4d»N»i)t

printf(**\nw)i

六、操作题(2题)

43.下列给定程序中,函数fun()的功能是:在字符串的最前端加入n个

*号,形成新串,并且覆盖原串。

注意:字符串的长度最长允许79。

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

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

试题程序;

#include<stdio.h>

#include<strzng.h>

#include<conio.h>

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

voidfun(chars[],intn)

chara[80],*p;

inti;

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

s=p;

for(i=0;i<n;i++)a[i]='*';

do

{a[i]=*p;

/*******不***不*******不***不*******/

i++;

}while(*p);

strcpy(s,a);

}

main()

{intn;chars[80];

clrscr();

printf("\nEnterastring:");gets(s);

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

printf("\nEntern(numberof*):");scanf("%d",&n);

fun(s,n);

printf("\nThestringafterinster:\%s\n",s);

44.以下程序的输出结果为【】。

main()

{intk=l;

white(k<=15)

if(++k%3!=2)continue;

elseprintf("%d",k);

printf("\n");

参考答案

1.程序调试程序调试解析程序调试的任务是诊断和改正程序中的错误。

程序调试与软件测试不同,软件测试是尽可能多地发现软件中的错误。

先要发现软件的错误,然后借助于调试工具找出软件错误的具体位置。

软件测试贯穿整个软件生命期,而调试主要在开发阶段。

2.外模式外模式解析:数据库系统的三级模式分别是内模式、概念模式

和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;

概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数

据视图,也就是用户所见到的数据模式。

3.max==a[i].smax==a[i].s解析:该程序使用循环嵌套,第1个for语句

的作用是找出最大值。第2个循环的作用是找出与max相等的成绩,也

即最高成绩的学生,并存入b中。

4.模式或逻辑模式或概念模式模式也称逻辑模式或概念模式,是数据库

中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,例

如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等。

5.structaa*lhead*rchild;structaa*Ihead,*rchild;解析:结构体对链表

的定义。

6.封装封装

7.((x>0)&&(y>0))||((x>0)&&(z>0)||((y>0)&&(z>0))((x>0)&&(y>

0))||((x>0)&&(z>0)||((y>0)&&(z>0))解析:题目要求“x、y和z中至

少有两个为正数”,即x、y和z这3个数中必须有两个是正数,且这3

个数中的哪两个数都有可能是正数,所以它们之间是或的关系。

8.数据库系统数据库系统

9.77解析:此表达式为三目运算符,++a的值为6,b-的值为6,则整

个表达式的值为++a的值,++a的值为7O请注意前缀++,-和后缀++,

一的区别。

10.00解析:本题考查的是do和hile循环。第一次执行循环体,因为

k=l,Ll,n=20,所以k=l*20%10*l=0,n=20/10=2,r=2;第二次执行循环

体,k=0*2%10*2=0,n=10/10=1,r=3;第三次执行循环

体,k=0*l%10*3=0,n=l/10=0,r=4,所以k的值为0。

11.C

12.C本题考查do-while循环,在fun函数中,首先定义了静态变量i=0,

do-while循环要实现的功能是以b[O]=b⑹+b⑴,b[l]=b[l]+b[2],其他元

素不变的规则重新给b数组赋值。在主函数中,通过调用fun函数,按

上面的规则对数组a重新赋值,最后输出数组a。

13.D解析:C语言规定,对于二维数组,只可以省略第一个方括号中的

常量表达式,而不能省略第二个方括号中的常量表达式:二维数组的一

般定义格式是:类型说明符数组名[常量表达式][常量表达式]。

14.A

本题考查简单的赋值运算,在程序中c=(a-=am5),先算括号中的a-=a-

5=5,所以c=5,再计算(a=b,b+=4);,a=b=O,b+=4=0+4=4,所以

b=4,所以a=0,b=4,c=5,答案选择A。

15.D继承是面向对象的方法的一个主要特征,是使用已有的类的定义作

为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的

性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和

操作的机制。

16.C

17.C解析:外部变量在编译时由系统分配永久的内存空间,所以外部

变量的类型不是自动存储类别。

18.B

19.A

20.A本题中,fun函数第1次调用为fun(8,fun(5,6))o因为fun(5,6)的返

回值为5,所以第2次调用为fun(8,5),即返回值为6。故本题答案为A

选项。

21.

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

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

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

22.

【解析】题目中要求不能用C语言中提供的求字符串长度的函数,可以

通过移动字符串指针来计算字符串的长度。定义2个变量分别存放2个

字符串的长度,最后比较2个字符串的长度,返回相对较长的那一个字

符串。

23.1floatfun(intm,fintn){Floatp1=l,p2=1,p3=1;inti;for(i=1;i<=m;i++)pi*=i;f

or(i=l;i<=n;i+4-)p2*=i;for(i=];i<=(m-n);i++)p3*=i;returnpi/(p2*p3);

本题考查循环的使用。通过3个for循环分别计算阶乘。其中pl=m!,

p2=n!,p3=(m-n)!o

24.

intfun(char*ss,charc)

inti=0;

for(;*ss!=,\04;ss++)if(}ss==c

i++/*求出*所指字符串中指定字符的个数*/

returni;

【考点分析】

本题考查:for循环语句遍历字符串,并通过if条件语句,判断字符串

是否结束。

【解题思路】

从字符串中查找指定字符,需要使用循环判断结构,循环语句用来遍

历字符串,循环条件为字符串没有结束,即当前字符不是,\0',判断

语句用来判断当前字符是否为指定字符。最后返回指定字符的个数。

25.doublefun(doubleeps)

doubles=0.0,s1=1.0;

intn=l;

while(sl>=eps)/*当某项大于精度要求时,继续求下一项*/

{s=s+sl;/*求和*/

sl=sl*n/(2*n+l);

/*求多项式的每一项*/

n++;

)

return2*s;

)

该题考核的是通过迭代法求给定多项式的值。迭代法是让计算机对一组

指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,

都从变量的原值推出它的一个新值。需要注意变量的数据类型和赋初值

操作。

定义double类型变量s,并为其赋初值,用来存放多项式的某一项和

最后的总和。从第2项开始,以后的每一项都是其前面一项乘以

n/(2*n+l)o程序用si来表示每一项,用s表示求和后的结果。需注意

变量si和s的初值都为1.0,因为循环变量从第2项开始累加。

26.

【解析】按照题目中的要求,删除一个字符串中指定下标的字符。首先,

将指定下标之前的字符放入字符数组b中,然后将指定下标之后的字符

也放入字符数组b中,最后为新的字符数组b添加结束符。

27.voidfun(chara[],charb[],intn)

(

inti,k=0;

fbr(i=O;a[i]!=,\0,;i++)

if(i!=n)/*将不是指定下标的字符存入数组b中*/

b[k++]=a[i];

b[k]=<\0,;/*在字符串最后加上字符串结束标志*/

)

本题要求删除字符串中指定下标的字符,即把非指定下标的字符保留。

所以if语句条件表达式为“i!=n"。字符串最后不要忘记加上字符串结

束标志N(T。

28.\n#include'stdio.h'

\nmain

\n{inti;

\nfor(i=l;i<=100;i++)

\n{if(i==0)

\ncontinue;

\nprintf('%d',i);

\n}

\n

29.\nfloataverage(floatarray[1,intn)

\n{intI;

\nfloataver,sum=array[0];

\nfor(I=l;Isum=sum+array[I];

\naver=sum/n;

\nretum(aver);}

\nmain

\n{floatave,score[10];

\nintI;

\nfor(I=0;I<10;I++)

\nscanf('%f,&score[I]);

\nave=average(score,10);

\nprintf('%f\\n',ave);}

\n

30.

【解析】要将字符串str中下标为偶数位置上的字符转化为大写字母,

首先应该判断字符串str中下标为偶数位置上的字符是否为小写字母,

若是将其转化为大写字母.若不是不做任何变化。

31.(l)floatk;(2)if(*a<*c)(l)floatk;(2)if(*a<*c)解析:本题中函数

的功能是把主函数中输入的3个数,最大的放在a中,最小的放在c中。

对三个数进行两两比较,实现函数功能。

32.(1)错误:fun(char*sintnum[5])正确:voidfun(char*sinthum[5])(2)

错误:num[i]=0;正确:num[k]=0;(3)错误:switch(s)正确:switch(*s)(l)

错误:fun(char*s,intnum[5])正确:voidfun(char*s,inthum[5])\r\n(2)错

误:num[i]=0;正确:num[k]=0;\r\n(3)错误:switch(s)正确:switches)解

析:switch语句说明:

(l)switch后的表达式,可以是整型或字符型,也可以是枚举类型的。在

新的ANSIC标准中允许表达式的类型为任何类型。

(2)每个case后的常量表达式只能是常量组成的表达式,当switch后的

表达式的值与某一个常量表达式的值一致时,程序就转到此case后的

语句开始执行。如果没有一个常量表达式的值与swish后的值一致,就

执行default后的语句。

(3)各个case后的常量表达式的值必须互不相同,不然的话程序就不知

该跳到何处开始执行。

(4)各个case的次序不影响执行结果,一般情况下,尽量使用出现机率

大的case放在前面(为什么,等学到《数据结构》就知道了)。

⑸在执行完一个case后面的语句后,程序流程转到下一个case后的语

句开始执行。千万不要理解成行完一个case后程序就转到switch后的

语句去执行了。

在本例中,其他错误都比较简单,而且我们在前面已经介绍过了。

33.(1)错误:printf("%4d"xx[ij]);正确:printf("%4d"xx[i][j]):(2)错误:

printf('\n');正确:printr("\n");⑴错误:printf('%4d',xx[ij]);正确:

printf('%4d',xx[i][j]):\r\n(2)错误:printf(\'\\n\');正确:printr('Wn');解

析:错误1:此处考查的是对二维数组的引用方法。错误2:此处考查

的是输出语句的语法,括号中应该用双引号,而不是单引号。

34.(1)错误:if(*r==*p){r++;p++}正确:if(*r==*p){r++;p++;}(2)错误;

if(r=='\O')正确:if(*r=='\O')⑴错误:if(*r==*p){r++;p++}正确:if(*r==*p)

{r++;p++;}\r\n(2)错误;if(r=='\\O')正确:if(*r=='\\O')解析:从字符串s

中找出于串t的方法是:从第一个字符开始,对字符串进行遍历;若s

串的当前字符等于t串的第1个字符,两字符串的指针自动加1,继续

比较下一个字符;若比较至字符串t的结尾,则跳出循环,•若s串的字

符和t串的字符不对应相同,则继续对下一个字符进行处理。

35.(1)char*fun(char*schar*t)(2)ss++;(3)tt++;(1)char*fun(char*s,

char*t)(2)ss++;(3)tt++;解析:本题中函数的功能是比较两个字符串,

将长的那个字符串的首地址作为函数值返回。解题思

温馨提示

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

评论

0/150

提交评论