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

下载本文档

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

文档简介

2023年江西省景德镇市全国计算机等级考

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

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

一、2.填空题(10题)

1.实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的

联系。如果一个学校有许多教师,而一个教师只归属于一个学校,则实

体集学校与实体集教师之间的联系属于【】的联系。

2.Jackson方法是一种面向【】的结构化方法。

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

八占、、O

4.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。

数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个

数。

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

2223445666677899101010

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

2345678910

请填空。

#include<stdio.h>

#defineN80

intfiin(inta[],intn)

{inti,j=l;

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

if(aU-l][]a[i])

a[j++]=a[i];

[];

)

main()

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10.

10,10},i,n=19;

printf("Theoriginaldata:\n");

fbr(i=O;i<n;i++)printf("%3d",a[i]);

n=fun(a,n);

printf("\nThedataafterdeleted:\n");

fbr(i=O;i<n;i++)printf("%3d",a[i]);printf("\n\n");

)

5.函数调用语句:“fgets(buf,n而);”从中指向的文件中读入n个字符放到

buf字符数组中,函数返回值为o

6.以下函数的功能是【】。

floatav(a,n)

floata[];

intn;

{inti;floats;

for(i=0,s=0;i<n;i++)s=s+a[i];

returns/n;}

7.分析下列程序:

main()

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

switch(a)

{casel:switch(b)

{case0:x++;

case1:y++;break;

case2:x++;y++;break;

)

printf("x=%d,y=%d\n",x,y);

)

运行程序的输出结果是o

8.函数compare的功能是比较两个字符串是否相等,若相等则函数返回

1,否则返回o,请填空。

compare(chars[],chart[])

inti=0

while(s[i]==t[i]&&[])i++;

return([]?l:0);

9.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而

只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

10.下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符

结束循环。请填空。

intn=0,c;

c=getchar();

while(c!-\n')

{if(______)

n++;

二、单选题(10题)

11.以下叙述错误的是0。

A.算术运算符中不包含“=”运算符

B.模运算符“%”是c语言基本的算术运算符

C.算术运算符中只有“*”、“/”优先级高于关系运算符

D.自加和自减运算符只能用于变量,而不能用于常量或表达式

12.

(29)卜面程序段的运行结果是().

#include<stdio.h>

voidmain()

{charstr[]="ABC",*p=str;

printfiC%d\n"/(p+3));

}

A)67B)0C)字符C的地址D)字符C

13.对于关键字值序列(12,13,11,18,60,15,7,18,25,100)

A.100B.12C.60D.15

14.有以下程序:voidsort(inta[],intn){intfor(i=0;i<n-l;i+=2)

for(j=i+2;j<n;j+=2)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){int

aa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa,10);for(i=0;i<10;i++)

printf("%d",aa[i]);printf("\n");}其输出结果是

A.l,2,3,4,5,6,7,8,9,10.

B.10,9,8,7,6,5,4,3,2,1,

C.9,2,7,4,5,6,3,8,1,10,

D.l,10,3,8,5,6,7,4,9,2,

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

A.inta[5]={0,1,2,3,4,5);

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

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

D.inta[5]="0123";

16.下列叙述中正确的是()。

A.栈是一种先进先出的线性表B.队列是一种后进先出的线性表C.栈

与队列都是非线性结构D.以上三种说法都不对

17.

(24)有以下程序

#include<stdio.h>

#include<string.h>

StructA

{inta;charb[10];doublec;};

structA[structAt);

main()

{structAa-{1001/^hangDa0,1098.0};

a=f(a);printf|H%<L,%s,%6.1f\n”,a.a,a.b,a.c);

)

structA({StructAt)

{t.a=l002;strcpy(t.b,HWangPengH);t.c=1220.0;retumt;}

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

A)100LZhangDa,1098.0B)1002,ZhangDa,l220.0

C)1001,WangPeng,1098.0D)1002,WangPeng,1220.0

18.算法分析的两个主要方面是()。

A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.

数据复杂性和程序复杂性

19.下述程序的输出结果是()。#include<stdio.h>voidmain(){char

a=l,b=2;charc=aAb<<2;printf("\n%d",C);}

A.9B.10C.12D.2

20.有以下程序:

#include<stdio.h>

main()

{unsignedchara=8,C;

C=a»3:

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

)

程序运行后的输出结果是()。A.32B.16C.1D.0

三、程序设计题(10题)

21.请编写函数proc,其功能是:计算并输出下列多项式值。

S=(l-1/2)+(1/3-1/4)+...+(1/(2n-l)-l/2n)

例如,若主函数从键盘给n输入20后,则输出为S=0.680803c

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

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

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

试题程序:

#includet:stdio.h>

doubleproc(intn)

(

)

voidmain

(

intn;

doubleslim;

printf("\nlnputn:");

scanf("%d",&n);

sum=proc(n)o

printf("\ns=%f\n",sum);

22.请编写一个函数voidproc(char*tt,intpp[]),统计在tt字符串中“a”

到“z”26个字母各自出现的次数,并依次放在pp所指数组中。例如,

当输入字符串abcdefghxyzabcde^e后,程序的输出结果应该是:

2222331100000000000000001110注意:部分源程序给出如下。请勿改

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

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

才iscludc<conio.

fimeludeVstdio.

与ihdudcVzdlh

votdproc<char•tt»mtpp[])

voidaiato<>

char

mij«ki

aCl*S*)i

print((e\nPlc«*<enter•chari

%》8

proc<

loc(k-0311Vzs•♦)

pnnlf(-Kd•

e)t

23.请编写一个函数,用来删除字符串中的所有*。例如,输入

abc*de*/gh,则输出为abcdefgh。注意:部分源程序给出如下。请勿

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

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

tsmcludr

9include<ctype.

9tfiHudeVettio.b>

dinclude<wtdlib.

voidprtx<ch<r.»tr)

VOidRMMI()

char«if(81]i

»y«<etn<*Ci-S*>e

pnfiifCalnptft•»tnn<i*>»

get»(str)।

putt(ntr)i

proc(»ir)t

pnntf("■■•»tr:K>\n*«*tr)«

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

案的项目中包含一个源程序文件progl.co程序中将m个人的成绩存放

在score数组中,请编写函数fun(),它的功能是将低于平均分的人数

作为函数值返回,将低于平均分的分数放在below所指的数组中。

例如,当score数组中的数据为10、20、30、40、50、60、70、80、

90时,函数返回的人数应该是4,below中的数据应为10、20、30、

40o注意:部分源程序在文件progl.c中。

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

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

试题程序:

tinclude<conio.h>

2linclude<stdio.h>

3♦include<string.h>

4linclude<stdlib.h>

5intfun(intscore[],intm,int

below[])

6{

7

8)

9voidmain()

W(

11FILE♦wf;

12inti,n,below[9];

13intscore[9]={10,20,30,40,

50,60,70,80,90};

14system("CLS");

15n»fun(score,9,below);

16printf(M\nBelowtheaverage

scoreare:w);

17for(i=0;i<n;i-♦-+)

18printf(M%dbelow[i]);

19/*****************/

20wf=fopen("out・dat","w");

21for(i=0;i<n;i+•♦­)

nn

22fprintf(wf,%d/below[i]);

23fclose(wf);

24/*****************/

25)

25.

请编写一个函数,用来删除字符串中的所有空格。

例如,输入asdafaaz67,则输出为asdafaaz67o

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

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

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

试题程序:

/iwlude<stdiA.h>

#include<ctype.h>

#hiclude<conio.h>

vodfun(char*str)

(

}

main。

fcharstr[81];

charMsgf]=uInptitastring:T,;

intn;

printf(Msg);gftt5(str);puls(str);fun(str);

printfC****str:%&\nM,str);

I,

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

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

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

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

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

tinclude<8tdio.h>

tinclude<虱ring,h>

IMefineM81

intfun(char•ss,charc)

main()

Ichara[M]tch;

voidNONO();

printf(N\nPleaseenterastring:*);gct8(a);

printf("\nP1easeenterachar:");ch=getchar();

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

NONO();

I

voidNONO()

)/•本函数用于打开文件,输入测试数据,第用fun函数,输出数据.关闭文件。♦/

imi;

FILE•if,*wf;

chara[M],b[M]vch;

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

wf=fopcn("out.dal",**w*)•

lbr(i=0;i<10;i4-+)

I

a);

w

fBcanf(rft-%8tb);

chs•b;

H

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

I

fclo»e(rf);

fcloeeCwf):

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

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

其功能是找出一维整型数组元素中最大的值及其所在的下标,并通过形

参传回。数组元素中的值已在主函数中赋予。

主函数中x是数组名,n表示x中的元素个数,max存放最大值,

index存放最大值所在元素的下标。

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

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

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

试题程序:

#include<time.h>

#include<stdlib.h>

#include<stdio.h>

voidfun(inta[],intn,int*max,int*d)

{

)

voidmain()

(

inti,x[20],max,index,n=10;

srand((unsigned)time(NULL));

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

(

x[i]=rand()%50;

printff4%4d”,x[i]);

/*输出一个随机数组*/

}

printf(n\nH);

fun(xfnf&max,&index);

printf("Max=%5d,Index=%4d\n”,max,index);

)

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

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

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

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

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

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

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

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

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(char*s,chart[])

(

)

main()

(

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

printf(Msg);

scanf("%s”,s);

fun(s,t);

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

)

29.N名学生的成绩已在主函数中放人一个带头节点的链表结构中,h指

向链表的头节点。请编写函数fun,其功能是:求出平均分,并由函数

值返回。

例如,若学生的成绩是:8576698591726487,则平均分应当是:

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

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

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

^include<stdio.h>

#include<Btdiib.h>

*defineN8

stnictfllist

Idoubles;

■Uuctalisl•next;

I;

typcdefstnicttlisiSTREC:

doublefun(STRECeh)

STREC•creat(double••)

ISTREC•h.»p,•q;inti=0;

h(STREC•)maUoc(tueoT(STREC));p>>»s0;

while(i<N)

|q=(STREC•)maUoc(fizeo((STREC));

q->•=»[i];i.♦;p->next=q;p=q;

I

p->next=0;

returnh;

I

outli8t(STREC•h)

|STREC•p;

p=h->next;printf(*head“);

do.

|printf("->%4.IP.p->•);psp->next;|

while(p!«0);

printf("\n\n*);

I

main()

|doubleB[N]«185,76,69.85,91,72,64.87(..ve;

voidNONO();

STREC•h1

h=creai(•)।outlist(h);

ave»fun(h):

printf("ave=%6.3f\n*.ave);

NONO();

I

voidNONO()

|/・本款数用于打开文件,输入数据,调用函数,输出数据,关闭文件。•)

FILE•in.♦out;

intiJ;doubles[N],ave;

STREC・h;

in=fopen("in.datw,wr");

out=fopen("out.dm"t"w");

for(i=0;i<10;i*♦)

I

for(j=O;j<N;j++)f^«f(in,-%lf/,A.(j]);

h=creai(s);

ave=fiin(h);

fjpnnif(outt-%6.31f\n",ave);

fcloae(in);

fdoee(out);

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

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

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

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

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

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

填入你编写的若干语句。

^include<stdio.h>

"defineNR

typrdrfMmrt

icharnum*10j;

double•[NJ5

doubleave;

ISTREC;

voidfun(STREC•a)

niain()

STRECs=I-GA005”.85.5,76,69.5,85.91.72.64.5.87.51;

inti;

voidNONO():

fun(&s);

nTheutuckmidate:\nM,M.num);

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

printf("%4.

printf(w\navt?=%7.3Anw,i».ave);

N()N()(){

voidNONO()〃

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

FILE•out;

inf।J;STHECs[10]=1

I*GA005R,85..1.

!"CA00I-.9.76.46,5,78.51.

IwGA002".9,68,.

I-GA003",6.5,86.99.86,56,5.88.51.

|-GA(XMW.6.5.56,76,75,|.

|0GAOO6H,1.5.85.SI.79,L

|*GA007-.9.75,1.

|*GA008-,72.5,0.69.63,76,5.53.51.

!"GA009",1.82,86.5.58.5!.

i-GA0I0",6,71,96.5,93.5!,

I:

out=fopcn(*out.dal"w");

(bt(ts0;i<10;i+4-)I

fun(&•[i]);

fprintf(outt"%7.3f\nH,•[i].Mve);

I

felr»r((Mil);

\

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

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

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

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

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

1tinclude<stdio.h>

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

3charfun(char*srchar*t)

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

5ss^s;ttwt;

6while(*ss)

7{sl++;

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

9(*ss)

10}

11while(*tt)

12(W;

13/**w*******found**********/

14(♦tt)**;

15}

16ifreturnt;

17elsereturns;

18)

19main()

20{chara[80],b[80);

21printf(w\nEnterastring:H);

gets(a);

22printf(w\nEnterastringagain:

w);gets(b);

23printf(w\nThelongeriss\n\n\

fun(a,b));

24

32.下列给定程序中,函数fun()的功能是:用下面的公式求兀的近似值,

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

71/4-1-1/3+1/5-1/7+...

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

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

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

试题程序:

#include<math.h>

#include<stdio.h>

floatfun(floatnum)

{ints;

floatn,t,pi;

t=l;pi=0;n=l;s=l;

/*****************************I

while(t>=num)

pi=pi+1;

n=n+2;

s=-s;

/****************************j

t=s%n;

pi=pi*4;

returnpi;

main()

{floatn1,n2;

clrscr();

printf("Enterafloatnumber:");

scanf("%f&nl);

n2=fun(nl);

printf("%6.4f\n",n2);

33.已知一个数列从0项开始的前3项:0,0,1,以后的各项都是其相

邻的前3项之和。下列给定的程序中,函数fUn()的功能是:计算并输出

该数列前。项的平方根之和sum。n的值通过形参传入。例如,当n=10

时,程序的输出结果应为23.197745。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

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

fiin(intn)

{doublesum,sO,si,s2,s;intk;

sum=1.0;

if(n<=2)sum=0.0;

s0=0.0;sl=0.0;s2=1.0;

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

{s=s0+sl+s2;

sum+=sqrt(s);

sO=sl;sl=s2;s2=s;

/****************n-d*****************/

returnsum

main()

{intn;

clrscr();

printffTnputN=");

scanf("%d",&n);

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

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

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

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

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

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

试题程序:

#include<stdio.h>

#include<conlo.h>

voidfun(longs,long*t)

{intd;

longsl=l;

/*************d**************!

t=0i

while(s>0)

{d=s%10;

/*************d**************/

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.给定程序MODU.C中函数fim的功能是:为一个偶数寻找两个素

数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主

函数。

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

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

1!linclude<stdio.h>

2;linclude<math.h>

3voidfun(inta,int*b,int*c)

4(int

5for(i«3;i<-a/2;i-i+2)(

6/found・

7Y-l;

8for(j-2;j<-sqrt((double)i);

j++)

9ify-0;

10if(y-1)(

11/♦••••■★found*,/,

12

13for(j»2;j<-sqrt((double)d);

*♦)「…」一一一

14if(d%j=«0)y»0;

15if(y・・l)

16{*b«l;*cwd;|

17

18

19

20main()

21(inta,b,c;

22do

23{printf(w\nlnputa:scanf

("id-,,a);}

24while(al2);

25fun(a,ftc);

HR

26printf(\n\n%d«%d♦%d\nrafbrc);

27

36.给定程序MOD11.C中函数fim的功能是;从低位开始取出长整型

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

低位仍在低位。

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

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

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

1iinclude<stdio.h>

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

3voidfun(longs,longt)

4(longsl-10;

5s/=10;

6*tms%10;

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

8while(s<0)

9{s-s/100;

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

11si«si*10;

12

13

14main()

15{longs,t;

16printf(n\nPleaseenters:R);scanf

&s);

17fun(s,6t);

Mw

18printf(Theresultis:%ld\nft);

19

37.下列给定程序中,函数ftm()的功能是:依次取出字符串中所有的字

母,形成新的字符串,并取代原字符串。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

voidfun(char*S)

inti,j;

for(i=0,j=0;s[i]!='\0';i++)

/*************d************/

if((s[i]>='A'&&s[i]<='Z')&&(s[i]>='a'&&S[i]<='z',))

sU++]=s[i];

s[j]="\O";

)

main()

{

charitem[80];

clrscr();

printf("\nEnterastring:");

gets(item);

printf("\n\nThestringis:\%S\n",item);

fun(item);

printf("\n\nThestringofchanging

is:\%S\n",item);

38.下列给定程序中函数fun()的功能是;先将在字符串s中的字符按逆

序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如:

当s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDEO

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(char*s,char*t)

(

inti,sl;

sl=strlen(s);

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

t[i]=s[sl-l];

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

/*************d**************

t[sl+i]=s[i];

t[2*sl]-'\0';

}

main()

{chars[100],t[100];

clrscr();

printf("\nPleaseenterstrings:");

scanf("%s",s);

fun(s,t);

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

)

39.下列给定程序中,函数fun()的功能是找出100〜n(n不大于1000)之

间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所

指的数组中,个数作为函数值返回。

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

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

试题程序:

#include<stdio.h>

#defineN100

intfun(int*s,intn)

inti,j,k,a,b,c;

j=0;

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

k=n;

a=k%10;

k/=10;

b=k%10;

c=k/10;

if(a==b+c)

/************'f^)und*********,

sLH=i;

}

returnj;

)

main()

{

inta[N],n,num=O,i;

do

(

printf("\nEntern(<=1000):”);

scanff%d”,&n);

I

while(n>1000);

num=fun(a,n);

prints"\n\nTheresult:\n");

for(i=O;i<num;i++)

printf("%5d",a[i]);

printf("\n\n");

40.下列给定程序中函数fim()的功能是:从低位开始取出长整型变量s

中偶数位上的数,依次构成一个新数放在t中。例如,当s中的数为

7654321时,t中的数为642。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

/*************d**************/

voidfun(longs,longt)

{longsl=10;

s/=10;

*t=s%10;

/*************d**************/

while(s<0)

{s=s/100;

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

sl=sl*10;

main()

{longs,t;

clrscr();

printf("\nPleaseenters:");scanf

("%ld",&s);

fun(s,&t);

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

五、程序改错题(2题)

41.下列给定的程序中,函数proc()的功能是:计算并输出k以内最大

的10个能被15或18整除的自然数之和,k的值由主函数传人。若k

的值为800,则函数的值为7605。

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

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

构。

试题程序:

&mcludrVNcboi

gincludeVcotMo.

ntocludeVmdlikh>

ntprorimtk)

intji

wharfO-21&&《10>>

//••••found••••

m**

k——•

//••••found••••

returnmi

midmaint)

(

9yvteniC*CLS")i

pnfid<*Kd\n•.proc<$00>);

42.下列给定程序中,函数proc()的功能是:求S的值。

5,<2:<】•3"•(4'/<3•5>>••7)】

•I•<2n)f/<(2n-I)•<2a4*D)

例如,当n为100时,函数的值应为1.566893c

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

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

构。

试题程序:

Finclude〈■Msb.b>

8MicludrVconio.h>

9includeVMdio.b>

SmrludrVnuiluh>

〃•♦•♦found••••

proc(mta)

mtmGoat»um«w.p・qi

11

・u<n-LOi

whdXn<.n>

(

■―工()•n*

l.Oi

Mun•»um•w•w/p/qt

♦i

//••••found••••

returnMian

voidmain(>

wynicmC•CLS,)s

w

printf(%f\n*aproc(100>)t

六、操作题(2题)

43.下列给定程序中,函数fim()的功能是:应用递归算法求某数a的平

方根。求平方根的迭代公式如下:

x,=(xe+—)/2

例如,2的平方根为1.414214。

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

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

试题程序:

#include<math,h>

#include<stdio.h>

/*************d**************/

fun(doublea,doublexO)

{doublexl,y;

xl=(x0+a/x0)/2.0;

/*************d**************/

if(fabs(xl-xO)>0.00001)

y=fiin(a,xl);

elsey=x1;

returny;

)

main()

{doublex;

printf("Enterx:");scanf("%lf',&x);

printf("Thesquarerootof%lfis

x,fun(x,l.O));

44.以下函数的功能是删除字符串s中的所有数字字符。请填空。

voiddele(char*s)

intn=0,i;

for(i=0,s[i];i++)

if((1)

s[n++]=s[i];

s[n]=[];

参考答案

1.一对多一对多解析:实体之间的联系可归结为一对一、一对多与多对

多的联系。如一个学校有许多教师,一个教师只归属于一个学校,则实

体集学校与实体集教师之间的联系属于一对多的联系。

2.数据结构数据结构解析:Jackson方法是一,种面向数据结构的结构化

方法。

3.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点

(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,

故叶子结点数为18+1=19个。

4.!=returnj!=\r\nretumj解析:本题程序的流程是:让i,j都从1

开始,其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中

的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,

所以if()中的条件是a[j-l]!=a[i],其中就是新数组中的最后一个元

素,若条件成立则表示出现了不同的值,所以a[i]要留到新数组中。注

意本题中i、j的初值都要从1开始,该算法只能用于数组已排序的题目

中。

5.buf的首地址buf的首地址解析:考查fsets()函数的功能,fBets()函数

用来从文件中读入字符串。调用格式为:fBets(buf,n,fp)o此处,fp是

文件指针,buf是存放字符串的起始地址,n是一个int型变量。调用函

数fsets()时,最多能读入n-l个字符,系统自动在最后加字符串结束标

志,并以buf作为函数值返回。

6.求出数组元素平均值求出数组元素平均值解析:函数有一个数组形参

a和一个整型形参n。函数首先用循环求数组a的前n个元素和,然后

将和除以n。即求数组元素的平均值。

7.x=ly=0。x=l,y=0o解析:本题程序的主体部分是switch语句的嵌

套结构,当变量a的值为0时,在第一层switch-case语句中,没有匹配

的case分支。因此,x和y的值没有变化,仍然是1和0o

8.s[i]&&t[i]或s[i]!='\O'&&t[i]!='\O'!(s[i]-t[i])s[i]&&t[i]或

s[i]!='\\O,&&t[i]!='\\O'\r\n!(s[i]-t[i])解析:while后括号中的判断条件为两

个字符串相同位置上的字符相等,且两个字符串都没有结束,则循环。

故第一空应该填或其他等价表达式。如果两个字符串完全相

等,则while循环退出时s国和t[i]的值同时为0,否则s国和明不相等。

故表达式在字符串相等时为0,不相等时为非0,所以第二空应

该填!国)就满足题意了。

9.静态分析静态分析解析:程序测试分为静态分析和动态测试。其中,

静态分析是指不执行程序,而只是对程序文本进行检查,通过阅读和讨

论,分析和发现程序中的错误。

10.c>='a'&&c<='z'c>='a'&&c<='z'解析:小写字母在内存中以ASCII

的形式存入,且从a到z依次递增,所以可以直接用c>=区&&c<=N

判断是不是小写字母;c!=Nn,判断是用换行符结束循环。

11.C

12.B

13.C

14.C解析:本题考核的知识点是程序中算法的基本分析。sort。函数作用

是将数组aa中的下标为偶数的元素按大到小排序.主函数中首先定义

了一个长度为10的数组并赋值,然后调用sort。函数,将数组aa中奇

数个元素的值按大到小排序,因此执行完该函数后,数组中奇数个元素

的值为9,7、5、3和1,故主函数中最后通过一个for循环输出数组aa

中各元素的值为9、2、7、4、5、6、3、8、1和10,所以,4个选项中

选项C符合题意。

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

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

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

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

16.D

【答案】:D

【知识点】:栈和队列

【解析1:栈和队列都是线性结构,所以选项C错误;栈是一种先进

后出的线性表,故选项A错误;队列是一种先进先出的线性表,故选

项B错误,所以选D。

17.D

18.A

19.A

20.C

题中定义了无符号数,c=a>>3;是指右移3位,然后输出。结果为

Co

21.\n\tdoubleproc(intn)

\n(

\ninti;

\ndoubles=0.0;//s为其和的变量

\nfor(i=l;i<=n;i+十)

\nS=s+(l.0/(2*i-l)-l.O/(2*i));//计算s

\n=(l-l/z)+(l/3-1/4)+...+(l/(2n-l)-l/

\n2n)

\nreturns;//最后把所得到的和返回到主函数中

\n}

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

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

后将多项式的值返回到主函数当中。\n

22.

【解析】由函数proc()可知,数组PP中存放26个字母各自出现的次数,

初始化为0。然后判断字符串口中每一个字符,每检查一个字符,将数

组pp中相应的元素加1。

23.

【解析】根据题目中要求删除字符串中所有的*号,需要检查字符串中

的每一个字符,将不是*号的字符放入原来的字符串中,形成新的字符

串,最后在新的字符串的末尾加上结束符。

24.1intfun(intscore[],intm,intbe-low[])

2{

3inti,j=O;

4floatav=0.0;

5for(i=0;i

<m;i++)

6av=av+score[i]/m;/*求平均值*/</m;i++)

<m;i++)

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

gif(score[i]</m;i++)

</m;i++)

<m;i++)

<m;i++)

<av)p*如果分数<>8低于平均分,则将此分数放入below数::组中

*/</av)p*如果分数<></m;i++)

</m;i++)

<m;i++)

<m;i++)

<av)p*如果分数<>9below[j++]=score[i];</av)p*如果分数<></m;i++)

</m;i++)

<m;i++)

<m;i++)

<av)p*如果分数<>10returnj;/*</av)p*如果分数<></m;i++)

</m;i++)

<m;i++)

<m;i++)

<av)p*如果分数<>返回低于平均分的人数*/U}要计算低于平均分的人

数,首先应该求出数组score中各元素的平均值。然后通过for循环语

句和if条件语句找出低于平均值的分数。该题第1个循环的作用是求

出平均值av,第2个循环的作用是找出数组score中低于平均值的成

绩记录并存入below数组中。</av)p*如果分数<></m;i++)

</m;i++)

25.[答案]

voidfiin(char♦str)

{inti=0;

char*p=?str;

while(*p『遍历字符串♦/

{

/*如果当前元素不为空格*/

即p!二

{••

/*将当前元素保存到西中*/

sti(ij=*p;

i++;

)

P++;

}

6用尸\0V*字符串最后加上结束标记符M力

)

[解析]

题目要求删除空格,也就是重新保存空格以外的其他字符。通过循环删

除字符串中的每一个空格,将非空格字符进行重新保存。

26.

intfun(char*ss,charc)

inti=0;

for(;*ss!='\0';ss++)if(}ss==c

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

return1;

【考点分析】

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

是否结束。

【解题思路】

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

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

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

27.voidfun(inta[],intn,int*max,int*d)

(

inti;

*max=a[0];

*d=0;

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

if(*max<a[i])

{*max=a[i];*d=i;}

)

fun()函数形参max用来存

温馨提示

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

最新文档

评论

0/150

提交评论