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

下载本文档

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

文档简介

2021年陕西省西安市全国计算机等级考试

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

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

一、2.填空题(10题)

1.下面程序执行后输出的结果是[】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

)

main()

{inta=7,b=5;

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

)

2.下面程序的功能是【】。

doublesub(doublex,inty)

{intn;doublez;

for(n=1,z=x;n<y;n++)z=z*x;

returnz;}

main()

{doublea=2.0,b=4.0,c;

c=sub(a,b);printf("%f",c);}

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

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

)

4.注释一般分为序言性注释和注释。

5.对有14个结点的完全二叉树的结点以从上到下、从左到右的顺序进

行编号后,序号最小的叶结点的序号【】。

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

整体叫做【】。

7.下列程序的运行结果是【】。

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf("%\n",p);

}

8.以下程序的输出是【】。

main()

charstrl[]="Howdoyoudo",*pl=strl;

strcpy(strl+strlen(strl)/2,"esshe");

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

9.下列程序的运行结果是

main()

{inti,a[10];

a[0]=a[l]=l;

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

a[i]=a[i-2]+a[i-l];

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

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

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

}

)

10.下列程序的输出结果是【】。

main()

{inti;

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

{if(i>4)

{printf("%d\n",i);

break;}

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

二、单选题(10题)

11.设有序表中的元素为(13,18,24,35,47,50,62),则在其中利用

二分法查找值为24的元素需要经过()次比较容易

A.lB.2C.3D.4

12.下面不属于需求分析阶段任务的是()。

A.确定软件系统的功能需求B.确定软件系统的性能需求C.制定软件

集成测试计划D.需求规格说明书评审

13.有以下程序

#include<stdio.h>

main()

{charb,c;inti;

b='a';c='A';

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

{if(i%2)putchar(i+b);

elseputehar(i+c);

}printf("\n”);

)

程序运行后的输出结果是

A.ABCDEFB.AbCdEfC.aBeDeFD.abcdef

14.软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪

些功能的阶段是()o

A.概要设计B.软件设计C.可行性研究和计划制定D.需求分析

15.二叉树的后序排列DBEFCA,中序排列DBAECF,那么对其做先序

线索化二叉树,节点E的线索化指向节点0

A.BCB.ACC.DFD.CF

16.若有说明语句:double*p,a;则通过scanf语句正确给输入项读人

数据的程序段是()。

A.*p=&a;scanf("%lf,,p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%lf,p);

17.

(1)算法的空间复杂度是指()。

A)算法程序的长度B)算法程序中的指令条数

C)算法程序所占的存储空间D)律法执行过程中所需要的存储空间

18.有以下程序:

#include<stdio.h>

main()

{chars[]="012xy\O8s34f4w2t;

inti;n=0;,

for(i=0;s[i]!=O;i++)

if(s[i]>=0s[i]<=9)n++;

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

)

程序运行后的输出结果是()oA.oB.3C.7D.8

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

驾mciifdcVvtdo.

shtnn^.b>

voidfuci(mtb[j)

(statictnii-Oi

do

»whale<♦♦Y

matf)()

{mtIt«B(3]-1l«3»5«4»9|i

lwn(a)i

for(k-GBk<5」++)printK*llid*••tkj)i

A.13579B48579C.48549D.48999

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

#inchide<stdio.h>

main。

{

inti,j,m=1;

fbr(i=1;i<3;i++)

{fbr(j=3;j>0;j----)

{if(i*j>3)break;

=}

}

printf(,'m=?odnn,m);

)

A.m=4

B.m=2

C.m=6

D.m=5

三、程序设计题(10题)

21.编程将文件read.txt中的字符读出显示到屏幕上。

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

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

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

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

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

linclude<stdio.h>

voidNONOO;

intfun(intn)

main()

{intn,place;

do(

printf(”请输入一个4位以内的正整数:■);

scanf&n);

)while(n<0IIn>9999);

place-fun(n);

printf("输入的数字是3位place);

NONO();

)

voidNONO()

</•本函数用于打开文件,输入数据.调用雨敷,输出数据,关闭文件。•/

FILE•fp,•wf;

inti,n,place;

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

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

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

(

fscanf(fp,"Id。,4n);

place=fun(n);

fprintf(wfr"%d\n"rplace);

>

fclose(fp);

fclose(wf);

序:,

23.请编一个函数fun(char*str),该函数的功能是把字符串中的内容逆

置。例如,字符串中原有的字符串为asdfg,则调用该函数后,串中的

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

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

gMtdwdc<string.h>

iflcludrVcom0k

SincludeVsidio.

FdefineN100

voidfunCehar•Mr>

vo«dtnatn<)

chara[N]i

FILE•<Mit>

pntid<*Enter■»tnn<ie>i

print"*Theor<tMlwtnnc•)1

pvt»(a>s

pnM((aTheMrtnga/itrmo4iftedi*>i

•irepy(«»*Welrome!*)t

fun<l>S

<Xilwfopea(.gtlile.)|

fprinrftgt.•苏••..).

fck»e<otft)t

24.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:

除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,

不得使用c语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符

串中的内容应当是:

****ABCDEFG。

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

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

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

#include<stdin,h>

voidfun(rhar♦■)

main()

chars[81];voidNONO();

printf(*Enterastring:\nN);geu(B);

fun(、):

|irintf("Thestringafterdeleted:\n");puts(»);

NONO():

voidNONO()

!/•本南数用于打开文件.输入数据,调用函数,临出数据,关闭文件.•/

FILE•in,•oul;

mtt;chars[81J;

in=fopen("in.dat",**r**);

outwfopcn("out.dat**.ww*);

fw(i=

f»canf(in.**%•*,・);

fun(«)(

fprinlf(out.H%«\n**..);

(cloec(in);

IcloseCout);

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

案的项目中包含一个源程序文件progl.c。在此程序中,定义了NxN的

二维数组,并在主函数中赋值。请编写函数fun(),其功能是求出数组

周边元素的平均值并将其作为函数值返回给主函数中的s。例如,若a

数组中的值为

01279

19745

23831

45682

59141

则返回主程序后s的值应为3.375o

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

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

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

试题程序:

1#include<stdio.h>

2#include<conio.h>

3#include<stdlib.h>

4#defineN5

5doublefun(intw[][n])

6{

7

8)

9voidmain()

10{

11FILE*wf;

12inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,

13inti,j;

14doubles;

15system("CLS");

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

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

18{for(j=0;j<N;j++)

19{printf("%4d",a[i][j]);}

20printf("\n");

21}

22s=fun(a);

23printf("***TheResult***\n");

24printf("Thesumis:%lf\n",s);

25/******************/

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

27fprintf(wf,"%if',s);

28fclose(wf);

29/******************/

30}

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

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

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

I23

■rrw4S6

7・。

中的值应力.

023

art-00・

OOo

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

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

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

试题程序:

ttVen*(K

MidtMftrVzdio.

9include<*ldbK

8includeVtime.Ii>

adefineM5

voidpror<mtarr£:二M2)

voidmainC)

mtart,M2[M^»i«ji

*ywtrm(*Cl.S*>।

p<rtnt((*••••Thearray••••\n*”

(uttMgiird)time<NULD)i

foc(i-O.i<M11++1

m一个i•机的

-famil>M10s

print(<*K4dM«•rtLiJUJ)i

pnntf(N\n*)s

pfoc^arr)।

prtmfCTHERESVLT\tTh

forG-0t><^Msi•*)

,or«j・0"V+

pnixfC-%4d'.・Mi,

27.m个人的成绩存放在score数组中,请编写函数proc(),它的功

能是:将高于平均分的人数作为函数值返回,将高于平均分的分数放

在up所指的数组中。例如,当score数组中的数据为100,80,76,

60,59,48,43,35,59时,函数返回的人数应该是4,up中的数据

应为100,80,76,95o注意:部分源程序给出如下。请勿改动

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

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

itV.idlib.Ii>

•tincludeVcomo.b>

SinHifde<Btdio.

includeV-mng,h>

iMprocCkiM»core{]«intm«intup£j)

〃・内高于f均分MA.Ct

votd01*19()

iaii«n«up(9;i

ini,IOO.8O.76.6O.59.

4S»43»3S«9SI•

»y«trNi(d3a)।

nwproc(scorv«9«up)i

pru>tl(\ntipioihr*corv*1*":'uv\n・n);

loc(i・ON<ti.i++)

*9*id"•upLij4

28.请编写函数fun,其功能是:找出一维整型数组元素中最大的值所

在的下标,并通过形参传回。数组元素中的值已在主函数中赋予。

主函数中x是数组名,n是x中的数据个数,max存放最大值。index

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

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

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

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

试题程序:

"include<timv.h>

stincludeVstdlib.h>

9includeVstdio.h>

void(un(in(a[1・int•max«in(»d)

vntHmnin()

inii,x[20j,max*index*n'10(

sranf((unsigned)time(NULL))t

for(i=(hiV=iui++)

(

x[ij=rand()%50t

printf(M%4dH»x£i]>j"输出一个fill机数"I

prinif<*\n")।

fun(x»n»&max・&index)।

printf("Max-%5d.Index=%1d\n".max.in­

dex)।

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

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

该函数的功能是判断字符串是否为回文,若是,则函数返回1,在主函

数中输出“YES”,否则返回0,在主函数中输出“NO”。回文字符串是指顺

读和倒读都一样的字符串。例如,字符串LEVEL是回文,而字符串

123312就不是回文。注意:部分源程序在文件progl.c中。第3部分无纸

化考武题庠请勿改动主函数main()和其他函数中的任何内容,仅在函数

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

1#include2#defineN803intfun(char*str)4{56}7main()8{9chars[n];1OFILE*o

ut;llchar*test[]={"1234321","123421","123321","abcdCBA");12inti;13pri

ntf("Enterastring:");14gets(s);15printf("\n\n");16puts(s);17if(fun(s))18printf(

"YES\n");l9else20printf("NO\n");2]/******************/22out=fopen("

out.dat","w");23for(i=0;i<4/i++)24if(fun(test[i]))25fprintf(out,"YES\n");26e

lse27fprintf(out,"NO'n");28fclose(out);29/******************/30}

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

回此值。

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

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

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

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

Winclude<stdio.h>

itincludc<string,ii>

M8!

intfun(rhnr•charc)

main()

|chura;MJ,ch;

voidNONO():

printf("\nPlmseenterastring:");grb»(a);

printf(**XnPleaseenterachar:"I;ch=grtchar();

printf(w\nThcnumberofthecharis:%d\n**.fun(・.ch));

NONO():

voidNONO()

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

inii:

FILE*rf,•M1

rhara(Mj,b(M],ch;

rf-fbf)cn("imqht"Jr");

wf=r(>prn("ouLdal'*w");

fbr(is0;i<10•i♦-f)|

(Bcnnf(rf,M%«**.a);

ftwanf(if,M%sM.b);

ch=♦b;

fprinlf(wf.".ch.fun(a«ch));

(clone(if);

fcl<we(wf);

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

31.下列给定程序中,函数fun()的功能是:给一维数组a输入任意4个

整数,并按如下的规律输出。例如输入1,2,3,4,程序运行后输出以

下方阵:

4123

3412

2341

1234

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

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

试题程序;

#include<stdio.h>

#defineM4

voidfun(inta)

{inti,j,k,m;

printf("Enter4number:");

for(i=0;i<M;i++)scanf("%d",&a[i]);

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

for(i=M;i>0;i—)

{k=a[M-l];

for(j=M-l;j>0;j—)

a[j]=a[j+l];

a[0]=k;

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

printf("\n");

)

)

main()

{inta[M];

fun(a);printf("\n\n");

32.给定程序MODE.C中函数fun的功能是:从整数1到55之间,选

出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指

的数组中,这些数的个数作为函数值返回。规定,函数中al放个位数,

a2放十位数。

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

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

1finclude<stdio*h>

2intfun(int*b)

3{intalra2ri-0;

4for(k-10;k<«55;k++){

5*****♦**/

6a2-k/10;

7al-k-a2*10;

8if((k%3««0&&a2-«5)||(k%3-0

&&al・=5))

9(b(i)«k;

10}

11/************found***♦♦♦♦♦*♦♦♦/

12returnk;

13}

14main()

15{inta[100],krm;

16m»fun(a);

17printf("Theresultis:\nw);

wn

18for(k=0;k<m;k++)printf(%4dr

a[k]);printf(H\nw);

19

33.给定程序MOD11.C中函数。fun的功能是:从3个红球,5个白

球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没

有黑球,但必须要有红球和白球。

组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红

球数,j的值代表白球数,k的值代表黑球数。

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

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

1♦include<stdio.h>

2intfun()

3(intifjrsum*0;

4printf(w\nTheresult:\n\n");

5/*吉****★★★★***found**•*****♦•**•/

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

7(for(j»l;j<=5;j++)

8{k«8-i-j;

9/…★………found

10if(K>»0&&K<-6)

11{sum*sum4-l;

12printf("red:%4dwhite:

vv

%4dblack:14d\n,irjrk);

13

14

15

16returnsum;

17)

18main()

19{intsum;

20sum=fun();

M

21printf("sum»%4d\n\nrsum);

22)

34.给定程序M0D11.C中函数fun的功能是:从n(形参)个学生的成绩

中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在

形参aver所指的存储单元中。

例如,若输入8名学生的成绩:80.5607290.59851.58864则低于

平均分的学生人数为:4(平均分为:75.5625)。

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

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

1;#include<stdio.h>

2!#defineN20

3intfun(float*srintn,float

*aver)

4(floatave#t»0.0;

5intcount»0rk,i;

6for(k-0;k<n;k++)

7/••foundmff*/

8t=s[k];

9ave«t/n;

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

11if(s[i]<ave)counts-1-;

12/………★…found……•……/

13*aver»Ave;

14returncount;

15I

16main()

17{floats[30],aver;

18intm,i;

19printf("\nPleaseenterm:

ww

scanf(%dr&m);

20printf(R\nPleaseenter%dmark:

\n”,m);

21for(i-0;i<m;i++)scanf

M

(%frs+i);

22printf(w\nThenumberofstudents:

%d\n”,fun(s,m,&aver));

wM

23printf(Ave«%f\nraver);

24)

35.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各

结点数据域赋值。函数fun()的作用是求出单向链表结点(不包括头结点)

数据域中的最大值,并且作为函数值返回。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

typedefstructaa

{intdata;

structaa*next;

}NODE;

/*************foun(

fun(NODE*h)

{intmax=-1;

NODE*p;

p=h->next;

while(p)

{if(p->data>max)

max=p->data;

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

p=h->next;

returnmax;

}

outresult(ints,FILE*pf)

{fprintf(pf,"\nThemaxinlink:%d\n

NODE*creatlink(intn,intm)

{NODE*h,*p,*s,*q;

inti,x;

h=p=(NODE*)malloc(sizeof(NODE));

h->data=9999;

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

{s=(NODE*)malloc(sizeof(NODE));

s->data=rand()%m;s->next=p->next;

p->next=s;p=p->next;

p->next=NULL;

returnh;

)

outlink(NODE*h,FILE*pf)

{NODE*p;

p=h->next;

fprintf(pf,"\nTheLIST:\n\nHEAD");

while(p)

{fprintf(pf,>%d",p->data);

p=p->next;}

fprintf(pf,"\n");

)

main()

{NODE*head;intm;

clrscr();

head=creatlink(12,100);

outlink(head,stdout);

m=fun(head);

printf("\nTheRESULT:\n");outresult

(m,stdout);

)

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

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

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

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

intfun(intm)

{intk=2;

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

k++

if(m=k)

return1;

elsereturnO;

)

main()

{ihtn;

clrscr();

printf("\nPleaseentern:");

scanf("%d",&n);

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

elseprintf("NO!\n");

37.给定程序MOD11.C中函数fun的功能是:为一个偶数寻找两个素

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

函数。

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

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

♦include<stdio.h>

2♦include<math.h>

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

4(int

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

6/•…………found…•………/

7Y-1;

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

j++)

9if(i%j«»0)y»0;

10if(y-1)(

11j/♦♦***********foundw*******♦**♦♦/

12!d»-a-i;

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

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

15if(y—1)

16{*b«i;*c*d;}

17

18

19

20main()

21(inta,bfc;

22do

23{printf(w\nlnputa:");scanf

LW,,a);)

24while(at2);

25fun(a,6c);

ww

26printf(\n\n%d»%d.%d\nra#brc);

27

38.数列中,第一项为3,后一项都比前一项的值增5。下列给定程序中,

函数fun()的功能是:计算前n(4SnS50)项的累计和。在累加过程中把那

些被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数

作为函数值返回主函数里。如,当n的值为20时,该数列为3,8,13,

18,23,28,93,98o符合此条件的累加值应为42,126,366,

570,1010o

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

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

试题程序:

#include<stdio.h>

#defineN20

intfun(ihtn,int*a)

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

{inti,j,k,sum;

sum=0;

for(k=3,i=0;i<n;i++,k+=5)

{sum=sum+k;

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

if(sum%4=2)

a[j++]=sum;

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

returnj;

main()

{inta[N],d,n,i;

printf("\nEntern(4<=n<=50):");

scanf("%d",&n);

d=fun(n,a);

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

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

printf("\n\n");

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

函数fun()的功能是:删除数列中值为X的元素。N中存放的是数列中

元素的个数。

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

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

试题程序:

#include<stdio.h>

#defineN20

fun(int*a,intn,intx)

{intp=0,i;

a[n]=x;

while(x!=a[p])

P=P+1;

if(p==n)return-1;

else

{for(i=p;i<n;i++)

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

a[i+l]=a[i];

returnn-1;

main()

{intw[N]={-3,0,1,5,7,99,10,15,30,90),

x,n,i;

n=10;

printf("Theoriginaldata:\n");

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

printf("\nlnputx(todelete):");

scanf("%d",&x);

printf("Delete:%d\n",x);

n=fun(w,n,x);

if(n==-l)printf("***Nobefound!

***\n\n");

else

{printf("Thedataafterdeleted:\n");

for(i=0;i<n;i++)printf("%5d",

w[i]);printf("\n\n");

40.给定程序M0D11.C中函数fun的功能是:根据以下公式求加值,

并作为函数值返回。

例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.141480。

23353573579

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

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

1tinclude<math.h>

2[finclude<stdio.h>

3jdoublefun(doubleeps)

4•{doubles,t;intn«l;

5s-0.0;

6।/***********wfound*****♦*♦*♦*♦

7t-0;

8while(t>eps)

9(s+・tj

10;t-t♦n/(2*n>l);

11!

12;)

13\♦♦♦***♦♦**♦*found*#****♦♦**♦♦

14\

return(s);

15•

16fimain()

17•{doublex;

18!printf("\nPleas❷entera

precision:H);scanf(w%lf&x)

19printf("\neps»%lfr

w

Pi-%lf\n\n,xrfun(x));

20}

五、程序改错题(2题)

41.

下列给定程序中,函数fun()的功能是:将tt所指字符串中的小写字

母全部改为对应的大写字母,其他字符不变。例如,若输入“Ab,cD”,

则输出“AB,CD”。请改正程序中的错误,使它能得出正确的结果。注

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

试题程序:

耳tftclvdeVctMwo.

includeVstdio,b>

9includeVzring.h>

char•lun《char<t[J>

infii

//••••found••••

Il“i(iJ<•',',)

//••••••••

tt[i]♦

rrtwraCft)i

voidm>in(>

char

pnntfC*\nf*Se*MenteraMnog:">«

get»(tt)t

pnntfCv\nTh«EokMnng*B>KAna«fwn(tt))।

42.

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

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

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

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

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

「includeVpt(UiKk>

UincludeVcottioib>

9include<stdicxh>

//••••fownd••••

doubleproHdoubleq>

minsdovkle

wh»Je<.<1)

ft•••♦|OUM|♦♦••

•urn-sum4-<nI>/nt

■++<

//••••fou»4••••

rvtiaraMicni

voidmainC>

By»i<tn(*CLS*)i

pnntf(*%(\n-•proc<^0)H

六、操作题(2题)

43.下列给定程序中,函数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.0f"/a[i]);

}

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

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

printf("\n\n");

44.以下程序的功能是:输出a、b、c三个变量中的最小值。

#include<stdio.h>

main()

{inta,b,c,tl,t2;

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

tl=a<b?[];

t2=c<tl?[];

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

参考答案

1.22解析:本题变量m既是外部变量(值是13),又是fun函数的局部

变量(值为3)o函数fun(x*y-m)的值为7*5-3=32,在main函数中,

fun(a,b)/m中的m应取外部变量的值13,因此输出2。

2.本程序的功能是求a的b次方本程序的功能是求a的b次方

3.3131解析:在函数调用时,形参值和改变,不会改变实参的值。

4.功能性功能性解析:注释一般分为序言性注释和功能性注释。序言性

注释通常位于每个程序的开头部分,给出程序的整体说明;功能性注释

一般嵌在源程序体之中,主要描述其后的语句或程序做什么,

5.8

6.数据库系统数据库系统

7.efghefgh解析:函数ss的作用是让形参指针s指向该字符串的右半部

分。主函数中首先定义了一个字符型指针变量p和字符型指针str,并

初始化为“abcdefgh”,然后调用函数ss,将实参str传给形参s,因此可

知该函数返回的指针,指向str所指的字符串“abcdefgh”的右半部分,即

指向字符串“efgh”,所以最后输出指针p(指针p的值为调用函数ss(str)

的返回值)所指向的字符串为“efgh”。

8.HowdoessheHowdoesshe解析:strcpy(strl,si);字符串拷贝函数,

作用是将字符串si拷贝到字符数组strl中去。strlen(str):测试字符串str

的长度,函数的值为字符串中实际长度,不包括在内。本题中

strlen(strl)的值为13,贝IJstrcpy(strl+strlen(strl)/2,'esshe');相当于

strcpy(strl+6,'esshe');,因此可得答案为Howdoesshe

9.11<CR>23<CR>5(<CR代表换行)11<CR>23<CR>5(<CR,

代表换行)解析:本题通过语句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”将数

组中前面两项的和赋值给数组当前元素,得到a的值应为(1,1,2,3,5)。语

句if(i%2==0)pfintf(,\\n,)是要将数组中的元素以每行2个的形式输出。

10.1351\r\n3\r\n5解析:本题考查了for循环语句的使用,break语句用

在本题中是结束for循环直接跳出循环体外。当i=l时,因为if语句条件

不满足,所以直接执行printf(1%d\\n',i++);输出1,同时i自加1;执行第

二次for循环时,i=3;同样的if语句条件不满足,所以直接执行

printf(%d\\n;i++);输出3,同时i自力口1;执行第三次for循环时,i=5,if

语句条件满足,所以执行printf(%d\\n,,i),输出5,然后break语句跳出了

for循环。

11.C

12.C

【答案】:C

【知识点】:需求分析阶段的任务

【解析】:需求分析阶段的任务是深入描述软件的功能和性能,确定

软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他

有效性需求,借助于当前系统的逻辑模型导出目标系统逻辑模型,解

决目标系统“做什么”的问题。可分为需求提出、需求描述及需求评审

三个阶段。从此可以看出需求分析的任务不包括制定软件集成测试计

划,故选C。

13.B

解析:变量b和c中分别存放字符a和A的ASCII码,当i的值对2

求余非零时输出ASCII码为i+b)的字符;当i的值对2求余为零时输

出ASCII码为i+c的字符。分析程序可知本题选B。

14.DW通常,将软件产品从提出、实现、使用维护到停止使用、退役的

过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该

软件产品不能使用为止的整个时期都属于软件生命周期。软件生命周期

的主要活动阶段为:可行性研究和计划制定。确定待开发软件系统的开

发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可

能方案,制定完成开发任务的实施计划。

W需求分析。对待开发软件提出的需求进行分析并给出详细定义,即准

确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提

交评审。

\n软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的

基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。

\n软件实现。把软件设计转换成计算机可以接受的程序代码。即完成源

程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测

试计划。

\n软件测试。在设计测试用例的基础上,检验软件的各个组成部分。编

写测试分析报告。

\n运行和维护。将已交付的软件投入运行,并在运行使用中不断地维护,

根据新提出的需求进行必要而且可能的扩充和删改。

\n本题答案是D)o

\n

15.D

16.D

double*p,a定义了一个指向双精度型的指针变量P和双精度型变量

a,p=&a表示将变量a的地址赋给指针变量p;scanf("%If,p)表示用

键盘输入的数赋给指针变量P所指向的地址单元中,scanf函数要求在

输入double型数据,格式控制符必须用%If。否则,数据不能正确输

入。所以选项D正确。

17.D

18.B

考查简单的C程序数组和循环。for循环是指i=0,如果s/[3]!=0,则

i自动加1。if循环指的是s国中的元素大于等于。且小于等于9,则n

加1,所以答案为B

温馨提示

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

评论

0/150

提交评论