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

下载本文档

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

文档简介

2022年广东省茂名市全国计算机等级考试

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

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

一、2.填空题(10题)

1.以下程序的功能是建立一个带有头结点的单向链表,链表结点中的数

据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域

不放数据,表空的条件是ph>next==NULL),请填空。

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");

scanf("%d",&a);

while(a!=-l)

{p=(structlist*)malloc(sizeof(structlist));

[]=a;q->next=p;[]=p;scanf("%d",&a);}

p->next=,\O;retum(ph);}

main()

{structlist*head;head=creatlist();}

2.若输入Ihaveatest.#,则以下程序的运行结果为【】。

#include<stdio.h>

main()

{FILE*fp;

charstr[l00],filename[10];

inti=0;

if((fp=fbpen("test","w"))=NULL)

{printf("cannotopenthefile!\n");

exit(O);

}

getchar();

gets(str);

while(str[i]!-#')

{if(str[i]>-a'&&str[i]<-z')

str[i]=str[i]-32;

fputc(str[i],fp);

i++;

}

fclose(fp);

fp=fbpen("test","r");

fgets(str,strlen(str)+l,fp);

pr血f("%s\n",str);

fclose(fp);

}

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

main()

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

fbr(i=9;i<=ll;i++)

switch(i/10)

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

case1:n++;break;

default:k++;n++;

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

4.C语言中用表示逻辑值为“真”,用数字“0”表示逻辑值为“假

5.以下程序运行后的输出结果是o

#inClude<strinq.h>

char*ss(char*s)

{char*p;t;

p=S+l;t=*s;

while(*p){*(p-1)=*p;p++;}

*(p-l)=t;

returns;

)

main()

{char*p,str[10]="abcdefgh";

p=ss(str);

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

}

6.执行下面程序后,输出结果是【

main()

{chars[12]="verygood!";

printf("%d",strlen(s));

)

7.在面向对象方法中,类的实例称为。

8.若有以下程序

main()

{inta[4][4]={{1,2;-3,-4},{0,-12,-13,14},{21,23,0,-24},{-31,32,-33;0));

inti,j,s=0;

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

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

if(a[i][j]<0)continue;

if(a[i][j]==O)break;

s+=afi皿;

)

printf(n%d\nn,s);

执行后输出结果是o

9.若有下列定义和语句:

char*sl="12345",*s2="1234";

printf("%d\n",strlen(strcpy(sl,s2)));

则输出结果为o

10.在一个容量为25的循环队列中,若头指针fix)nt=16,尾指针rear=9,

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

二、单选题(10题)

11.

(9)关系衣中的每一行记录称为一个().

A)字段B)元组C)属性D)关键码

12.设有定义的语句:“charcl=92,c2=92;”,则以下表达式中的值为

零的是()。

A.clAc2B.cl&c2C.~c2D.cl|c2

13.执行下面程序中的输出语句后,输出结果是0。

#include<stdio.h>

voidmain0

{inta;

grintfC,(a=3*5,a*4,a+5));

)

A.65B.20C.15D.10

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

main

{inti=l,j=2,k=3;

if(i++==l&&(++j==3==||k++==

3))

printf("%d%d%d\n",i,j,k);

)

A.l23B.234C.223D.233

15.

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

A)调用printR)函数时,必须要有输出项

B)使用putchar。函数时,必须在之前包含头文件stdio.h

C)在C语言中,整数可以以二进制、八进制或十六进制的形式输出

D)调节gctchar()函数读入字符时,可以从键盆上输入字符所对应的ASCH码

16.有以下程序:main(){chars[]="ABCD",*p;for(p=s+l;p<s+4;p++)

printf("%s\n",p);}程序运行后的输出结果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

17.以下叙述中正确的是0。

A.C语言的源程序不必通过编译就可以直接运行

B.C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C.C源程序经编译形成的二进制代码可以直接运行

D.C语言中的函数不可以单独进行编译

18.以下不正确的叙述是()。

A.在C程序中,逗号运算符的优先级最低

B.在C程序中,APH和aph是两个不同的变量

C.若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,

而b中的值不变

D.当从键盘输入数据时,对整型变量只能输入整型数值,对实型变量只能

输入实型数值

19.给定下列代码:已知n是一个整数:foo()时间复杂度为0(1),上述

代码的时间复杂度是0

for(inti=l;I<n;i*=3)

for(intj=i/3;j<i;j++)

Foo();

}

)

A.O(logn)B.O(n)C.O(n*log(n))D.O(log(n)A2)

20.有以下程序:

#include<stdio.h>

voidsub(doublea,double*pb);

intmain()

{doublex,y;

scanff<%lf%lf,,&x,&y);

sub(x,&y);

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

)

voidsub(doublea,double*pb)

{a=a-*pb;

*pb=*pb-a;

)

程序运行时输入10.23.5并按<£田6「>键,则输出结果为()。

A.x=10.200000y=-3.200000

B.x=6.700000y=-13.700000

C.x=7.000000y=-3.500000

D.x=13.400000y=-7.000000

三、程序设计题(10题)

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

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

fun(),其功能是统计s所指字符串中的数字字符个数,并将其作为函

数值返回。例如,s所指字符串中的内容是

2def35adh253kjsdf7/kj8655x,函数fun()返回值为11注意:部分源程序在

文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在

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

1iinclude<stdio.h>

2voidNONO();

3intfun(char*s)

4/(

5

6}

7main()

{char*s=M2def35adh253kjsdf

7/kj8655x";

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

10printf("%dXn*',fun(s));

11NONO();

12)

13voidNONO()

14(/♦本函数用于打开文件、输入数据、调

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

15FILE*fp,*wf;

16inti;

17chars[256];

18fp=fopen("in.dat","r1');

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

20for(i-0;i<10;i++){

21fgets(s,255,fp);

fprintf(wf,M%d\nMfun(s));

■r

24fclose(fp);

■25)fclose(wf);

22.请编写函数voidproc(intx,intpp[],int*n),它的功能是:求出能

整除x且不是偶数、不为1的各整数,并按从大到小的顺序放在PP所

指的数组中,这些除数的个数通过形参n返回。

例如,若x的值为30,则有3个数符合要求,它们是15,5,3o

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

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

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

试题程序:

<mrludeVcomo.h>

.tmrludr<widio.h>

fmdude<»tdhk.h>

midpn>r<rnf>•mimt•n)

Eidmain()

mia*«rv(IOOO]•ii

»y»tcm(sCLSw)•

antfitrgefnumber(\n*)।

•can1(.%4"・&*)i

p<roc<K»Atv«&n>i

(or(l・9一1i>,0iI——)

|>nnt((*Sd*•arr£i]^

print!(*\n")।

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

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

fun(),其功能是将形参s所指字符串放入形参a所指的字符数组中,

使a中存放同样的字符串。说明:不得使用系统提供的字符串函数。

注意:部分源程序存放在文件progl.c中,请勿改动主函数main()和其他

函数中的任何内容,仅在函数fun()指定的部位填入所编写的若干语

句。试题程序:

jl[include<stdio.h>

2#defineN20

3voidNONO();

4voidfun(char*a,char♦s)

5{

6

鬟}

8main()

9{charsl[N],*s2="abcdefghijk";

10fun(si,s2);

11printf(•'%s\n",si);

12printf("%s\n",s2);

13NONO();

M}

15voidNONO()

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

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

17FILE*fp,*wf;

18inti;

19charsl(256]fs2[256];

MwMM

fp=fopen(in.datrr);

21wf-fopen(nout.daf1,Mww);

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

23fgets(s2f255,fp);

24fun(si,s2);

25fprintf(wf,n%s”,si);

■}

27fclose(fp);

28fclose(wf);

K)

24.

编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串

中出现的次数。例如,假定输入的字符串为abcdefabcdeabceabcdef,子

字符串为cd,则应当输出3。注意:部分源程序给出如下。请勿改动

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

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

8mcludehJ>

#MiclwdrVcoato.

*IBcIttd*<BtdKKk>

9iarlwdrV,icng.

atpmiclmr•Mftchar•sobirtrI

*oidMMIH>

cliav)}•

MMfll

•yulMnl*ClJBT)t

e)i

g#(»(B(F)I

pnMf<attAfV,

*<t.(•i«bstr)e

pwts(»ub»tr>«

■-prac<Mr.MiiMr>s

prauR'■=KW\B*•■)!

25.

请编写函数proc(),它的功能是计算:s=(1-ln(1)-In⑵-In(3)

-...-In(m))2s作为函数值返回。在C语言中可调用log(n)函数求

In(n)olog函数的引用说明是doublelog(doublex)o例如,若m的

值为10,则proc()函数值为198.934454O注意:部分源程序给出如

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

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

&itfeHudeVMidhkb>

sindudeVcooio.h>

tinclutl*VNidux.h>

,indude<math.h>

dmibkproHmim)

void)

»y«tean(•CLS*)i

pnfiih*%f\ne»ptoc(IO)>i

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

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

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

23・

S=]+X+工+<+…+"

2!3!n!例如,当n=10,x=0.3时,函数值为

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

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

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

1iinclude<conio・h>

2tinclude<stdio.h>

3linclude<math.h>

4linclude<stdlib・h>

5doublefun(doublex,intn)

饕{

7

8}

9voidmain()

10{

11FILE*wf;

12system("CLS");

13printf(r,%ffun(0.3,10));

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

15wf-fopen("out.daf\MwH);

16fprintf(wf,”,fun(0.3,10));

17fclose(wf);

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

施)

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

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

其功能是将M行N列的二维数组中的数据,按列的顺序依次存放到一

维数组中,将一维数组中数据的个数存放在形参n所指的存储单元中。

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

33333333

44444444

55555555

则一维数组中的内容应是

33445533445533445533

4455

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

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

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

试题程序:

#include<stdio.h>

voidfun(int(*s)[10],int*b,int*n,intmm,intnn)

main()

(

intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;

inta[100]={0},n=0;

printfC'Thematrix:\n");

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

(

for(j=O;j<4;j++)

printf(“%3d”,w[i皿);

printf("\n”);

)

fun(w,a,&n,3,4);

printff'TheAarray:\n^^);

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

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

28.请编写函数proc(),其功能是:利用以下所示的简单迭代方法求方

程cos(x)-x=0的一"1K实根。

xn+l=COS(xn)

迭代步骤如下:

⑴取xl初始值为。0;

(2)x0=xl,把?XI的值赋给x0;

(3)xl=cos(xO),求出一个新的xl;

(4)若xO-xl的绝对值小于0.000001,则执行步骤

(5),否则执行步骤(2);

(5)所求xl就是方程cos(x)-x=0的一个实根,作为函数值返回。

程序将输出结果root=0.739085c

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

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

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

试题程序:

£rnciudc<como<

£include<matKh>

9includeV篡tdao.!C>

HMIprocC)

floaiK)*0.0«SOI

do

>0,献I

whde(UIM<WO-K!>>le~S)।

rmintM!,

vo«dmaixi<)

I1(M1f-procC>i

priarf(*root•%f\n*•

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

例如,字符串中原有的字符串为asdf9,则调用该函数后,串中的内容为

9fdsao

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

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

试题程序:

#include<string.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidfun(char*str)

)

voidmain

(

chara[N];

FILE*out:

printf("Enterastring:");

gets(a);

printf("Theorigiralstringis:");

puts(a);

fun(a):

printff'Thestringaftermodified:");

puts(a);

strcpy(a,"Welcome!");

fon(a);

ut=fopen("outfile.dat","w");

fprintf(out,"%s".a);

fclose(out);

30.请编写函数proc,其功能是:将str所指字符串中除下标为偶数、同

时ASCH码值为奇数的字符外,其余的字符都删除,串中剩余字符所形

成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为

ABCDEFG12345,其中字符B的ASCII码值为偶数,所在元素的下标为

奇数,因此必须删除;而字符A的ASCII码值为奇数,所在数组中的下

标为偶数,因此不应当删除。依此类推,最后t所指的数组中的内容应

是ACEG°

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

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

中填人所写的若干语句。

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidproc(char*str,chart[])

(

}

voidmain

(

charstr[100],t[100];

system("CLS");

printf("\nPleaseenterstringstr:");

scanf("%S",str);

proc(str,t);

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

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

31.下列给定程序中,函数ftm()的功能是;求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>

/********不***不*f^)und***不***********I

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

}

32.给定程序MOD11.C中函数fun的功能是:读入一个字符串(长度<

20),将该字符串中的所有字符按ASCII码升序排序后输出。

例如,若输入:edcba,则应输出:abcdeo

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

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

1finclude<stdio.h>

2tinclude<string.h>

3voidfun(chart[])

4(

5charc;

6inti,j;

7/•♦♦♦♦♦****found**♦♦******♦/

8for(i«strlen(t);i;i--)

9for(j»0;j<i;j++)

10/**********found***********/

11if(t[j)<t[j+1))

12(

13c-t(j];

14t(j)-t[j♦11;

15t[j*1]-c;

16

17

18main()

19(

20chars[81];

21printf(w\nPleaseenteracharacter

string:°);

22gets(s);

23printf("\n\nBeforesorting:\n

\“%s\"”,s);

24fun(s);

25printf("\nAftersortingdecendingly:

\ns);

26}

33.给定程序MODH.C中ftm函数的功能是:根据整型形参m,计算

如下公式的值。

23m

例如,若主函数中输入5,则应输出-0.283333。

请改正函数firn中的错误或在横线处填上适当的内容并把横线删除,使

它能计算出正确的结果。

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

1Jfinclude<stdio.h>

2idoublefun(intm)

3J(

4!doublet=1.0;

5iinti;

6for(i«2;i<wm;i++)

7…m*found……*…

8t1.0-1/i;

9♦♦♦♦♦♦ww**founcj**********

10i-------

11!)

12;main()

13:{

14!intm;

15iprintf(H\nPleaseenter1integer

iw

inumbers:\n);

16!scanf(H%dn&m);

ir

ww

17iprintf(\n\nTheresultis%lf\nr

fun(m));

18!)

34.下列给定程序中,函数ftm()的功能是:从字符串s中,删除所有小

写字母

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

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

试题程序:

#include<stdio.h>

voidfun(char*s)

{inti,j;

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

if(sill!='c')

s[j]=s[i];

/**************d*************j

s[i]='\O';

}

main()

{chars[80];

printf("\nEnterastring:");

gets(s);

printf("Theoriginalstring:")

puts(s);

fun(s);

printf("Thestringafterdeleted:");

puts(s);printf("\n\n"):

35.下列给定程序中,函数fim()的功能是:计算

S=f(-n)+f(-n+1)+...+★0)+可1)+*2)+...f(n)的值。

例如,当n为5时,函数值应为10.407143of(x)函数定义如下:

r(x+iy(x-2)xX)

f(x)0或x=2

L(x-iy(x-2)x<0

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<math,h>

/**************^^)und***************I

f(doublex)

if(x==0.0||x==2.0)

return0.0;

elseif(x<0.0)

return(x-1)/(x-2);

else

return(x+1)/(x-2);

doublefun(intn)

{

inti;doubles=0.0,y;

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

{y=f(1.0*i);s+=y;}

/**************d**************j

returns

}

main()

{clrscr();

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

36.下列给定程序中,函数ftm()的功能是::求k!(k<13),所有阶乘的

值作为函数值返回。例如:若k=10,则应输出3628800。

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

注意:不要改动main函数,不得增行或删行,也不得更

改程序的结构。

试题程序:

#include<conio.h>

#include<stdio.h>

longfiin(intk)

/*************nd**************/

ifk>0

return(k*fun(k-1));

/*************nd**************/

elseif(k=0)

return1;

main()

{intk=10;

clrscr();

print,("%d!=%ld\n",k,fun(k));

37.给定程序MOD11.C中函数ftin的功能是:应用递归算法求形参a

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

xl=;(xO+为

例如,a为2时,平方根值为:1.414214O

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

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

1(include<stdio.h>

2finclude<math.h>

3/♦*♦*♦**♦♦*found**********/

doublefun(doublea,dounlexO)

{doublexl,y;

6xl»(x0>a/xO)/2.0;

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

8if(fabs(xl-xo)>0.00001)

9y«fun(a,xl);

10elsey-xl;

11returny;

12)

13main()

14{doublex;

15printf("Enterx:*);scanf

w

(-%lfr&x);

16printf(RThesquarerootof%lf

w

is%lf\nrxrfun(x,1.0));

17

38.给定程序中函数fun的功能是:将一个由八进制数字字符组成的字

符串转换为与其值相等的十进制整数。规定输入的字符串最多只能包含

5位八进制数字字符。

例如,若输入:77777,则输出将是:32767。

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

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

[试题源程序]

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

intfun(char*p)

intn;

/********************!

n=*p-'o';

p++;

while(*p!=0){

/********************/

n=n*8+*p-'o';

p++;

returnn;

main()

chars[6];inti;intn;

printf("Enterastring(Ocataldigits):");

gets(s);

if(strlen(s)>5)

printf("Error:Stringtoolonger!\n\n");

exit(O);

fbr(i=0;s[i];i++)

if(s[i]<'0'||s[i]>,7')

printf("Error:%cnotisocataldigits!\n\n",s[i]);

exit(O);

}

printf("Theoriginalstring:");

puts(s);

n=fun(s);

printf("\n%siSconveredtointegernumber:%d\n\n",s,n);

I

s

39.下列给定程序中,函数fim()的功能是:统计字符串substr在字符串

srt中出现的次数。例如,若字符串为aaas1kaaas,子字符串为as,则

应输出20

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

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

试题程序:

#include<stdio.h>

fun(char*str,char*substr)

{inti,j,k,num=0;

/***************************/

for(i=0,str[i],i++)

fbr(j=i,k=0;substr[k]=str[j];k++,j++)

if(substr[k+l]=-\0')

{num++;

break;

returnnum;

}

main()

{charstr[80],substr[80];

printf("Inputastring:");

gets(str);

printf("Inputasbustring:");

gets(substr);

printf("%d\n",fiin(str,substr));

40.以下程序可把输入的十进制数以十六进制数的形式输出。

请在横线上填上适当的内容并把横线删除,使它能得出正确的结果。

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

试题程序;

main()

(

charb[17]={"0123456789ABCDEF"};

intc[64],d,i=0,base=16;

longn;

printff'Enteranumber:\n");

scanf("%ld",&n);

do{

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

c[i]=;i++;n=n/base;}

while(n!=0);

printf("Transmitenewbase:\n");

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

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

nn

{d=c[i];printf(%c9b);}

printsn\nn);

}

五、程序改错题(2题)

41.下列给定程序中,函数proc()的功能是:对M名学生的学习成绩,

按从低到高的顺序找出前m(mWO)名学生来,并将这些学生数据存放

在一个动态分配的连续存储区中,此存储区的首地址作为函数值返

回。

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

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

构。

试题程序:

UincludeHL>

3include<como.h>

Hmcludr<strigh>

■mdudc<Mdio.h>

0ckfiaeM10

fypedel•tmct«•

(

char»mn[lO]i

UuHI

I

STVi

STU•proc<STU«(]•inim)

STUHM】・・“

iati.j.ki

//••••found••••

•I*rallocCm<MM<O«STU))t

bCi]-4Oi

for(k*Oik<mik<^+>

<

//••••found••••

for-♦->

YbCl].•)

//••••louftd••••

bGl»*iooi

1

mumu

I

Iouguh(STU«[]・F1LE•pf>

(

mtii

fortifyMi-♦)

fprmikpl.*No*S»Mirk-*%d\n*•

•GIflam*Hl1•>!

fpriatKpf.r\n\i»e>i

»

«wdnwiiB()

I

STUMI>(MJ-(<-AOI••77K(wA02%g5|.

*A04"AOS\75l.

CA<M・AO7・・76)J-A0«-.UI.

CAM%WI.<eAIO••78H.

STU•p<)nkn

MHi«mt

■EKLS"

pniH,(・・•••THERESULT,••«\a*)i

<xitre>ult(»1«(atdowi)g

linndCXnGivrthenianbefo(ihrMudeats

whohavelowvrKorvt*>a

•cAid(eXda«&m)i

wKile<m>10)

(

|>nnd<9\nGiwthenumberofIhr

•i&E.whohavelowvrMorvs"h

tcuf<•%4•・&m)i

|4>r<kr-proc<MU.OB)i

pr«tf<•••••THERESULT-••八、”

a

pnntf<*Thelow3\n>i

lor(i-0.yniii*♦)

prmt(<*K»KdXn^tpOrderfij.ntim*

p4)rtkr{tX•).

(rrc<pOr4rr>i

42.

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

然后求两条对角线上的各元素之和并将其返回。请修改程序中的错误,

使它能得出正确的结果。注意:不要改动main()函数,不得增行或

删行,也不得更改程序的结构。试题程序:

#inclod*<.ntdhlkh>

SincludeVcoftdh>

9includeV»uho.h>

*defineM5

ff♦•♦♦ioufMi••••

mtprocCmi1WJ(])

H*Il»j.

pri»H(*\»TWB%dM)।

for(i-Oiy

,

locCj-+)

//•••■found••••

pcimK•%4「♦H।

pnntf(<\ns)(

oii++)

■urn,-nxLiJCij*i-l]i

r*tum(»utn);

voidfimin()

tat

S«2.0U)9H.0.5.7*3|.Ua.|t94>h

*CLS*>।

prm<f(w\nThew<WailtkmmtBon2

»%*.・eroc(M.arr))8

六、操作题(2题)

43.以下程序运行后的输出结果是【】。(注:如果结果中含有回车,可

加一空格写在一行,例如:

111

111

111

可以写成:11111111lo

#include<stdio.h>

mala()

{inti,j,a[][3]={l,2,3,4,5,6,7,8,9};

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

fbr(j=i+l;j<3;j++)a[j][i]=0;

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

{forG=O;j<3;j++)printf("%d",a[i][j]);

printf("\n");

}

}

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

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

能是在形参s所指宇符串中寻找与参数c相同的字符,并在其后插入一

个与之相同的字符,若找不到相同的字符则不做任何处理。

例如,若s所指字符串为"baacda",c中的字符为a,执行后s所指字

符串为"baaaacdaa”。

请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正

确的结果。

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

不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

voidfun(char*s,charc)

{inti,j,n;

I*********found*********/

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

if(s[i]==c)

(

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

n=【2】;

while(s[i+l+n]!='\0')

n++;

for(j=i+n+1;j>i;j—)

s[j+l]=s|j];

/******************/

S[j+1]=[3];

i=i+l;

)

)

main()

{chars[80]=,,baacda\c;

printf("\nThestring:%s\n'Vs);

printf(M\nlnputacharacter:9,);

scanf("%c",&c);

fun(s,c);

printf(n\nTheresultis:%s\n”,s);

参考答案

l.p->dataqp->data,q解析:本题考查的是链表这一数据结构对结构体

变量中数据的引用。链表的特点是结构体变量中有两个域,一个是数据,

另一个是指向该结构体变量类型的指针,用以指明链表的下一个结点。

2.1HAVEATEST.

3.130130解析:本题主函数中用了一个fbr循环,循环了3次:当i=9

时,i/10=0,执行switch语句中caseO分支,m和n的值各增1,变为1

和1,然后遇到break语句,退出switch语句;当i=10和11时,i/10都

等于1,执行switch语句中的easel分支,两次使n增1,变为3,退出

switch语句。故该空格处应该填130。

4.非0非0解析:逻辑运算中,非0表示逻辑“真”,用。表示逻辑“假”。

5.bcdefghabcdefgha解析:在本题定义的ss()函数中首先定义了一个指

针P和一个字符变量t,然后让p指向参数指针s的下一个位置s+1,并

让t保存S位置的字符.然后使用一个while循环将p指向的内容赋给

它前面一个位置,即将参数s所指的字符串从第2个字符开始整体往前

移动一位。循环结束时,p指向原s串的结束标志处,所以让*(p-l)=t;

即是将原s串的第1个字符复制到s串的最后一个位置。整个函数实现

的是让一个字符串循环左移一位。故主函数中最后输出的字符串是

'bcdefgha'o

6.1010解析:strlen(s)函数的返回值为字符串s包含的字符个数〈不计

最后的\\0)。

7.对象对象解析:类描述的是具有相似性质的一组对象。例如,每本具

体的书是一个对象,而这些具体的书都有共同的性质,它们都属于更一

般的概念“书”这一类对象。一个具体对象称为类的实例。

8.5858解析:本题中处理二维数组元素用了两重循环,外循环变量i表

示数组的行,内层循环变量j表示数组的列。在第二重循环中首先判断

数组元素的值是否小于0,若是则处理该行的下一个元素:若不是则判

断田的值是否等于0,若等于。则退出内层循环开始处理下一

行;其他情况下,把的值加到变量s中。所以本程序段的功能是

把每行值为0的元素前面的所有大于。的元素值加到变量s中。

9.44解析:strcpy(sl,s2)函数的作用是将字符串s2中的内容拷贝到字符

串si中的内容覆盖。strlen()函数是求字符串的长度。本题实际上是要求

s2字符串的长度,即是4°

10.1818解析:设循环队列的容量为n。若rear>fix)nt,则循环队列中的

元素个数为rear-front;若rear<front,则循环队列中的元素个数为

n+(rear-front)o题中,frontal6,rear=9,rear<front,所以,循环队列

中的元素个数为m+(rear-front)=25+(9-16)=18o

11.B

12.A

当值相同时按位异或,则为0,按位或与按位与时仍不变,负数也为非

0o

13.B

14.D

本题考梦自增运算符,,++,,、逻辑与运算符“&&”和逻辑或运算符“II”。

自增运算符“++”出现在变量之前,表示先使用变量的值加1,再使用变

量的值进行运算;出现在变量之后,表示先使用变量的值进行运算,

再使用变量的值加lo当逻辑与运算符“&&”两边的运算对象都为真

时.,逻辑表达式的值才为真;当逻辑或运算符“II”只要一个值为1,值

就为1。根据运算符的优先级,题中应先计算内层括号中的值。++j是

先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即

表达式的值为1;1与任何数都为进行或(||)运算,结果都为1,因此

k=3的表达式i++是先运算后自加,因此运算时i为1,所以i++=l成

立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分

别是2,3,3o

15.B

16.D解析:本题中首先定义一个字符数组s,并将字符串ABCD存到数

组s中,定义了一个字符指针变量p,在接下来for循环中,循环体共执

行了三次,第一次P指向s[l],所以此时输出的p所指字符串的值为

BCD,第二次循环p指向s[2],此时输出p所指的字符串的值为CD,

第三次循环P指向s[3],此时输出的p所指的字符串的值为D。所以,

4个选项中选项D符合题意。

17.B解析:本题考核的知识点是C程序从编写到生成可执行文件的步

骤。C语言采用编译方式将源程序转换为二进制的目标代码,编写好一

个C程序到完成运行一般经过以下几个步骤:编辑;编译,就是将已经

编辑好的源程序翻译成二进制的目标代码,经编译后的得到的二进制代

码还不能直接执行,因为每一个模块往往是单独编译的,必须把经过编

译的各个模块的目标代码与系统提供的标准模块连接后才能运行;连接,

将各模块的二进制目标代码与系统标准模块经连接处理后,得到具有绝

对地址的可执行文件,它是计算机能直接执行的文件;执行,执行一个

经过编译和连接的可执行的目标文件。由以上定义可知,选项A、C、

D均不正确。所以,4个选项中选项B符合题意。

18.D

19.B

2O.Asub函数接收两个参数:double类型变量a,double指针变量pb0

首先将a与pb指向的变量值相减,结果存放在a中;然后再将pb指向

的变量值与a的新值相减,结果存放在pb指向的内存空间中。sub函数

不会修改实参x的值,但会修改实参y的值。当输入10.23.5时,实参

x的值为10.2,y的值为3.5,执行sub函数后,x的值不变,y的值变

成32。故本题答案为A选项。

21.intfun(char*s)

2;{intn=0;

3char*p;

4:;for(p=s;*p!=,\\0';pJ__+)

if((*p>,o,)&&(<,9,))

6n++;

7returnn;

8}要统计字符串中数字字符的个数,首先应定义变量n,并将其初始化

为0,然后遍历字符串,逐个判断字符是否为数字字符,判断条件为该

元素的ASCII值在字符0和9的ASCII值之间,若判断条件成立,则

使n的值加1,否则,继续判断下一个字符,直到字符串结束。

22.

【解析1按照题目中要求,求出能整除x且不是偶数的各整数。首先

判断小于等于整数x的所有奇数是否能被x整除,将能被x整除的奇

数放入数组pp中。最后将数组pp中元素的个数返回到主函数中。

23.1voidfun(char*a,charts)

2{while(*s!:'o1)

3{*a=*s;4a++;5s++;}7*a=N(y;}要将指针变量s所指的字符串存入指针

变量a所指的字符串中,程序要求不能使用系统提供的字符串函数。

本题可以使用循环语句,依次取出a所指字符串中的元素,将其存入s

所指的字符串中,最后为s所指的字符串添加字符串结束标志

24.

【解析】要计算出主字符串中包含子字符串的个数,应该检查主字符串

中从第一个到最后一个字符。每出现一个计数变量加1,最后将得到的

个数返回给主函数。

25.

【解析】首先我们应定义一个变量来表示其和,另一个来表示其项数,

然后通过循环,求得其差值,最后把和的平方返回到主函数中。

26.1doublefun(doublex,intn)

2{

3inti;

4doubles=1.0,sl=1.0;

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

6{si=si*i;/*各项中的阶乘*/?s=s+pow(x,i)/si;/*按公式求出*/}Returns;10}

程序定义了变量S1和s,si表示每项的分母(即各项的阶乘),S存放累

加和。循环语句控制累加的次数,在循环体中进行阶乘和累加操作,

将累加的结果存入S中。此处使用了求乘方函数pow(X,i),其含义是

求X的i次方的值。

27.voidfun(int(*s)[10],int*b,int*n,intmm,intnn)

(

intij;

for(j=0;j<nn;j++)/*将二维数组中的数据按列的顺序依次存入一维数

组中*/

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

(

b[*n]=*(*(s+i)+j);

*n=*n+l;/*通过指针返回元素个数*/

)

)

题目要求实现将二维数组元素存入一维数组。使用for循环语句来控制

二维数组元素的下标,同时使用指针变量配合操作。

可以用两个循环来处理问题,由于是按列的顺序取出,因此第1个循

环用于控制列下标,第2个循环用于控制行下标。

28.

【解析】本题比较简单

温馨提示

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

评论

0/150

提交评论