2023年贵州省六盘水市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2023年贵州省六盘水市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2023年贵州省六盘水市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2023年贵州省六盘水市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2023年贵州省六盘水市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

2023年贵州省六盘水市全国计算机等级考

试C语言程序设计模拟考试(含答案)

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

一、2.填空题(10题)

1.以下程序运行后的输出结果是_____O

intf(intaf],intn)

(

if(n>=1)

returnf(a,n-l)+a[n-l];

else

return0;

)

main{)

(

intaa[5]={l,2,3,4,5},s;

s=f(aa,5);

print"%d\n”,s);

)

2.以下程序是用递归方法求数组中的最大值及其下标值。请填空。

#defineM10

voidfindmax(int*a,intn,inti,int*pk)

{if(i<n)

{if(a[i]>a[*pk])[];

findmax(a,n,i+1,&(*pk));}}

main()

{inta[M].j,n=0;

printf("\nEnter%ddata;\nn,M);

for(i=0;i<M;i++)scanf(,*%du,a+i);

findmax(a,M,0,&n);

printf("Themaxinumis:%d\nu,a[n]);

printf(HIt'sindexis;%d\nn,n);}

3.在一个容量为32的循环队列中,若头指针front=3,尾指针rea尸2,

则该循环队列中共有个元素。

4.有以下程序段,且变量已正确定义和赋值

for(s=1.0,k=l;k<=n;k++)s=s+1.0/(k*(k+l));

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

请填空,使下面程序段的功能与之完全相同

S=1.0;k=l;

while([8]){s=s+1.0/(k*(k+l));[9];)

printf(ns=%f\n\nH,s);

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

束循环。请填空。

intn=0,c;

c=getchar();

while(c!='\n')

{if()

n++;

6.定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【

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

charstr口二"ABCD",*p=str;

printf(n%d\n';*(p+3));

8.执行以下程序后,输出“铲’的个数是【】。

#include<stdio.h>

main()

{inti,j;

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

for(j=2;j<=i;j++)pulchar('#');

)

9.已定义charch=$;inti=l,j;,执行j!=ch&&i++以后,i的值为。

10.以下程序运行后的输出结果是()。main(){inta,b,c;a=10;b=20;

c=(a/b<1)&&(a%b<1);printf(n%d%d%d\nH,a,b,C);}

二、单选题(10题)

11.下列程序段的时间复杂度为()。

for(i=l;i<=n;i-H-)

for(j=l:j<=i;j++)

for(k=l;k<=j;k-H-)

x++;

A.O(i*j)B.O(i+j+k)C.O(n3)D.O(n2)

12.下列程序的输出结果是_____o#include<stdio.h>main()

{doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf("%d\n",

d*y);)

A.3B.3.2C.0D.3.07

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

A.线性表是由n个元素组成的一个有限序列

B.线性表是一种线性结构

C.线性表的所有结点有且仅有一个前件和后件

D.线性表可以是空表

14.每次从无序表中取出一个元素,把它插入到有序表中的适当位置,此

种排序方法叫做()排序。

A.插入B.堆C快速D.归并排序

15.

有以下程序

#include<stdio.h>

main

(inta=l,b=2,c=3,x;

x=(aAb)&C;printf(r%dH,x);

)

程序的运行结果是()。

A.OB.lC.2D.3

16.有以下程序:

#include<stdio.h>

main()

{charc;

for(;(c=gctchar())!='#';)

{if(c>=6a,&&cv='z')c=c-'a'+'A';

putchar(++c);

}

)

执行时输入aBcDefG##并按VEnter>键,则输出结果是()。

A.AbCdEFgB.ABCDEFGC.BCDEFGHD.bcdefgh

17.折半查找的时间复杂性为0

A.O(n2)B.O(n)C.O(nlogn)D.O(logn)

(37)以下程序的输出结果是()•

#include<stdio.h>,

structst

{intx;int*y;}*p;

int叫4]={1,2,3,4};

structstaa[4]={2,&dt[0],3»&dt[0],4,&dt[0],5,&dt[0]J;

main()'

{尸训;.

HM

printK%d\nt++(p->x));

)

IQA)1B)2C)3D)4

19.有以下程序;

#include<stdio.h>

main()

{FILE*fp;charstrllOJ;

fp=fopen(nmyfile,dat'\"");

{puts("abeH,ip);fclose(fp);

fp=fopen(nmyfile.dat'\"a*");

fprintf(fp,n%d",28);

rewind(fp);

fscanf(fp,n%Su,str);puts(str);

fclose(fp);

)

程序运行后的输出结果是()oA.abcB.28cC.abc28D.内类型不一致而出错

20.已知各变量的类型说明如下则以下不符合C语言语法的表达式是

0。

intk,a,b:

unsignedlongw=5:

doublex=l.42;

A.x%(-3)B.w+=-2C,k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

三、程序设计题(10题)

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

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

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

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

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

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

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

•include<suiiu.h>

•defineN8

typedefstruct

|charnum[10];

double»[N];

doubleave;

|STREC;

voidfun(STREC•a)

main()

|STREC,=I-GA005",85.5.76,69.5.85,91,72,64.5.87.51;

inti;

voidNONO();

fun();

printf("The%studentdau:\n",•.num);

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

printf(*%4.if\n"»[i]);

print£("\navez%7.3An".s.ave);

NONO();

I

voidNONO()

!/•本函数用于打开文件人数然,,用雨效,•出数据,关闭文件。

FILE*out;

intij;STREC■[10}-I

|"GA005*,85.5.76.69.5,85.91,72,64.5.87.51.

I*GA001-.82.5,66,76.5.76,89.76.46.5,78.51.

|*GA002-,72.5,56,66.5,66,79,68,46.5,58.51.

I-GA003".92.5.76.86.5,86,99,86,56.5.88.51,

|-CA004",82.66.5.46.5,56,76,75,76.5,63.51.

[-GA006”.75.5,74.71.5.85,81,79,64.5.71.51,

(•CA007-,92.5,61,72.5,84.79.75,66,5,72.51,

|■GA008-,72.5.86.73.5,80,69.63,76.5.53.51.

I-CA009-,66.5.71.74.5,70,61.82.86.5,58.5\,

|-GAOJO-,76,66.S,75.5,€0.76,96.5,93.51.

11

out=fopen("out.dal11."w");

fbr(<=0;i<10

fun(&«[i]);

fprintf(outr*%7.3An",»[i].ave)j

fdo«e(out);

22.请编写函数proc(),其功能是:将str所指字符串中下标为偶数的字

符删除,串中剩余字符形成的新串放在t所指数组中。

例如,当str所指字符串中的内容为abcdefg,则在t所指数组中的内容

应是bdfo

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

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

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

试题程序:

ftirMludr

sincludeVcomo.b>

Sinciudrh>

sincludeIi>

voidproc<char•Mr.chard])

voadnM»()

cliar

wy«icm<对<>t

pnnth•\t»PI«i>ceM«T*tn««Mr»">i

proe(»tr.i)i

pnml<"XaTTwresultt«tHAn*»t)t

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

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

fun(),该函数的功能是删除一维数组中所有用同的元素,使之只剩一个。

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

个数。

例如,若一维数组中的元素是

2223445666677899101010

删除后,数组中的元素应该是

2345678910

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

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

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

试题程序:

#include<stdio.h>

#defineN80

intfun(inta[],intn)

(

)

voidmain()

(

inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10J0,10,10},i,n=20;

printf(4tTheoriginaldata:\n^^);

for(i=0;i<n;i++)<p=,M,></n;i++)<>

printf(n%3d,\a[i]);

n=fun(a,n);

printf(€t\n\nThedataafterdeleted:\n^^);

for(i=0;i<n;i++)<p=""x/n;i++)<>

printfCt\n\n^^);

24.

请编一个函数floatproe(doubleh),函数的功能是对变量h中的值保留

2位小数,并对第3位进行四舍五人(规定h中的值为正数)。例如,

若h值为7.32596,则函数返回7.33;若h值为7.32496,则函数返

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

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

语句。试题程序:

0mclu4eVzdlah

ftincludeVstdio.h>

WmcludrVemo.h>

lk>etproHOoath)

votdmainC)

fkMtti

.CIS*)i

"Enterfts>i

,TheongiMldatein:>>i

pnnth()i

pruitK'Themult:HIXo,*.proc<n)i

I

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

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

得使用C语言提供的字符串函数.

例如,字符串中的内容为「•••・A・BC・DEF・C・••••••”,*除后,字符串中的内容应当

是:“••••ABCDEFG”。

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

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干诩句。

tinchide<stdio.h>

voidfun(char•a)

main()

Ichar式81];voidNONO();

printf(-Enterastring:\n");get»(s);

fun(«);

printf("TWstringafterdeleted:\nN);puta(s);

NONO();

I

voidNONO()

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

FILE•in.•out;

iati:chars[81];

mefop«euL(lai-/r");

outsfopenCout.dat".*ww);

fior(i=0;i<10;i+♦)

Nn

be«nf(in(%«,e)t

Ma

^rintf(ou!t%s\n,»);

fcio»(in);

fciow(out);

26.三个整数a、b、c,由键盘输入,输出其中最大的一个数。

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

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

fun(),该函数的功能是将M行N列的二维数组中的数据,按行的顺序

依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存

储单元中。

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

33333333

44444444

55555555

则一维数组中的内容应该为333333334444444455555555。

注意:部分源程序在文件progl.c中。请勿改动main。函数和其他函数中

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

试题程序:

1#include<stdio.h>

2voidfun(int(*s)[10],int♦b,

int•n,intmm,intnn)

fl{

4

■)

6Kvoidmain()

■(

81FILE*wf;

9intw[10][10]={{33,33,33,33),

{44,44,44,44),(55,55,55,55”,

i,3;

110inta[100]®{01,n=0;

11printf(MThematrix:\nM);

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

13(for(j=0;j<4;j++)

M

14printf("%3drw[i][j]);

15printf(n\nM);

胃)

17fun(wra,&n,3,4);

18printf(MTheAarray:\nM);

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

20printf3dM,a[i]);

21printf(M\n\nH);

22/♦♦♦♦♦♦♦♦♦♦♦*♦♦♦*»/

wMM

23wf-fopen("out.datrw);

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

MM

25fprintf(wfr%3d,a[i]);

26fclose(wf);

27/*****************/

28l)

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

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

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

时停止迭代)。

会+4•♦岩+段寻+产答■+•••♦

233x53x5x73x5x7x9

_1x2x…xn

3x5x•••x(2n+1)

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

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

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#include<math.h>

doublefun(doubleeps)

(

)

voidmain()

(

doublex;

printf(''Inputeps:");

scanf(<4%lf\&x);

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

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

S=l+1/(1+2)+1/(1+2+3)+...+1/(l+2+3+...+m)

例如,若主函数从键盘给m输入20后,则输出为s=l.904762c

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

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

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

试题程序:

Sinclude<»tdio.h>

doubleproc(intm)

(

}

voidmain()

(

ini

doublest

printf("\nlnpuim:

scanf(t

s"proc(m)।

print*

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

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

fun。,它的功能是计算下列级数和,和值由函数值返回。

23j

S=1……+"

2!3!«!例如,当n=l(),x=0.3时,函数值为

1.349859。注意:部分源程序在文件progl.c中。请勿改动主函数

main。和其他函数中的任何内容,仅在函数fun()的花括号中填入你编

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

1linclude<conio.h>

2#include<stdio.h>

3tinclude<math.h>

4#include<stdlib.h>

5doublefun(doublex,intn)

6{

7

8}

9voidmain()

10{

11FILE♦wf;

12system(MCLSn);

13printf(H%f\fun(0.3,10));

14/*****************/

15wf«fopen(Mout.datH,MwM);

16fprintffun(0.3,10));

17fclose(wf);

18/*****************/

19)

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

31.下列给定程序中,函数fun()的功能是:从n个学生的成绩中统计出

高于平均分的学生人数,人数由函数值返回,平均分存放在形参aver所

指的存储单元中。例如输入8名学生的成绩:

8565.56995.5875562.575

则高于平均分的学生人数为4(平均分为74.312500)o

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#defineN20

intfun(float*S,intn,float*aver)

(

/^1*^1*^1**1**1**2^i

/平不不不不不不不不不不不不rciinri不不不不不不不不不不不不不/

intave,t=0;

intcount=0,k,i;

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

t+=s[k];

ave=t/n;

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

f*1*4,4・■[,♦1,*1・、1・、1・、1,•如*1**1*0J*!**1<»»t*»t**f**1*“**1**1**1*/

/*T**T*****T**T**T**T**1*****T**T*****T*|1l»*irl*T**T**T**T**T**T**T**T**T**T**T**T**T**T****/

if(sfil<ave)

count++;

/木木木木木木木木木木木木木found木木木木木木木木木木木木木/

aver=ave,

returncount;

)

main()

(

floatS[30],aver;

intm,i;

clrscr();

printf("\nPleaseenterm:");

scanf(u%dn,&m);

printf(n\nPleaseenter%dmark:\nu,m);

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

scanf("%F,s+i);

printf("\nThenumberofstudents:%d\nM,

fun(S,m,&aver));

printf("AVe=%f\n",aver);

)

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

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

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

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

/I

/***不不不不不不不不不不If>i1fin不平不不不不不不不不不不不不/

intfun(chartf])

(

charc;

inti,j;

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

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

<tUJ)

c=t|jl;

/一1•

1*T、*7.*T**T**7、■[.・].

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

t[i]=c;

}

}

main()

(

chars[81];

clrscr();

printf("\nPleaseenteracharacter

string:n);

gets(s);

printf(u\n\nBeforesorting:\n%Su,s);

fun(s);

printf(n\nAftersortingdecendingly:\n

%sH,s);

)

33.下列给定程序中,函数fun()的功能是:在字符串str中找出ASCII

码值最小的字符,将其放在第一个位置上,并将该字符前的原字符向后

顺序移动。例如,调用fun()函数之前给字符串输入fagAgBDh,调用后

宁符串中的内容为AfaggBDho

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

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

试题程序:

#include<stdio.h>

f<1#、1*、1*、1*■7,7,7,7,7,7,7,7.7.7,7.7.I

/不不不不不不不不不不不不不t()]]nd不不不不不不不不不不不不/

voidfun(charp)

charmin,*q

inti=0;

min=p[i];

while(p[i]!=0)

if(min>pfi])

r_j/

/*p*r不*P*P不不不不不不不不]n][不不不不不不不不不不不不不/

p=q+i;

min=p[i];

i++;

)

while(q>p)

{*q=*(q-l);

q--/

)

p[O]=min;

)

main()

charstr[80];

printf("Enterastring:");

gets(str);

printf(n\nTheoriginalstring:");

puts(str);

fun(str);

printf(n\nThestringaftermoving:");

puts(str);

printf(n\n\n");

)

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

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

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

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

试题程序:

#include<stdio.h>

intfun()

(

inta[3][3],mul;

inti,j;

mu1=1;

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

{

//不不不不不不不不不不不不不mnnni不不不不不不不不不不不不不/i

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

scanf("%d”,&afi][j]);

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

/、1・、],、],、1・、]・、],、],、,■、,・1、!■、!,、!,、!■、!■、!■、!■、!■/

/个个个个个个个小个个个个个T/~\I〔no个个个个个个个个个个个个个/

mul=mul*a[i][j];

printf(nMul=%d\nn,mul);

)

main()

(

fun();

)

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

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

该数列前n项的和sum。n的值通过形参传入。例如,当n=10时,程序

的输出结果应为96.0000000

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

doublefun(intn)

(

doublesum,SO,SI,S2,S;

intk;

sum=1.0;

if(n<=2)

sum=0.0;

s0=0.0;

si=0.0;

s2=1.0;

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

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

S=S0+Sl+s2;

Sum+=s;

S0=sl;

Sl=s2;

r_J*1**1*<1^«£»«£»/

/*p*r不*P*P不不不不不不不不]n][不不不不不不不不不不不不不/

S2=S;

returnsum;

)

main()

(

intn;

clrscr();

printf(MInputN=");

scanf(',%dH,&n);

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

36.下列给定的程序中,函数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>

r_j/

/*p*r不*P*P不不不不不不不不]n][不不不不不不不不不不不不不不/

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

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

strcpy(w,s);

while(*w)

{p=w;r=tl;

/*1*、[■*1**1**1**1**1**1**1^f、],、1,、[•、[•、1**1*、!・、[・、]■、[・/

/个个个个个个个小个个个个个T/~\I〔no个个个个个个个个个个个个个个/

while(r)

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

elsebreak;

if(*r==,\0,)

{a=w;r=t2;

/«1«%1«•!»1*X*«1**2*«1•«)«•£•I

/***不不不不不不不不不不If>i1fin不平不不不不不不不不不不不不/

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

w+=strlen(t2);

elsew++;

)

main()

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

clrscr();

pnntf(M\nPleaseenterstringS:");

scanf(u%s';s);

printf("\nPleaseentersubstringtl:");

scanf("%sH,tl);

printf("\nPleaseentersubstringt2:");

scanf(H%sH,t2);

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

fun(s,tl,t2,w);

pnntf(M\nTheresultis:%s\nM,w);

}

elseprintf(nError:strlen(t2)\nn);

)

37.下列给定程序中,函数fun()的功能是:用冒泡法对6个字符串按由

大到小的顺序进行排序。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#defineMAXLINE20

voidfun(char*pstr[6])

inti,j;

char*p;

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

for(j=i+l;j<6;j++)

/ii

/不不不不不不不不不不不不不rcnnri不不不不不不不不不不不不不/

if(strcmp((pstr+i),(pstr+j))<0)

p=*(pstr+i);

*(pstr+i)=*(pstr+j);

1/

/个个个个个个个小个个个个个T/~\I]n。个个个个个个个个个个个个个/

*(pstr+j)=*p;

)

main()

inti;

char*pstr[6],str[6][MAXLINE];

clrscr();

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

pstr[i]=str[i];

printf('7nEnter6string(lstringateachline):\n");

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

scanf("%sn,pstrlij);

fun(pstr);

printf("Thestringsaftersorting:\nH);

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

printf(n%s\nn,pstr[i]);

)

38.给定程序中函数fun的功能是:从低位开始取出长整型变量S中偶

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

位。

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

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

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

[试题源程序]

#include<stdio.h>

/不*****汴汴汴汴[cun《1不不不不不不不不不不不/

voidfun(longs,longt)

(

longsl=10;

s/=10;

*t=s%10;

/小小小小*b小小小小小小小tci]nd小小小小小不不小小小小小/

while(s<0)

(

s=s/100;

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

sl=sl*10;

)

1

msin()

(

longs,t;

printf(n\nPleaseenters:M);

scanf("%ld",&s);

fun(s,&t);

printf(HTheresultis:%ld\nH,t);

}

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

并作为函数值返回。

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

X.1121231234

23353573579

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

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

•include<math.h>

2tinclude<std£o.h>

3doublefun(doubleeps)

4{doubles,t;intn-1;

5s-0.0;

6…*found…*

7t-0;

8while(t>eps)

9{

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

11n++;

12

13****found****

14return(s);

15

16main()

17(doublex;

18printf("XnPleaseentera

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

19printf("\neps»%lfr

x,fun(x));

20

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

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

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

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

intfun(intm)

{intk=2;

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

*

/I*X•1*•卜/

/个个个个个个个个个个个个个miinn个个个个个个个个个个个个个个个个个个个个个/

k++

/*1«「j»f«*1*\»/

/*T**T**T**T**T**T**T**T**T**T**T**T**T*'r/-Xl个个个个个个个个个个个个个个个个个个个个个/

if(m=k)

return1;

elsereturnO;

main()

{ihtn;

clrscr();

printf("\nPleaseentern:");

scanf(H%dM,&n);

if(fun(n))printf(,,YES\nH);

elseprintf("NO!\nH);

}

五、程序改错题(2题)

41.下列给定程序中,函数proc()的作用是:将字符串str中的大写字

母都改为对应的小写字母,其他字符不变。例如,若输入“abD,dFAD”,

则输出“abd,dfad"。请修改函数proc()中的错误,使它能得出正确

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

改程序的结构。试题程序:

umcludcb>

MincludeV.uHihb>

9include<sthn*.h>

9includeVEKO.h>

char•procfchAT»ir>

mtli

//••••found••••

水('A'<-zr{1]|'Z,))

•HD+72,)

rrturn(»tr)i

▼endmaint)

|

char*tr[Sl]i

*y»tc«n("ClJ?")।

printh'\nP1eaj*enter■Mnn*i")i

pcintf(*\nThemult川riMU.\nK»\Ra«proc

42.下列给定程序中,函数proc()的功能是:根据形参m(2gmW9)的值,

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

例如,护・人3•剜t3

24C

3i9

后・人5・0・楸12I4S

246•10

S«912IS

48121620

510IS2023

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

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

构。

试题程序:

sinclude<com<x,h>

EincludeVsidlibuh>

Hinclude<stdio.b>

SdrftiwN10

mi«rr[N][N]-<0h

//••••(QMMI•••♦

proc<mt••mim)

(Milj・lu

Iortj-0ii<«iij4'♦)

for<k*0ih<tBik">♦)

//••••found••••

•bd-k・卜

vodmaia()

mti.j«n»

"CIS")।

pnntf(aEntern\na>a

«c.n""♦&n)i

prcrKarr.n)i

ioKi=0iKmi4-+)

(

for(j»Oif<nij+♦)

ptmtf。%4d*,arf(CD]>i

pnmf(a\n>>«

六、操作题(2题)

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

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

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

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

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

试题程序;

#include<stdio.h>

#include<strzng.h>

#include<conio.h>

(^1*^1*vl**1**1*、1*、上1♦!,d!,7,7,7,7,7,7,■!,♦!,7,7,7,7./

/不不不不不不不不不小不小不小*P*r*rt()l1n(l不不不不不不不不不不不不不不不/

voidfun(chars[J,intn)

chara[8OJ,*p;

inti;

/«x**1««f«•1«•1«•1«*14•1«*(••(».,*«*1**£««*1««f**!*/

/小小小小小小小小小小小小小个个个不rm】nn个个个个个个个个个个

S=p;

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

do

{a[i]=*p;

f*1^*1^I

f"T"千"*""T""T""T""Tw*4•*4•**--T--T--T--T"”一千千jZ~S11Z-1-*••»••*•-T--T--T--T--T--T--T--T--*--T--T-/

i++;

}while(*p);

a[i]=0;

strcpy(s,a);

)

main()

{intn;chars[80];

clrscr();

printf(H\nEnterastring:n);gets(s);

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

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

fun(s,n);

printf(M\nThestringafterinster:\%s\nn,s);

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

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

^=(^+—)/2

%

例如,2的平方根为1.414214。

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

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

试题程序:

#include<math,h>

#include<stdio.h>

r*1“・/

小小小小小小小小小小小小tm]nd不不不小不***不不不不不不不不/

fun(doublca,doublexO)

{doublexl,y;

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

f7*7*7*7*7*7*7*7*7*£17*7*7*7*7*7*7*7**1*7*7*7*7*7*/

/不不不不不不不不不不不不不I()11Hf1不不不不不不不不不不不不不/

if(fabs(xl-xO)>0.00001)

y=fun(a,xl);

elsey=xl;

returny;

)

main()

{doublex;

printfC'Enterx:“);scanfT%lf",&x);

printf(nThesquarerootof%lfis%1f\n",

x,fun(xJ.O));

参考答案

1.1515解析:在函数f()中只有一条if语句,如果n不小于1,则返回

f(a,n-l)+a[n-l);,否则返回0。所以f(aa,5)返回f(aa,4)+aa[4],而f(aa,4)

返回f(aa,3)+aa[3]……直到f(aa,O)返回0.故f(aa,5)实际返回值是

0+aa[1]+aa[2]+aa[3]+aal4]+aa[5],所以本题最终输出15。

2.*pk=a[i]*pk=a[i]解析通过参数传递,findmax函数接收到4个参数,

分别是数组a(需要对其中的数据按照题目的要求进行计算)、10(数组a

中的元素个数)、0(数组a的起始位置)、指针变量n(对数组a中的元素

进行遍历)。我们了解了这些参数的作用后,再对递归调用的函数进行分

析,就不难得出结论了。注意:通过对本例中递归函数的分析掌握递归

算法的执行原理。

3.3131解析:设队列容量为m,如果:rear〉front,则队列中元素个数

为rear-front;如果rear<front,则队列中元素个数为m+(rear-front)0本

题rear<front,贝ljm=32+(2-3)=31o

4.

本题要求将一个for循环改成while循环。首先要保证循环条件相同,

在for循环中,每次执行循环之后,循环控制变量k都会加1,而

while循环则没有,故需在循环体中增加改变k数值的语句“k++”。

\r\n

\r\n

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

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

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

6.2525解析:#NAME?

7.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指

向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针

指向str[3],*(p+3)指的是字符“D",输出时是以“%d,格式输出的,即输

出其相应ASCII码值68。

8.66解析:本题考察的是一个嵌套的循环,当满足j〈二i时,输出一个

“#"号,符合条件的有i=2,j=2;i=3j=2;i=3,j=3;i=4,j=2;i=4,j=3;i=4,j=4,共

输出6个

9.11解析:在执行逻辑表达式卞!ch&&i++”时,首先判断j=!ch的值,

因为“ch=$”不为0,所以“j=!ch=0",编译系统便不再计算表达式“i++”

的值,i的值不变,仍为1。

10.1020010200解析:本题考查的是混合运算。“(a/b<1)&&(a%b<If

的运算顺序为:括号〉算术运算符>关系运算符》逻辑运算符。其中

a%b=10,a,b=0,所以a%b<l的值为0,a/b〈l的值为1,故整个表

达式的结果为0,所以输出的a,b,c的值为10200。

ll.C

12.C

13.CC.【解析】线性表是一种线性结构,由n(nK))个元素组成,所以线

性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结

点没有后件,其他结点有且只有一个前件和后件,所以选项C.是错误

的。

14.A

15.D

\n首先计算1与2的或运算,再将其结果与3进行“与”运算,结果为

00000011,即十进制数3。

\n

I6.C题干中,循环的作用是将输入的字符串转化为大写,getchar函数

读入一个字符,putchar函数输出一个字符,当遇到#字符结束。

“putcha(++C『,表示将字符变量c加1后输出。当输入-BcDefG##"时,

得到的结果是BCDEFGHO故本题答案为C选项。

17.D

18.C

19.C

本题考查文件的操作,首先打开文件,进行写操作,把“abc”写入

“myfile”文件,再打开“myfile.data”文件,输入28,在键盘上接收字

符,输出并关闭文件。本题结果为abc28。

20.A

21.

voidfun(STREC*a)

inti:

a_*>ave=0.0:

fbr(i=O:i<N:i++)a—,ave=a—>ave+•一>s[i]:/*求各门成绩的总和}

/

a->ave/=N;/}求平均分*/)

【考点分析】

本题考查:结构体类型成员运算,指向结构体类型的指针变量作函数

参数。

【解题思路】

本题考查自定义形参的相关知识点,程序流程是这样的:在如n()函数

中求出平均分后,返回到主函数时平均分也要带回,所以只能定义一

个指针类型的形参STRECa,此时,引用成员的方式可以使用指向运

算符,即a—〉ave和a—当然也可用(*a),ave和(*2).S[i]o

22.

voidproc(ch«r•ncr.char

mi(•jaO»k9tMrl»n(a<r>«字村卑仲怅皮

的量■

〃总下际为务数的数收到ttt

心]-、0\■字样率.因R0I■用\。作

*除拿“金

【解析】题目要求将下标为偶数的字符删除,其余字符放在新的字符

数组t中。首先取出字符串str中下标为奇数的字符,将其赋值给新的

字符串t,最后用‘\0'作为字符串结束的标志。

23.intfun(inta[J,intn)

(

inti,j=l;

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

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

/*若该元素与前一个元素不相同,则保留*/

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

returnj;/*返回I不相同元素的个数*/

}

该程序的流程:定义变量i和j,其中j

温馨提示

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

评论

0/150

提交评论