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

下载本文档

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

文档简介

2023年辽宁省沈阳市全国计算机等级考试

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

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

一、2.填空题(10题)

1.最简单的交换排序方法是_____O

2.没有chara,b;,若要通过a&b运算屏蔽掉a中的其他位,只保留第2

位和笫8位(右起为第1位),则b的二进制是【】。

3.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方

法提高了软件的【】,

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

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*p=m,*q=m+4;

inti=0;

while(p!=q)

{p->k=++i;p++

q->k=i++;q—;

q->k=i;

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

printf("%d",m[i].k);

ptintf("\nH);

}

5.若给fun函数的形参s传送字符串“UU6354,abc”(其中U表示空格字

符),则函数的返回值是【】。

longfun(charslJ)

{longn;intsign;

for(;isspace(*s);s++);

sign=(*s==,-,)?-l:l;

if(*S==+||*S=二S++;

for(n=0;isdigit(*s);s++)

n=10*n+(*s-'O');

returnsign*n;

)

6.fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的

最大数,再求这N个最大值中的最小的那个数作为函数值返回。请填

空______O

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

introw,col,max,min;

for(row=0;row<N;row++)

fbr(max=a[row][0],col=1;col<N;col++)

if()max=alrowJlcol];

if(row==0)min=max;

elseif()min二max;

returnmin;

)

7.以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一

行放至b所指二维数组的第0列中,把a所指二维数组中的第0行放到

b所指二维数组的最后一列中,b所指二维数组中其他数据不变。

#defineN4

voidrotade(inta[][N],intb[J[N])

{inti,j;

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

{b[i][N-l]=[9];[101:a[N-l][i];}}

8.C语言程序的注释可以出现在程序中的任何地方,一个注释以【】分

别作为开始和结束。

9.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk.p,s[]={l,-9,7.2,-10.3);

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])[]

printf(n%d\n,',k);)

10.若a=l,b=2,则表达式!(x=A)II(y=B)&&0的值是

二、单选题(10题)

11.若有定义“a[]={123,4,5,6,7,8,9,10}”则“a[a[5]『的值是()。

A.2B,4C.3D.10

12.若有定义:

typedefint*(*T[10])[10];

Tb;

则以下选项中所定义的a与上述定义中的b,其类型完全相同的是

()O

A.int*(*a[10][10]);

B.int**a[10][10];

C.int*(a[10])[10];

D.int*(*a[10])[10];

13.有三个关系R、S和T如下:

由关系R和S得到关系T的操作是()。

A.自然连接B.交C.除D.并

14.最小堆[0,3,2,574,6,8],在删除堆顶元素0之后,其结果是0

A.[3,2,5,7,4,6,8]

B.[2,3,5,7,4,6,8]

C.[2,3,4,5,7,8,6]

D.[2,3,4,5,6,7,8]

15.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是

()。

A.p->next=s;s->next=p->next;

B.s->next=p->next;p->next=s;

C.p->next=s;p->next=s->next;

D.p->next=s->next;p->next=s;

16.软件生命周期是指()o

A.软件产品从提出、实现、使用维护到停止使用退役的过程

B.软件从需求分析、设计、实现到测试完成的过程

C.软件的开发过程

D.软件的运行维护过程

17.若有定义:

typedefint*INTEGER;

INTEGERp,*q;

则以下叙述正确的是()。

A.q是基类型为im的指针变量

B.p是int型变量

C.p是基类型为int的指针变量

D.程序中可用INTEGER代替类型名int

18.若某二叉树的前序遍历访问顺序是abdgceC,中序遍历访问顺序是

dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

19.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的

条件是0。

A.(rear+1)MODn=front

B.rear二front

C.rear+l=front

D.(rear-l)MODn=front

20.设a,b,c,d,m和n均为int型变量,且a=5,b=6,c=7,d=

m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为

()

A.0B.1C.2D.3

三、程序设计题(10题)

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

的项目中包含一个源程序文件progl.c。在此程序中,规定输入的字符串

中只包含字母和*号°请编写函数其功能是使字符串的前导*号不得多于

n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做处

理。字符串中间和尾部的*号不删除。

例如,字符串中的内容为“*******A*BC*DEF*G****“,若n的值为

4,删除后,字符串中的内容应当是“****A*BC*DEF*G****";若n

的值为8,则字符串中的内容仍为“*******A*BC*DEF*G****”。n的

值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函

数。

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

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

voidfun(char*a,intn)

(

}

voidmain()

(

chars[81];intn;

printff'Enterastring:\n^^);

gets(s);

printff'Entcrn:");

scanf("%d",&n);

fun(s,n);

printf(t4Thestringafterdeleted:\n^^);

puts(s);

22.编写fun()函数,它的功能是:利用以下所示的简单迭代方法求方程

cos(y)-y=0的一个实根。

yn+l=cos(yn)

迭代步骤如下:

⑴取yl初值为0.0;

(2)y0=yl,把yl的值赋给y0;

(3)yl=cos(yO),求出一个新的yl;

(4)若yO二yl的绝对值小于0.000001,则执行步骤

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

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

程序将输出结果Result=O.739085c

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

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

部分源程序给出如下。

试题程序:

WmdudrVcofMkh>

iinrlude<math.h>

includeVadso.h>

floatfan(>

voidmainC>

FILE・。皿

flcMt).

pntitf(aReMih«>Ml\netco»)i

out-ao«t(ilcd*f*.*w*)i

fpnnt((ovl«aKr.ro«)»

fdo«e(oui)4

23.n个人的成绩存放在score数组中,请编写函数proc(),它的功能是

将低于平均分的人数作为函数值返回,将低于平均分的分数放在down

所指的数组中。例如,当score数组中的数据为{99,80,40,56.59,

84,60,76,100}时,函数返回的人数应该是4.down中的数据应为

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

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

语句。试题程序:

9ineiudv<»t<Uib.h2>

9incitMk<conio.b>

9inrludc<C»td*(K

9include<»trtn«.h>

inipror(MM*coer[j.mi・♦midowtx]>

voidnuiaC)

(

intIen.dowti[9]i

mt»corr(9]—《”・iO・4O.S4・59・S4・

«0.?6.|00||

n»ptoc(M<or«.9.down>i

pnntK*\ndowniotheaveraffcMore・re,")g

k>〃i,0iY4->

pnnrt(*%d..downCi:"

prtntfC-\D*)I

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

符串(每串的长度

不超过N),按顺序合并组成一个新的字符串。

例如,若字符串数组中的M个字符串为:

ABCD

BCDEFG

CDEFGHI

则合并后的字符串内容应该是ABCDBCDEFGCDEFGH1。

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

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#defineM3

#defineN20

voidproc(chararrlM][NJ,char*b)

(

)

voidmain

(

charstrlMJ[NJ={nABCDn,“BCDEFG”,“CDEFGH1"),i;

chararr[l00]={"##################"};

printff'Thestrin9:krT);

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

puts(str[i]);

printf(H\nM):

proc(str,an-);

printf("TheAstring:\n");

printf("%Su,arr);

printf("\n\nn);

)

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

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

数fun(),用来求出数组中值最大的元素在数组中的下标并将其存放在

k所指向的存储单元中。

例如,输入如下整数:

876675896101301401980431451777则输出结果为6,980。

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

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

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

1#include<conio.h>

2tinclude<stdio.h>

3*include<stdlib.h>

4intfun(int*s,intt,int♦k)

Ui1

6

H}

8voidmain()

I-

10FILE*wf;

11inta[10]={876,675,896,101,

301r401r980,431,451,777k;

12system("CLS'1);

13fun(af10,&k);

14printf("%d,%d\n",k,a[k]);

15/♦*♦♦♦*♦**♦♦♦♦♦♦♦♦/

16wf=fopen(nout.datM,"w");

.17fprintf(wfM%d,%d”,k,a[k]);

*r

18fclose(wf);

19/♦♦*♦♦♦♦♦♦♦»♦♦**♦*/

20}

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

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

fun(),该函数的功能是统计各年龄段的人数。N个年龄通过调用随机

函数获得,并放入主函数的age数组中。要求函数把0〜9岁的人数存

放在d[0]中,把10~19岁的人数存放在仇1]中,把20〜29岁的人数存

放在仇2]中,依此类推,把100岁(含100岁)以上年龄的人数都存放在

d[10J中。结果在主函数中输出。

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

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

试题程序:

1tinclude<stdio.h>

2•defineN50

3tdefineM11

4voidfun(int*a,int*b)

5

6

7

8doublernd()

91(

10statict-29,c-217,m-1024,r,0;

11r=(r♦t+c)%m;

12return((double)r/m);

13]

14voidmain<)

15(

16FILE•wf;

17intage[Nj,i,d[M];

18intb[N]-{32,45,15,12,86,49,

97,3,44,52,1*7,95,63);

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

20age[i]-(int)(115*rnd());

/♦产生一个随机的年龄数组*/

21printf(**Theoriginaldata

22for(i-0;i<N;i)

23printf((i+1)*1。-0?

4d",age[ij);/♦纵K出10Mt•/

24printf(w\n\nM);

25fun(age,d);

26for(i-0;i<10;i++)

)27printf(H%4d■—%4d:%4d\n",

i*10,i*10*9,d[i]);

printf("Over100:%4d\nw,d[10]);

/******♦******♦***/

wf-fopen(Mout.datH,Mww);

fun(brd);

for(i=0;i<10;1•♦+)

fprintfMf,n4d-14d:%4d\nM,i

•10,i*10+9,d[i]);

34fprintf(wfrnOver100:%4d"#d[10]);

35fclose(wf);

36

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

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

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

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

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

•include<stdio.h>

tincluck<Mring.h>

MdineM81

in!fun(char•ss,charc)

main()

Ichar•[M],ch;

voidNONO();

printf("\nPleAMenterasiring:**)•gets(a);

printf("VnPleaseenterachar:");ch=ge<char();

printf(**\nThenumberoftherharis:%d\n",fun(a,ch));

NONO();

I

voidNONO()

!/•本函数用于打开文件,龄人测试数据,调用fun函数,输出数据,关闭文件。•/

inti;

FILE»rf.»wf;

chara[M],b[M],ch;

rf=fbpen("in.dat",*r");

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

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

I

fik:anf(rf,a);

fecanf(rf."%»*.b);

ch=•b;

fprintf(wf."%c«%d\n",ch,fun(a,ch));

I

fcJoee(rf);

fcioee(wf):

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

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

其功能是根据以下公式计算S,并将计算结果作为函数值返回,通过形

参传入。

5=1+-——+----------+…+----------------------

1+21+2+31+2+3+,••+〃

例如,若n的值为11时,函数的值为1.833333。

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

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

floatfun(intn)

(

)

voidmain()

(

intn;

floats;

system(“CLS”);

printf(€t\nPlcascenterN:");

scanf("%d'',&n);

s=fun(n);

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

)

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

能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。

例如,若字符串中的内容为****a*bc*de伴g****,删除后,字符串中

的内容则应当是a*bc*def*g**

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

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

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

试题程序:

#include<stdio.h=:{>

#include<conio.h>

woidproc(char*str)

(

)

voidmain

charstr[81];

printf("Enterastring:\nu);

gets(str);

proc(str):

printf("Thestringafterdeleted:\n");

puts(str);}

30.请编写函数proc(),它的功能是:求出str所指字符串中指定字符的

个数,并返回此值。例如,若输入字符串12341234123,输入字符4,

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

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

语句。试题程序:

0tnelud<Vntdlib,k>

3include<conio.h>

SincludeV.tdxk

•defiMNSI

>ntprocCchar•Mr.rharc)

voidmain()

(duirA(N]«chi

•y»te«n("CLS0)।

pn»tf(*\nPleMeEQrr•wirmgc*>i

fetji(a)i

print((-\nPl«»Rermer■chart*)i

ch-geicM)i

pnntf(*\nTh«numberclthecharuii%d

\o".proc<««ch))i

)

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

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

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

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

80.5607290.59851.58864

则低于平均分的学生人数为4(平均分为75.5625)。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#defineN20

intfun(float*s,ihtn,float*aver)

{floatave,t=0.0;

intcount=0,k,i;

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

/*!**!*fl/

/小小小小小小不不不不不不不T/~\Iind不不小小不不不不不小不不小小/

t=s[k];

ave=t/n;

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

if(s[i]<ave)count++;

/*1**1<*1**1**1**1**1**1**1*C1*1**1*-b/

/*T**t**t**T**T**T**T**T**j**t**T**i**i*T/~\l个个个个个个个个个个个个个个/

*aver=&ave;

returncount;

main()

{floatsL30J,aver;

intm,i;

clrscr();

printf(n\nPleaseenterm:");scanf

(“%d”,&m);

printf("\nPlcascenter%dmark:\n",m);

for(i=0;iprintf(n\nThenumberofstudents:

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

printf("Ave=%f\nn,aver);

)

32.下列给定程序中,函数fun()的功能是:将字符串p中所有字符复制

到字符串b中,要求每复制3个字符之后插入一个空格。例如,在调用

fun()函数之前给字符串a输入ABCDEFGHIJK,调用函数之后,字符串

b中的内容则为ABCDEFGHIJKO

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

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

试题程序:

#include<stdio.h>

voidfun(char*p,char*b)

{inti,k=0;

while(*p)

f«1««1«/*i/

/不不不不不不不不不不不不不un°不小不不不不不不不不不不不不不/

while(i<3||*P)

b[k]=*p;

k++;p++;i++;

if(*p)

/、!•、!•、!,、!,*!,*!**!*1*!,*2*\J*“■”■”■*?**?**?*/

/不不不不不不不不不不不不不tm]不不不不不不不不不不不不不不不/

{b[k]='';}

)

b[k]='\0';

)

main()

{charal80J,bl80];

printf("Enterastring:*');gets(a);

printf("Theoriginalstring:");

puts(a);

fun(a,b);

printf("\nThestringafterinsert

space:");puts(b);printf(n\n\nM);

)

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

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

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

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

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

/*1**1*1»1•»!•»1•*1**1**1**1**!**1*q,*1*/

/小小小小小小不不不不不不小不小tm]nd"、'、不不不不不不不不不不不小小小小小不/

fun(intn)

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

sum=1.0;

if(n<=2)sum=O.O;

sO=O.O;sl=O.O;s2=1.0;

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

{s=s0+sl+s2;

sum+=sqrt(s);

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

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

returnsum

)

main()

{intn;

clrscr();

printf(HInputN=n);

scanf(M%dn,&n);

printf(H%f\nn,fun(n));

)

34.给定程序M0D11.C中函数fun的功能是:在字符串的最前端加入

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

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

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

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

1♦include<stdio.h>

2#include<string.h>

3voidfun(chars[],intn)

4

5chara[80],*p;

6inti;

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

8s-p;

9for(i-0;i<n;i++)

10do

11{a(i]-*p;

12

13)

14/*………found*

15while(*p++)

16a[i)-0;

17strcpy(s,a);

18}

19main()

20{intn;chars[80];

21printf("\nEnterastring:");

gets(s);

Hn

22printf(\nThestring\"%sV\nrs);

23printf(M\nEntern(numberof*):

www

);scanf(%dr&n);

24fun(s,n);

25printf(w\nThestringafterinsert:

\w%s\"\nM,s);

26

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

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

位。

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

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

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

[试题源程序]

#include<stdio.h>

r_1*S**1**2*/

/不不不不不不不不不不不小tci1n(1不不不不不不不不不不不/

voidfun(longs,longt)

(

longsi=10;

s/=10;

*t=s%10;

f«1»«£»*1**1**1**1*/*1/

/不不不不不不不不不不不不t()Lind**•・、•.、・・••・••・••・••・•不举不/

while(s<0)

(

s=s/l00;

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

sl=sl*10;

)

)

msin()

(

longs,t;

printf("\nPleaseenters:");

scanf(n%ldM,&s);

fun(s,&t);

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

)

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

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

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

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

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

试题程序;

#include<stdio.h>

#include<strzng.h>

#include<conio.h>

/^*<1>»1><1^^1#^1#<1**1*/*J<1^<1^<1^*£**2**£**2*«£*«£*<1^<1^/

/不不不不不不不不不不不小可、不小4、不tci]n([不不不不不不不不不不不不不不不/

voidfun(chars[],intn)

chara[80],*p;

inti;

ft

/不不不*X不*«X不*不不不不不不不不不不不不[cun1a«f>不小不不不不不不不不不不不不不/

S=p;

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

do

{a[i]二*p;

tZ*[*1^*X^*i^*i^*2^*i^*2^*X**X*/

/个个不小不不不不不不不不不不小小小re1]nn不不不不不不不不不不不不不不不/

i++;

}while(*p);

a[i]=0;

strcpy(s,a);

)

main()

{intn;chars[801;

clrscr();

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

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

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

fun(s,n);

H

printf(\nThestringafterinster:\%s\n",s);

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

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

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

宁符串中的内容为AfaggBDh。

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

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

试题程序:

#include<stdio.h>

/*************8und************/

voidfun(charp)

charmin,*q

inti=0;

min=p[i];

while(p[i]!=0)

if(min>p[i])

/本市木木木木木木木木木木木found本本小本木木木木木木木不本/

p=q+i;

min=p[i];

)

i++;

)

while(q>p)

{*q=*(q-l);

q-/

p[0]=min;

main()

(

charstr[80];

printf(HEntcrastring:");

gets(str);

printf("\nTheoriginalstring:");

puts(str);

fun(str);

printf("\nThestringaftermoving:");

puts(str);

printf("\n\nn);

)

38.给定程序MODH.C的功能是:读入一个英文文本行,将其中每个

单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空

格隔开的字符串)。

例如,若输入;Iamastudenttotaketheexamination则应输出:lAmA

StudentToTakeTheExamination.o

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

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

1♦include<ctype.h>

2finclude<string.h>

3/*………**found*****

4include<stdio.h>

5/***………found******……/

6upfst(charp)

7{intk«0;

8for(;*p;p++)

9if(k)

10{if(*p-•k-0;)

11elseif(*p1,)

12(k-1;*p-toupper(*p);}

13}

14main()

15(charchrstr(81);

16printf("\nPleaseenteranEnglish

textline:");gets(chrstr);

17printf("\n\nBeforechanging:\n

%s",chrstr);

18upfst(chrstr);

19printf(M\nAfterchanging:\n%s\n”,

chrstr);

20

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

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

Kt111

4357

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

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

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

finclude<math.h>

,include<stdio.h>

floatfun(floatnum)

4{ints;

floatn,t,pi;

6t-l;pi-0;n-l;s

7/…………"ound………

8while(t>=num)

9

10

11

12s--s;

13

14

15

16pi-pi*4;

17returnpi;

18

19main()

20{floatnl,n2;

21printf("Enterafloatnumber:");

22scanf("%f&nl);

23n2-fun(nl);

24printf(H%6.4f\nw,n2);

25

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

写字母七二

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

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

试题程序:

#include<stdio.h>

voidfun(char*s)

{intij;

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

if(sill!='c')

/*!**1**1*»!•*1**1**1**1*/

I*T、*1、*1*"、*5、*1、*7**T**7»*.»*.»*•»*.**1、4、4、J

SLil=s[i];

/不不不不不不不不不不不小可、不if_)]in(1不不不不不不*不£**不1**不2**不1*不不不/

s[i]='\0,;

main()

{chars[80];

printf(u\nEnterastring:");

gets(s);

printf("Theoriginalstring:")

puts(s);

fun(s);

printf(HThestringafterdeleted:");

puts(s);printf(u\n\n'*):

五、程序改错题(2题)

41.

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

直到最后一项的绝对值小于指定的数(参数num)为止。兀/4=1-1/

3+1/5-1/7+…例如,程序运行后,输入00001,则程序输出314140

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

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

「include<5tdlib.h>

匚include<math.h>

「include<stdio.h>

floatproc(floatnum)

{

ints:

floatn.t.pi:

t1»pi=01n;111

//••••found*••»

while(t>—num)

n=n+2;

x=-・|

//«•••found••••

t=s%n»

pi=pi•4i

returnpit

]

voidmAin(>

[

floatn!(n2;

sy5tem("CI.S',);

printf("Enterafloatnumber:*>t

n2-proc(nl)i

print""%6.4f\n".n2>«

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

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

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

用后字符串中的内容为yDebkdOT。

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

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

构。

试题程序:

stinclude<»tdio.h>

//••••found••••

voidproc(chart>

(

charmax.■qiinti=0j

max—/]:

while(t[i]!™0)

{

if(max<t[i]>

(

//••••found••••

t=q+iimax。l[i]i

i++,

)

while(q>t>

{

・q・・(q-1)।

q一—I

)

t[0]=maxi

}

voidmain()

charstr[80]i

printf("Enterastring!")।gcts(5ir);

printf("\nTheoriginalsiring:*)(

put!((str):

proc(str)(

printf("\nThestringaftermoving:")i

putH(5tr)iprint(C\n\n")»

}

六、操作题(2题)

43.以下fun函数的功能是在N行M列的整型二维数组中,选出一个

最大值作为函数值返回,请填空。(设M,N已定义)

intfun(inta[N][M])

{inti,j,row=0,col=0;

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

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

if(a[i][j]>a[row][col])(row=i;col=j;)

return();

)

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

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

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

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

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

符串为"baaaacdaa”。

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

确的结果。

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

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

试题程序:

#include<stdio.h>

voidfun(char*s,charc)

{inti,j,n;

»£•一1«•1/

/不不不不不不不不不tcund4不小小小小小小小/

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

if(sli]==c)

(

/*T**»**T**T**T**T**T**T**T*£|"*1fl1个个个个个个个个个//

n=[2];

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

n++;

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

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

/•〜kt«•£*“・“・»f•/

/不拳拳不不不不不不roiind不不小不不不不不不/

s[j+l]=[3];

i=i+l;

)

main()

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

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

printf(M\nlnputacharacter:^^);

scanf(t€%c”,&c);

fun(s,c);

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

参^i-x考-+✓合Xh案lI

1.冒泡排序冒泡排序解析:交换排序是指借助数据元素之间的互相交换

进行排序的一种方法。冒泡排序是一种最简单的交换排序方法,它是通

过相邻元素之间的相互交换逐步将线性表变成有序。

2.1000001010000010解析:运算的规则是只有当两个相应的二进制

位都为1时,该位的结果才为lo要保留第2、8位,只要将其与二进制

数10000010相与。

3.可重用性继承的优点:相似的对象可以共享程序代码和数据结构,从

而大大减少了程序中的冗余,提高软件的可重用性。

4.1343113431解析:程序首先定义了一个结构体NODE,在主函数中声

明了一个该结构体的数组m⑸和两个结构体指针p和q,并分别初始化

P指向m(指向数组的第一个元素):q指向m+4(指向数组的最后一个元

素)。接下来定义并初始化一个整型变量i为O0然后用一个while循环,

在P和q不相等的时候执行循环体:让p所指结构体的成员k等于++i

的值,然后让p指向下一个结构体;让q所指结构体的成员k等十i++

的值,然后让q指向前一个结构体。i从0开始交替调用++i和i++,两

个表达式的值依次分别为1和1、3和3……。所以当p==q循环结束时,

实际循环了两次,P和q都指向m数组的中间位置mL2],i自增了4次,

所以q->k=i;就是让m[2]k=4。所以程序最后输出为:13431。

5.63546354解析:函数fun的第一个for循环跳过字符串的前导空白符,

接着判断第一个非空白符是否是负号,若是,则置变量sign为-1活则,

置变量sign为lo接着的if语句在第一个非空白字符是负号或正号时,

跳过该字符。以后的for循环将后面的数字符当作十进制数的各位数字

转换为一个长整数儿当遇字符a时,结束循环。最后,函数返回sign

与n的乘积。所以若调用函数时提供的实参是“UU6354abc",则函数的

返回值是6354。

6.afiowl[col]>max或a[row]fcoll>=max或max<=a[row]|col]或max

<a[iow][collmax<min或min>maX或max<=min或min>

=maxa[iow][col]>max或a[row][col]>二max或max<=a[row][col]

max<a[iow][col]\r\nmax<min或min>maX或max<=min或min>

二max解析:本题有两层for循环,主函数中定义了整型变量iow、col、

max和min,其中row用来存放外循环中的循环次数,col用来存放内

循环中的次数,max记录每行中的最大值•,min记录所有行中最大值中

的最小值。在内循环中,首先给max赋初值为每行的第0列元素值.然

后从第一列开始依次与max进行比较。如果大于max则将其值赋给max,

当每一行循环结束,max记录了每一行的最大值。所以第一个空应该填

a[row][col]>max或a[row][col]=max.退出内循环,在第一次退出内循

环时,将min赋初值为第。行的max,然后在每次退出内循环时,将

min和每行的max比较,如果大于max,则将max值赋min,所以第二

个空应该填max<min或min>max,当退出外循环时,min为所有行

中的最大值的最小值。

7.

b[i][N・l];实现把a所指二维数组中的第0行放到b所指二维数

组的最后一列中,b[i]fO]=a[N-l][i]门实现将a所指N行N列的二维数

组中的最后一行放到b所指二维数组中的第0歹人

\r\n

\r\n

8./**〃**/解析:C语言程序的注释可以出现在程序基本单词之间的任

何地方,C语言程序的注释以"/*”作为开始标记,并以“*尸作为结束标记。

9.k=p;k=p;解析:为要寻找数组中的最大元素的下标,需先预设1个

临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比

临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直

至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素

下标。通常预设的最大元素下标是数组的首元素下标,考查是从首元素

开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,

变量P控制顺序考查的循环控制变量。当发现当前元素S[p]比临时最大

元素S[k)更大时,应该用p更新ko所以在空框处应填入代码“k=p二。

10.00解析根据运算符的运算顺序可知,该表达式最后运算的是与(&&)

运算,而任何表达式与“0”进行“与”运算,结果都为0。

ll.c题干中,数组a包含10个元素。其中a[5]为6,a[7]为8,a[l]为

2,所以表达式“a[a[5]・a[7]/a[l]「等价于"a[6.8/2『,等价于a⑵,即3。

故本题答案为C选项。

12.D-typcdefint使用typedef定义一种新类型名T,T的

类型是二维数组指针,指向10个元素的数组。其中数组元素类型为int

*[10],即数组的每个元素又是包含10个元素的数组,数组的元素是整

型指针类型。故本题答案为D选项。

13.C

由图所知,其中,C中只有一个属性,是除操作。

14.C

15.B

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

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

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

17.C题干中使用typedef定义新类型名INTEGER,它代表int*类型"吏

用INTEGER定义p相当于int*p。使用INTEGER定义*q,相当于int

**q。所以P是基类型为int的指针变量,q是基类型为int*的指针变量,

选项A、B、D错误。故本题答案为C选项。

18.D解析:中序遍历的递归算法定义

温馨提示

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

评论

0/150

提交评论