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

下载本文档

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

文档简介

2021年广东省汕尾市全国计算机等级考试

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

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

一、2.填空题(10题)

1.表示""整数x的绝对值大于5"“时值为"“真””的C语言表达式是【】。

2.对于软件测试,从是否需要执行被测软件的角度,可以分为静态测试

和动态测试。代码检查属于测试。

3.以下函数fun的功能是返回str所指字符中中以形参c中字符开头的

后续字符串的首地址,例如:str所指字符串为"Hello!”,c中的字符为

'e',则函数返回字符串“ello!”的首地址。若str所指字符串为空中或不包

含c中的字符,则函数返回NULL。请填空。

char*fun(char*str,charc)

{intn=0;char*p=str;

if(p!=NULL)

while(P[n]!=c&&p[n]!='\0')n++;

if(p[n]=='\O')retumNULL;

retum([]);

4.阅读下面语句,则程序的执行结果是【】。

#include"stdio.h"

main()

{inta=-l,b=l,k;

if((++a<0)&&!(b-<=0))

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

elseprintf("%d,%d\n",b,a);}

5.下面程序是计算100以内能被4整除且个位数为4的所有整数,请

填空。

main()

{intm,n;

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

{n=m*10+4;

If([])continue;

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

6.以下程序的运行结果为【】°

#defineFORMAT"%u,%u"

main()

{inta[3][4]={l,3,5,7,9,11,13,15,17,19,21,23};

printf("\n");

printf(FORMAT,**a,*a[0]);

printf(FORMAT,*(a[0]+l),*&a[0][l]);

printf(FORMAT,a[l][0],*(*(a+l)+0));

)

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

#include<stdio.h>

main()

{inti,m=0,n=0,k=0;

for(i=9;i<=1l;i++)

switch(i/10)

{case0:m++;n++;break;

case10:n++;break;

default:k++;n++;

)

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

)

8.下面程序的功能是:计算1~10之间奇数和及偶数之和。

#include<stdio.h>

main()

{inta,b,c,i;

a=c=O;

for(i=O;i<=10;i+=2)

{a+=i;

【】;

c+=b;

)

printf("偶数之和=%d\n",a);

printf("奇数之和=%d\n",c-11);

)

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

达式是______O

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

main()

{charCl,c2;

for(cl='0"c2='9';cl<c2;cl++,c2-)printf("%c%c",cl,c2);

printf("\n");

)

二、单选题(10题)

29)以下不正确的定义语句是().

A)doublex[5]={1.0,2.0,30,4.0,5.0};B)inty[5]={0,1,2,3.4,5);

C)charcl[]={'!','2;'3','4','5'};D)charc2[)={'a',b,'c'};

12.视图设计一般有3种设计次序,下列不属于视图设计次序的是()。

A.自顶而下B.由内向外C.由外向内D.自底向上

13.

(3)数据结构中,与所使用的计算机无关的是数据的().

A)存储结构B)物理结构C)逻辑结构D)线性结构

14.下列关于线性链表的叙述中,正确的是()

A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必

须一致

B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必

须连续

C进行出入与删除时,不需要移动表中的元素

D.以上三种说法都不催

15.有以下程序:

#include

#definePT3.5;#defineS(x)PT*x*x;Main(){inta=l,b=2;printf("%4.1f\n",S(a+b));程序运行

后的输出结果是()。A.7.5B.3L5C.程序有错无输出结果D.14.0

16.以下叙述中,不正确的是()。

A.使用staticfloata定义的外部变量存放在内存中的静态存储区

B.使用floatb定义的外部变量存放在内存中的动态存储区

C.使用staticfloatc定义的内部变量存放在内存中的静态存储区

D.使用floatd定义的内部变量存放在内存中的动态存储区

17.链表不具有的特点是

A.A.不必事先估计存储空间

B.可随机访问任一元素

C.插入和删除不需要移动元素

D.所需空间与线性表长度成正比

18.在一个元素个数为N的数组里,找到升序排在N/5位置的元素的最

优算法时间复杂度是()

A.O(n)B.O(nlogn)C.O(n(logn)2)D.O(n3/2)

19.结构化程序设计方法的3种基本控制结构中不包括

A.循环结构B.递归结构C.顺序结构D.选择结构

20.

(35)C语言中,凡未指定存储类别的局部变量的隐含存储类别是().

A)自动(auto)B)静态(static)C)外部(extern)D)寄存器(register)

三、程序设计题(10题)

21.

请编写函数proc(),该函数的功能是:将放在字符串数组中的M个字

符串(每串的长度不超过N).按顺序合并组成一个新的字符串。例如,

若字符串数组中的M个字符串为:ABCDBCDEFGCDEFGHI则合并

后的字符串内容应该是:ABCDBCDEFGCDEFGH1o注意:部分源程

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

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

£todvdeh>

■isiclude<eoftao.h>

9defmeM3

0dcGtwrN20

aidproc<charirr[Mj[N.clur•b>

gtdnuim<)

charMr[M][Nj•(*A!KT)B.•K'DER;*.-

CKFCJHD.u

cUr■N£I8]I《•

■■■■・•),

ptwt(<*TheNinn(ii\i>")।

(or<i",0iKMii4-,)

pot»<

praiiR*\n*>i

proc(»tr»arr>i

prwvft"TheA»tnng:\n*)«

prmtf(*Hs

pnmf("\n\n"><

22.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入

结构体数组stu中,请编写函数proc(),该函数的功能是:把高于等于

平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通

过形参n传回,平均分通过函数值返回。注意:部分源程序给出如下。

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

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

・KKiwIv<••4nll

■MwMI:

tyfMtMMmn

(charBM(IO]t

4twMt..

mUTo

double|^wr<XTKSX*•A»STWEL'.,■••)

*UMIL,)

NTRCTM】•I《eGAM#.Ml..

rGA02*.M>.feGA04e»M2.(*GAor.tll.

《'GA07■.m.GAM,M■LGWM,

<・GW•I・GA11..791•{・GA1.flI.

<"GAlo・g>i

STRGChCMJt

KM|・■,

dovbic

——proH・3♦>.&・>.

pnnd<*ThtH4ttWHM4otawWii.

higher(KMIXT.

lor<i*OtY1

pnatf<eKaMi.n«ai*h£i].a>«

p>natf(

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

/2)+(1/3+1/4)+...+(1/(2n-l)+1/2n)例如,若输入10,

则输出为S=3.597740on的值要求大于1但不大于100。注意:部分

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

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

sinciudch>

doubleproc<mtn)

v<oedBUIMI<)

Intm

double*

prtnlfi*\nlfiputna*)i

MAnf(*KdM«&-n>i

nwproc<n)i

pnMf(*\ik»wSf\t»

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

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

fun(),该函数的功能是统计一行字符串中单词的个数,并将其作为函

数值返回。字符串在主函数中输入,规定所有单词由小写字母组成,

单词之间由若干个空格隔开,一行的开始没有空格。

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

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

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

试题程序:

1#include<string.h>

2#include<stdio.h>

3#defineN80

4intfun(char*s)

5{

6

7)

8voidmain()

9{

10FILE*wf;

11charline[N];

12intnum=0;

13printf("Enterastring:\n");

14gets(line);

15num=fun(line);

16printf("Thenumberofwordsis:%d\n\n",num);

]7/*********found*********/

18wf=fopen("out.dat","w");

19fprintf(wf,"%d",fun("abigcar"));

20fclose(wf);

2]/*********found*********/

22)

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

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

intfun(),其功能是求出小于或等于lim的所有素数,将其存放在aa数

组中,并返回所求出的素数的个数。

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

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

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

试题程序:

1#include<conio.h>

2#include<stdio.h>

3#include<stdlib.h>

4#defineMAX100

5intfun(intlim,intaa[MAX])

6{

7

8)

9voidmain()

10{

11FILE*wf;

12intlimit,i,sum;

13intaa[MAX];

14system("CLS");

15printf("输入一个整数:");

16scanf("%d",&limit);

17sum=fun(limit,aa);

18for(i=0;i<sum;i++)

19{

20if(i%10==0&&i!=0)/*每行输出10个数*/

21printf("\n");

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

23)

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

25wf=fopen("out.dat","w");

26sum=fun(15,aa);

27for(i=0;i<sum;i++)

28{

29if(i%10==0&&i!=0)/*每行输出10个数*/

30fprintf(wf,"\n");

31fprintf(wf,"%5d",aa[i]);

32)

33fclose(wf);

34/******************/

35)

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

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

其功能是将a、b两个两位正整数合并成一个新的整数放在c中。合并

的方式是将a中的十位数和个位数依次放在变量c的千位和十位上,b

中的十位数和个位数依次放在变量c的个位和百位上。

例如,当a=45,b=12,调用该函数后c=4251。

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

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

voidfun(inta,intb,long*c)

(,

)

main()

{

inta,b;

longc;

printff'Inputa,b:");

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

fun(a,b,&c);

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

}

27.假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功

能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参P已指

向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函

数。例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串

中的内容应当是abcdefg****。注意:部分源程序给出如下。请勿改动

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

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

ncndudrVcomah>

smclude<Mdio.b>

voidpfor<cKar•«lr«char•p>

voidmam(>

char•ii

pnfM((*Entera»tnngi\**>i

grt»(Mr)i

t*mri

wh«le<•i)

L,Bf簿ttQflt向字样•艇■

whib(•i・-'•'>

t--i4・lti推网・后一个字耳

l>roc<Mr«Ot

prtnrfCwThr7nM“eMetedAn")•

put»(str)i

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

字符数据,按列的顺序依次放到一个字符串中。例如,若二维数组中

的数据为:

WWW

SSS

HHH

III

则字符串中的内容应是WSHIWSHIWSHL

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

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

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

试题程序:

#tncludeVzdtd

林WineM4

8dtfitwN3

voidproc<ckmr<•»>[N)«clur•b>

M>ldmatn(>

char41003»W[MXN]M(IW.W・W).

3'S\S\I.CH\*H\1H4.)•(T・'

r.THi

inii小

print"'The

(or(i-“yMX*4»)

<lor《♦)

pnrn((aHlc*.w£iltj]h

peoc<w»a)i

prmtf<"TheA

pm*<a)s

pnnrf<<\n\n")i

29.

请编写一个函数voidproc(intm,intk,intxxE3),该函数的功能是:

将大于整数m且紧靠m的k个素数存入所指的数组中。例如,若输入

206,则应输出232931374143°注意:部分源程序给出如下。请勿

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

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

与includehj>

9includeVcooflo.h>

>include<stdiah>

vo«dprocimtmttnlk»mt

^oed)

mim»n«<rv{10001i

■Ee«n《*CLS*)•

pmtf("\nPlcaxrnicTtwointegersj*)t

-

proc(m»n«arr>t

Corg,<>g<fiiwi+))

pfiarf(e%d*.Arv(ai])i

pnnd<*\n*)t

30.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放人

结构体数组stu中。请编写函数proc(),它的功能是:函数返回指定成

绩的学生数据,指定的成绩在主函数中输入。若没找到指定的成绩,在

结构体变量中给学号置空串,给成绩置-1,作为函数值返回。注意:部

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

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

=include<stdio.h>

#indudeVstdlib.h>

*defineM16

lyjxrdcfMruct

(

charnum[10]i

intsi

(

STRE(।

STRECproc<STREC«a.intb)

s'oidmain()

STRECstu[M]={<"GA005-.76("GA003*.89)・

(“GA002-•64)•{"GA004*,75)・(HGA001-,88〉•

{“GA007".65}•{-GA008-,96).(”GA006-・69).

(“GAO15".85}・{”GAO13-,78)J”GAO12・・62)・

(•GA014M>60}.("GA011*,73>♦{•GAOl?",72!<

("GA018"•98>・<-GA016e,94)>।

STRECh:

in(mi

intit

printfC"Theoriginaldata:\nN)t

for(i=0ii<Mii4--t-)

{=0)

printfC"\n*)i

〃每行输出[个学生记录

printfC-%s%3d*,Muti].num«stu[i].s)i

}

pnntf("\n\nEnterthescores*)i

h=proc(Mu»m)t

printfC"Thedata:")।

printf(*\n%s%4d\n”.h・num.h.n>i

printf("\n")i

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

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

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

K.111,

4357

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

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

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

;■include<math.h>

2!tinclude<stdio.h>

3।floatfun(floatnum)

4;{ints;

5!floatn,tfpi;

6

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

8while(t>=num)

9(

10pi=pi*t;

11n,n+2;

12s

13/♦♦♦found9

14t«s%n;

15}

16pi«pi*4;

17returnpi;

18}

19main(J

20{floatnl,n2;

21printf(wEnterafloatnumber:");

22scanf&nl);

23n2,fun(nl);

ww

24printf(%6.4f\nfn2);

25

32.下列给定程序中函数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)

/&1&&&&&&0±/

/不不不不不不不不不不不不不Teiri不不不不不不不不不不不不小/

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

)

33.给定程序M0D11C中函数fun的功能是根据形参m的值(2gmW9),

在m行m列的二维数组中存放如下所示规律的数据,由main函数输

出。

例如,若输入2|若输入4

则输出:|则输出:

12|1234

24|2468

|36912

|481216

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

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

*include<conio.h>

2*include<stdio.h>

3«defineM10

4inta(M)(M)■{0};

5

6voidfun(int**arintm)

7(intjrk;

8for(j-0;j<m;j++)

9for(k«0;k<m;

10♦♦♦found**•♦<<*>♦♦♦♦♦/

11a[j](k)-k*j;

12)

13main()

14(int1,j,n;

15printf(MEntern:");scanf

Cd-,&n);

16fun(a,n);

17for(i»0;i<n;i++)

18{for(j-O;j<n;j++)

19printf("%4d"fa[i)(jj);

20printf(w\nw);

21

22

34.给定程序MODH.C中函数fun的功能是:将长整型数s中每一位

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

仍在低位。

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

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

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

1*include<stdio.h>

2voidfun(longs,long*t)

3{intd;

4longsl«l;

5♦t-0;

6while(s>0)

7(d■s%10;

8/foundn

9if(d%2-0)

10{*t-d*sl+*t;

11si*«10;

12

13/**♦♦♦*♦♦♦♦♦♦found**♦**♦***♦**/

14s\=10;

15

16

17main()

18{longs,t;

19printf(R\nPleaseenters:0);

wR

scanf(%ldr&s);

20fun(s,6t);

nw

21printf(Theresultis:%ld\nrt);

22

35.下列给定程序中,函数fun()的功能是;计算函数F(x,y,z)=(x+y)/(x-

y)+(z+y)/(z-y)的值。其中x和y不相等,z和y不等。例如,当x的值

为9,y的值为11,2的值为15时,函数值为-3.50。

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

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

试题程序:

#include<stdio.h>

#include<math,h>

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

#defineFU(m,n)(m/n)

floatfun(floata,floatb,floatc)

{floatvalue;

value=FU(a+b,a-b)+FU(c+b,c-b);

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

return(Value);

)

main()

{floatx,y,z,sum;

printf("Inputxyz::");

scanf("%f%f%f,&x,&y,&z);

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

if(x==y||y==z){printf("Dataerror!\n");

exit(0);}

sum=fun(x,y,z);

printf("Theresultis:%5.2f\n",sum);

)

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

公式的值。

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

例如,若n=10,则应输出0.192582。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

floatfun(intn)

{.....................................................

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

intA=l;

inti;

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

A=1.0/(5+A);

returnA;

}

main()

(

intn;

clrscr();

printf("\nPleaseentern:");

scanf("%d",&n);

,,

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

)

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

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

"ab,cd"o

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

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

试题程序:

#include<stdio.h>

#include<string.h>

#include<conio.h>

char*fun(chartt[])

inti;

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

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

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

)

38.下列给定程序中,函数fun()的功能是:传入一个整数m,计算如下

公式的值。

t=l/2-l/3-...-l/m

例如,若输入5,则应输出-0.283333。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

doublefun(intm)

(

doublet=LO;

inti;

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

/*************foun

t=1.0-l/i;

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

main()

{intm;

clrscr();

printf("\nPleaseenter1integernumbers

:In");

scanf("%d",&m);

printf("\n\nTheresultis

fun(m));

)

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

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

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

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

intfun(int*x,inty)

(

intt;

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

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

)

40.下列给定程序中,函数fun()的功能是逐个比较a,b两个字符串对

应位置中的字符,把ASCII值小或相等的字符依次存放到c数组中,形

成一个新的字符串。

例如:a中的字符串为fshADfg,b中的字符串为sdAEdi,则c中的字

符串应为fdAADfo

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

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

试题程序:

#include<stdio.h>

#include<strinq.h>

voidfun(char*p,char*q,char*c)

{intk=0;

while(*p||*q)

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

{if(*p<=*q)

c[k]=*q;

elsec[k]:*p;

if(*p)p++;

if(*q)q++;

I**+**********^Qund**************/

k++

)

main()

{chara[10]="fshADfg",b[10]="sdAEdi",

c[80]={'\0');

fun(a,b,c);

printf("Thestringa:");puts(a);

printf("Thestringb:");puts(b);

printf("Theresult:");puts(c);

)

五、程序改错题(2题)

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

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

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

注意:不要改动main函数,不能增选或删行,也不能匿改程序的结

构。

试题程序:

#include<conio.h>

#include<stdio.h>

//******

Prime(intm);

intj,P;

p=l;

//****f^)und****

for(j=2;j<m;j++)

if!(m%j)

(

p=0;

break;

)

retum(p);

intn;

printf("\npleaseenteranintegernumberbetween2

and5000:");

scanf("%d",&n);

printf("\n\nTheprimefactor(s)of%dis(are):",n):

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

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

printf("%4d,",i);

printf("\n");

)

42.

以下程序可把输入的十进制数以十六进制数的形式输出。请在横线上填

上适当的内容并把横线删除,使它能得出正确的结果。注意:不要改动

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

二includeVsldio.h>

voidmain()

charb[17]«{-0123456789ABCDEF"h

intc(64],d.i=O.lwisc-16s

longmumt

Drintf(HEnteranumber:\n")iscanf("%Id*.

&num)i

du

(

//••••found••»•

c[i]4ii++inum—num/basei)

while,num!■■0)।

prinif("TransmitcnewbaseAn")i

for(------iii>-0i"-i)

//•«««found**»»

(d=c[i]iprinif("%c"・b>i)

printf(*\nH)t

六、操作题(2题)

43.当m=l,n=2,a=3,b=2,c=4时,执行d=(m=a!=B)&&(n=b>C)后,

m的值为()o

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

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

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

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

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

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

题程序:

Wl*irlw<leVmdMXh'.'>

Wmclud*<RMHII.b>

mipror<mta«mib»mic)

M(•・―b&Ab・■9)

//••••IOMMI••••

rrium11

♦Ue"■<1

Euntli

//••••IOUMI••••

•larrrt・m3i

“JrrlumOi

voedmflm<)

mta»b«c«jilupei

pmf{(0\nlfipuie«b«ct

9canf(a,KdKdKda*«(>a«&b»&c)t

*\n«wKd»b-3d・c-%d\n"♦•・}・•)4

,hapc="ocl•♦b・c).

pnatlf"\n\aThcUuiprs%An*•shape)i

参考答案

1.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:

要使整数x的绝对值大于5,则x大于5或x小于5,用C语言表示即

为:x>5||x<-5或者x<-5||x>50故本题答案为;x>5||x<-5或者x<

-5||x>5o

2.静态静态解析:静态测试包括代码检查、静态结构分析,代码质量度

量等。静态测试不实际运行软件。

3.str+n或p+nstr+n或p+n解析:此题主要是将形参c中的字符与str中

的字符相比较,返回以形参c中字符开头的后续字符串,函数fun中的

变量n用于记录形参c中字符在str字符串中的位置,故返回的结果用

str+n或p+n表示。

4.101,0解析:与运算两边的语句必须同时为真时,结果才为真。当执行

完if((++a<0)&&!(b—<=0))时,a,b的值已经发生了变化。

5.m<10n%4!=0

6.113399

7.132132解析:在程序中,i从9开始循环,当i=9时,执行case0

后的语句m++;n++;此时m=l,n=l,然后执行break,跳出循环;当

i=10时,执行detault后的语句k++;n++;此时k=l,n=2;当i=l1时,

再执行default后的语句,k=2,n=3o此时,m=l,n=3,k=2o输出结果

为132。

8.b=i+l

9.((x>0)&&<y>0))II(x>0)&&(z>0)IIy>0)&&(z>0))((x>0)&&<y

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

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

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

10.9.18274e+0089.18274e+008解析:本题考查的循环条件是cl<c2,当

cl>=c2时,退出循环。所以,第一次循环输出09,第二次循环输出18,

如此循环直到输出45,之后cl=5,c2=4,不满足循环条件,退出循环。

U.B

12.C视图设计的设计次序分3种:自顶向下、自底向上和由内向外。它

们为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握。

13.C

14.C

试题2分析

结点的存储顺序和逻辑顺序不一定一致,存储空间也不一定连续。插

入和删除元素的时候,不需要移动表中的元素。

试题2答案

C

15.C

宏定义不是C语句,末尾不需要有分号。所以语句Printf("%4.1Nn",,

S(a+b));展开后为printf("%4.1f\\n",3.5;*a+b*a+b;);所以程序会出现

语法错误。

16.B

17.B

链表是一种特殊的线性表,链表的存储结构与顺序存储结构不同,它

的存储区域可以是任意的存储单元,对存储系统中零碎的存储部分具

有更好的应用,在给其分配存储单元时,不必事先估计整个存储单元

的空间大小;由于链表的元素是通过指针域的指针相连的,用链表存

储数据时,对其进行插入和删除操作时,不需要移动其他元素,只需

改变其直接前驱指针域,使其指向该结点,并将该结点的指针域修改

为指向其直接后继结点即可。当然,不管是链表还是顺序存储,所需

空间与线性表长度都成正比。在链式存储的链表结构中,由于后一结

点数据被存储在哪里,只有通过前一结点的指针域才知道,因此,访

问时只能是逐个访问,而不能实现随机访问。

18.A

19.B解析:本题考查了程序的基本结构。程序由一些基本结构组成。任

何一个大型的程序都由3种基本结构组成,由这些基本结构顺序的构成

了一个结构化的程序。这3种基本结构为:顺序结构、选择结构和循环结

构。

20.A

21.

【解析】字符串数组中每一行都是一个完整的字符串,其结束标志为’

\0'。因此,通过字符串的结束标志来判断每一个字符串是否结束,将

字符串数组中的所有字符串均赋值给新的一维数组b来完成字符串的

合并。

22.

【解析】要得到成绩高于等于平均分的学生数据,首先要得到所有学生

的平均分,然后把每个学生的成绩与平均分相比较。把符合条件的学生

数据放在数组b中,学生个数通过形参中的指针变量返回,平均分数由

函数值返回。

23.

【解析】首先定义一个变量来存放表达式的和,根据题目中提供的多项

式,通过n次循环来求出n项的和。最后把所求得的和返回到主函数当

中。

24.1ntfun(char*s)

(

Inti,j=O;

for(i=0;s[i]!=,\\o7i++)if(s[i]!=,,&&(s[i+i]=,,||s[i+l]='\\0'))

/*如果一个字母的下一个字符为空格或者结束标记,则表示一个单词

结束*/

J++;

_retumj;/*返回单词个数*/

}

要判断单词的个数,首先考虑怎样识别一个单词。如果一个字母的下

一个字符为空格或者字符串结束标志,则表示一个单词结束。因此程

序使用for循环语句遍历整个字符串,用if条件语句判断当前字符是

否表示一个单词的结束。如果当前字符表示一个单词结束,则存放单

词个数的变量加1,最后返回单词的个数。

25.1intfun(intlim,intaa[MAX])

2{

3inti,j,k=0;

4for(i=2;i<=lim;i++)/*求出小于或等于lim的全部素数*/

5{for(j=2;j<i;j++)

6if(i%j==0)break;

7if(j>=i)

8aa[k++]=i;/*将求出的素数放入数组aa中*/

9)

lOreturnk;/*返回所求出的素数的个数*/

H)

<i;jp++)<>如果一个数是合数,那么它的最小质因数肯定小于等于它的

平方根。本程序使用for循环语句查找小于lim的所有数,使用内嵌的

循环判断语句判断该数是否为素数。在做这道题时,需要重点掌握素

数的判定方法:fbr(j=2;j<sqrt(i);j++)if(i%j==0)break;...</i;jp++)o

26.voidfun(inta,intb,long*c){/*b%10获取b的个位数,a/10获取a的

十位数,a%10获取a的个位数,b/10获取b的十位数*/

*c=b/l0+(a%10)*10+(b%10)*100+(a/l0)*1000;}本题主要考核如何取

出a和b的个位数和十位数,取出后如何将其表示成c中相应的位数。

由于a和b都是只有两位的整数,因此分别对它们除以10可得到它们

的十位数,分别用10对它们求余可得到它们的个位数。将得到的数对

应乘以1000、100、10、1,即可得到c的千位数、百位数、十位数、个

位数。注意使用c时要进行指针运算。

27.

题目中要求除了尾部的*号之外,将字符串中其他*号全部删除。首先将

所有不是*的字符放在字符串str中,然后将尾部的*接在字符的后面,

最后为字符串str加上结束符。

28.

(2)错误:if(*r==0)

正确:if(*r=='\0')

【解析】由于后面的语句控制变量r是指向字符串t的指针,而不是指

向字符串str的指针,因此,“r=p;”应改为“Lt;while循环结束

后,如果r指向字符串t的结束符,证明字符串str中包含一个t字符

串,因此,“if(*r=O)”应改为“if(*r='\0')"°

29.

【解析】要将大于整数m且紧靠m的k个素数存入所指的数组中,首

先应该判断大于整数m且紧靠m的整数是否为素数。将紧靠m且为素

数的k个整数放入数组xx中。

30.

【解析】要返回指定成绩的学生数据,首先应该将所有学生的成绩与指

定成绩相比较。如果有学生的成绩与指定成绩相等,则将该学生的记录

返回给主函数,否则将学号置成空串,成绩置一1返回给主函数。

31.(l)while(fabs(t)>=num)(2)t=s/n;(l)while(fabs(t)>=num)(2)t=s/n;

解析:本题中函数的功能是利用公式计算兀的近似值,直到最后一项的

绝对值小于指定的数。本题解题过程参照一般公式题型的求解过程。

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

*t=d*sl+*t;⑴错误:if(d%2!=0)正确:if(d%2==0)\r\n(2)错误:t=d*sl+t;

正确:*t=d*sl+*t;解析:错误1:偶数是能被2整除,而奇数是不能被

2整除,题目要求找出偶数。错误2:t为指针类型,所以进行运算时要

力口'*’号。

33.(l)voidfun(inta[][M]intm)(2)a[j][k]=(k+l)*(j+l);

(l)voidfun(inta[][M],intm)(2)a|j][k]=(k+l)*(j+l);解析:本题中函

数的功能是根据形参m的值(2gmS9),在m行m列的二维数组中存放

有规律的数据,规律就是,i和j代表二维数组的行和列,则a啪[k]=

(k+l)*(j+l)。

34.(l)if(d%2==0)(2)s/=10;(l)if(d%2==0)(2)s/=10;解析:本

题中函数的功能是将长整型数s中每一位上为偶数的数依次取出,构成

一个新数放在t中。首先在函数中对长整型数的每一位来进行截取,然

后对其进行判断,最后根据判断结果进行操作。

35.(1)错误/defineFU(mn)(m/n)正确;#defineFU(mn)(m)/(n)⑵错误:

return(Value);正确:return(value);⑴错误;#defineFU(m,n)(m/n)正

确:#defineFU(m,n)(m)/(n)

温馨提示

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

评论

0/150

提交评论