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

下载本文档

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

文档简介

2023年辽宁省本溪市全国计算机等级考试

C语言程序设计测试卷(含答案)

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

一、2.填空题(10题)

I.函数pi的功能是根据以下公式近似求得的:

pi*pi/6=i+l/(2*2)+l/(3.3)+...4-l/(n*n)

请在下面的函数中天空,完成求pi的功能。

#include<math.h>

doublepi(longn)

{doubles=0.0,longi;

for(i=l;i<<=n;i++)s=s+[];

return(sqrt(6*s));

1

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

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

3.在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数

据和信息。常见的数据模型有3种,它们分别是层次模型、网状模型和

()o

4.以下scanf函数调用语句中对结构体变量成员的引用不正确的是

{charname[20];}pup[5],*p;

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

main()

/intij,a[][3]={1,2,3,4,5,6,7,8,9};

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

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

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

{forU=O;j<3;j++)printfC'%d”,a[i皿);

printf(n\nn);

}

)

6.数据的物理结构在计算机存储空间中的存放形式称为数据的【

7.以下sstrcpy。函数实现字符串复制,即将t所指字符串复制到s所指

向内存空间中,形成一个新的字符串s。请填空。

voidsstrcpy(char*s,char*t)

{while(*s++=);}

main()

{charstr1[100],str2[]="abcdefgh";

sstrcpy(strl,str2);

printf(n%s\nM,strl);

8.以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始

构成的三角形字符阻列图形。例如,输入整数5时(注意:n不得大于

10),程序运行结果如下:

ABCDE

FGHI

JKL

MN

O

请填空完成该程序。

main()

{inti,j,n;charch=,A';

scanf(u%d",&n);

if(n<11)

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

{for(j=l;j<n-i+l;j++)

',,,

{printf(%2c1ch);

[10];

)

[H];

1

9.下程序的输出是【

main()

(

charstrl[J=nHowdoyoudo",*pl=strl;

strcpy(str1+strlen(str1)/2,nesshe1');

printf(n%s\nM,pl);

)

10.下面的语句要使指针p指向一个double类型的动态存储单元,请填

空。

p=[]malloc(sizeof(double));

二、单选题(10题)

11.数据的存储结构是指()。

A.数据所占的存储空间

B.数据的逻辑结构在计算机中的存放形式

C.数据在计算机中的顺序存储方式

D.存储在计算机外存中的数据

12.有以下程序

voidss(char*s,chart)

{while(*s)

{if(*s==t)*s=t,a'+'A';

s++;})

main()

{charstr1[100]-,abcddfefdbdH,c=rd";

ss(strl,c);printf(n%s\nH,str1);}

程序运行后的输出结果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

13.在C语言中,函数返回值的类型最终取决于()。

A.函数定义时在函数首部所说明的函数类型

B.return语句中表达式值的类型

C.调用函数时主调函数所传递的实参类型

D.函数定义时形参的类型

14.以下选项中非法的表达式是()o

A.a+l=a+l

B.a=b==0

C.(Char.(100+100.

D.7<=X<60

15.若有定义“inta=O,b=l,c=l”关于逻辑表达式“a++||b++&&c++”中各

个部分的执行顺序,以下说法正确的是()。

A.先执行“b++”,再执行“C++”,最后执行“a++”

B.先执行“a++”,再执行“b++”,最后执行“C++”

C先执行“C++”,再执行“b++”,最后执行“a++”

D.先执行“b++7再执行“a++”,最后执行“C++”

16.下面程序的输出结果是omain(){int

a[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;printf(n%d\nM,p[3]);}

A.6B.7C.3D.5

(38)设有一联合体变量定义如下:

uniondata

{longa;

floatb;

intc;

chard;

);

uniondatax;

执行卜.列语句后,正确的联合体变量x的值是().

x.a=llllll;

x.b=2222;

x.c=2.1546;

x.d='R';

17.A)llilllB)2222C)2.1546D)R

(IDC语言规定,在一个C程序中,main()函数的位置(

A)必须在系统调用的库函数之后B)必须在程序的开始

C)必须在程序的最后D)可以在任意位置

19.判断有向图是否存在回路,利用。方法最佳。

A.求关键路径B.求最短路径C.拓扑排序D.广度优先遍历

20.面向对象方法中,继承是指()。

A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.

各对象之间的共同怛质D.类之间共享属性和操作的机制

三、程序设计题(10题)

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

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

分、并放入记录的ave成员中。

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

则他的平均分应为78.875。

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

请勿改动main函数和其他函数中的任何内容,仅在函数fun部位中填

入你编写的若干语句。

试题程序:

#include<stdio.h>

#defineN8

typedefstruct

charnumfl01;

doubles[N];

doubleave;

JSTREC;

voidfun(STREC*a)

voidmain

STRECs={”GA005”,85.5,76,69.5,85,91,72,64.5,87.5};

inti;

fun(&s);

printf(HThe%ssstudentdata:\nM,s.num);

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

nn

printf(%4.lfkn(s.s[i]);

printf(H\nknave=%7.3fkn",s.aVe);

printf(n\nn);

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

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

fun(),其功能是求斐波那契数列中大于t的最小的数,结果由函数返

回。斐波那契数列F(n)的定义为

F(0)=0,F(l)=l

F(n)=F(n-l)+F(n-2)

例如,当t=1000时,函数值为1597。

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

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

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

试题程序:

#include<conio.h>

#include<math.h>

#include<stdio.h>

intfun(intt)

(

}

main()

(

intn;

n=1000;

printf("n=%d,f=%d\n,,,n,fun(n));

)

23.

函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数

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

例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符C的

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

ASCII码值为奇数,在数组中的下标为奇数,因此不应当删除,其他依

此类推。最后t所指的数组中的内容应是“BDF12345”。

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

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

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

试题程序:

#include<stdio-h>

#include<string.h>

voidfun(char*s,chart[D.

(

}

main()

{

char$(100],t(100];

printf(°\nPlea$eenterstringS:0);

s);

fun(s,t);

printf("\nTheresultis:%s\nN,t);

}

24.有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成

绩,从键盘上输入N个学生的信息,要求输出总平均成绩最高的学生信

息,包括学号、性别、姓名和平均成绩。

25.编写函数voidproc(intx,intpp口,inl*n),它的功能是求出能整除x

且不是奇数的各整数,并按从小到大的顺序放在pp所指的数组中,这

些除数的个数通过形参返回。

例如,若x中的值为30,则有4个数符合要求,它们是261030。

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

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

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

试题程序:

Sinclude<conio.h>

ainclude<stdio.h>

=includeVstdlib.h>

voidproc(intx.intpp[].ini■n)

(

)

voidmain()

(

intx.arr[1000].n,it

sy*tem("CLS");

printF("\nPleaseenteranintegernumberAn")i

scan]&-x)t

proc(义.«rr.?>.n)i

for(i・0:iVn:i++)

prinif("%d"♦arr[ij)>

printf(**\n"):

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

S=(l-1/2)+(1/3-1/4)+...+(1/(2n-l)-l/2n)

例如,若主函数从键盘给n输入20后,则输出为S=0.680803c

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

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

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

试题程序:

#includet:stdio.h>

doubleproc(intn)

voidmain

intn;

doubleslim;

printf("\nlnputn:");

scanfC%dn,&n);

sum=proc(n)o

printf(',\ns=%f\n,',sum);

)

27.请编写函数proc(),该函数的功能是:将str所指字符串中ASCII

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

例如,若str所指字符串中的内容为aBcdef9789,其中字符8的ASCII

码值为偶数……字符8的ASCH码值为偶数……都应当删除,其他依此

类推。最后t所指的数组中的内容应是ace979c注意:部分源程序给出

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

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

55include<stdlib.h>

s:include<stdio.h>

*include<string.h>

*include<conio.h>

voidproc(char•str.chart[]>

voidmain()

(

charMr(100].t[l(X)]j

sy5tcmCCLS")i

prind("\nPlcascenterstringSt")i

5canf(-%5w.str)i

proc(Atr.t)।

printf("\nTheresultIM:%s\n*.t)J

>

28.编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx

所指数组中,非素数的个数通过k返回。

例如,若输入17,则应输出:46891012141516。

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

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

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

Qindudr<eldin.h>

voidfun(intni,int•k.ini])

mainf)

I

intm,n.n[100];

voidNON()();

printf("XnPlcajw?enteraninlegcrnunil>rr10and100:"):

*<anf(H%<r.&n);

fun(n,&m,zz);

printnH\n\nTlwrrHH,%(Inon-primrniimlxrvlcs«than%d:M,m.

for(n=0;n<rn;n♦)

pnntf(Tn]);

N()NO();

\

MH<INOV)()

/•请在此函数内打开文件.整人测试数据,谶用fun函数.

输出数据,关闭文件C•/

intm.n.u[100J;

FILE•rf.•wf;

rf=fi»prn("in.<hl"/r");

wf=fopen(Houl.chi*'w");

Mm"rf."%d".&n);

(tin(n.&m.zz);

(pnntf(wf."<hn".in.n);

fnr(n=0;n<m;n•♦•+)

fprintf(wf,«t[n]);

frl»se(rf);

fcl<»c(wf);

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

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

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

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

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

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

试题程序:

Sinclude<»tdio.h>

doubleproc(intm)

(

}

voidmain()

(

ini

doublest

printf("\nlnpuim:

scanf(t

s"proc(m)।

print*

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

符串(每串的长度

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

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

ABCD

BCDEFG

CDEFGHI

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

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

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#defineM3

#defineN20

voidproc(chararr[M][N],char*b)

(

)

voidmain

(

charstr[M][N]={nABCD",nBCDEFG",UCDEFGHF,),i;

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

printffThestrin9:kn"):

for(i=0;i++)

puts(str[ij);

printf(,'\nM);

proc(str,arr);

printf(MTheAstring:\n");

printf(,,%Su,arr);

printf("\n\n”);

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

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

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

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

宁符串中的内容为AfaggBDh。

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

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

试题程序:

#include<stdio.h>

/*1**1**1**1*/1/

/不不不不不不不不不不不不不T/AI]nr[不干干干干不干不可不不不/

voidfun(charp)

charmin,*q

inti=0;

min=pfi];

while(p[i]!=0)

if(min>p[i])

I*2*KI**1**1*7,7,/ivx7,7,7,*1*/

/不不不不不不不不不不不不不Toiinti***不不不不不不不不不不不不/

p=q+i;

min=pli];

i++;

while(q>p)

(*q=*(q-l);

q--;

p[O]=min;

)

main()

(

charstr[801;

printf(nEnterastring:");

gets(str);

printf("\nTheoriginalstring:");

puts(str);

fun(str);

printf(M\nThestringaftermoving:");

puts(str);

printf(H\n\nn);

)

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

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

位。

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

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

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

[试题源程序]

升include<stdio.h>

/*1**1*»£«»£«*£•*£•f*1*1*4.4.*4**4**4**4**4*/

/小小小小小小小小不不不不tci[nd*t*小小不小不不不不不不(

voidfun(longs,longt)

longsi=10;

s/=10;

*t=s%10;

/*1»Ki*Ki**I»*!»KJ*KJ*/I*2**2*I

/不不不不不不不不不不不不T/A]]]],]不干不干干干不干不干干不/

while(s<0)

(

s=s/100;

*t=S%10*Sl+*t;

sl=sl*10;

)

)

msin()

(

longs,t;

printf(H\nPleaseenters:");

scanf(n%ldH,&s);

fun(s,&t);

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

33.下列给定程序中,函数fun()的功能是:计算并输出下列级数的的

N项之和SN,直到SN+1大于q为止,q的值通过形参传入。

SN=2/1+3/2+4/3+(N+1)/N

例如,若q的值为50.0,则函数值为49.394948。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

/*1**1*»£«»£«*£•*£•%1«■»14.-[•*?**?*«£•*4**4**£**4**1**!**1*/

/个个个力个个个个个个个不个个re1]nri个个个个个个个个个个个不个个个/

doublefun(doubleq)

{intn;doubles,t;

n=2;

s=2.0;

while(s<=q)

t=s

/、!,.!,、],、[・、!・7,、!**!**!«*!*7,7,7,17,7,7,7,、1・7,7,*!*、]・*1*、J*/

/不不不不不不不不不不不不不tm]n1]小小小小小小小小不不不小小/

s=s+(n+l)/n;

n++;

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

/»!**!**!**1*»!*»!*、1,*1**1**1*»f**i*/*1*1**4**£*»!**!**!*»!*/

/小小小小小小小小小小小小tciind不不不不不不不不不不彳、不小小小/

returns;

)

main()

{clrscr();

printf(H%f\nH,fiin(50));

)

34.在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在

最后一个元素中。下列给定程序中,函数fun。的功能是计算数组元素中

值为负数的平均值(不包括0)。

例如:数组中元素的值依次为43,47,-21,53,-8,12.0,则程序的

运行结果为-25.333333。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

doublefun(intx[J)

doublesum=0.0;

intc=0,i=0;

/■如■如*1*4,•如•如,1*1**2**2**2**1*»i*/

/*T**T**T**T**T**T**T**T**T**T**T**T**T*T/~\l个个个个个个个个个个个个个/

while(xfi]==0)

if(x[i]<0)

sum二sum+x[i];

C++;

sum=sum\c;

returnsum;

)

main()

(

intxl1000];

inti=0;

clrscr();

printf(n\nPleaseentersomedata(endwith

0):”);

do

(

scanf("%d",&x[i]);

}while(x[i++]!=0);

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

35.下列给定的程序中,函数fun()的功能是;将s所指字符串中出现的

n所指字符串全部替换成t2所指字符串,所形成的新的字符串放在w所

指的数组中。在此处,要求tl和t2所指字符串的长度相同。例如:当

s所指字符串中所指的内容为abcdabfab,tl所指字符串中的内容为ab,

t2所指字符串中的内容为99时,结果在w所指的数组中的内容应为

99cd99f990

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

t

/不不不不不不不不不不不不*不]][]「1]不干不不干干干*2*不干*2*干不干干不//

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

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

strcpy(w,s);

while(*w)

{p=w;r=tl;

/KI**1*Kl*KI*KI**1*KI*KI**1*KI*Ki*KI**1*11*2*7,*1**1**1*KI**1*f

/不不不不不不不不不不不不不nr]不不干不干干不不可不不干不不/

while(r)

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

elsebreak;

if(*r=='\0')

{a=w;r=t2;

/^4^4^4^4aJ/

/个个个个个个个个个个个个个j-z-x।]n0个个个•?•个个个个个个个个个个/

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

w+=strlen(t2);

elsew++;

main()

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

clrscr();

printf(H\nPleaseenterstringS:");

scanf(n%s';s);

printf(M\nPleaseentersubstringtl:");

scanf("%s",tl);

printf("\nPleaseentersubstringt2:");

scanf(n%sn,t2);

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

fun(s,tl,t2,w);

printf("\nTheresultis:%s\nM,w);

elseprintf("Error:strlen(t2)\n");

36.给定程序MOD11.C中函数fun的功能是:从低位开始取出长整型

变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,

低位仍在低位。例如:当s中的数为2736598时,t中的数为:2358。

#include<conio.h>

#include<stdio.h>

/不不不不不不不不不不不不tonnd不不不不不不不不不不不不/

voidfun(longs,longt)

{longsl=10;

*t=S%10;

while(s>0)

{s=s/100;

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

sl=sP100;

main()

{longs,t;

clrscr();

printf("\nPleaseenters:");

scanf(u%ldH,&s);

fun(s,&t);

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

)

37.下列给定程序中函数fun。的功能是计算正整数num的各位上的数

字之平方和。

例如:输入352,则输出应该是38;若输入328,则输出应该是77。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

longfun(longnum)

(

/*+**+*+*+*found************/

Iongk=l;

do

k+=(num%10)*(num%10);

num/=10;

/*********+found'*+**+*+******/

}while(num)

return(k);

)

main()

(

longn;

clrscr();

printf(n\Pleaseenteranumber:H);

scanf(n%ldH,&n);

printf(M\n%ld\nH,fun(n));

)

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

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

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

8565.56995.5875562.575

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

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#defineN20

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

/■kr«kr«kf«•£,\X-*£**X**1*/

/不不不不不不不不不不不不不T/~V1][]]]个个个个个个个个个个个个个/

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

/、!,、!■.!■.!■、!■、!■17.♦!,/

/不不不不不不不不不不不不不t()i]n1[不不不不不不不不不不不不不不不/

if(s[i]<ave)

count++;

/»!*“•*!*»!**1**1**!**!**!**!*«],£1♦]"♦[,*?*******»**、[,、]•<!*/

/不不不不不不不不不不不不不tm]n〔[不不不不不不不不不不不不不/

aver=ave;

returncount;

)

main()

(

floatS[30],aver;

intm,i;

clrscr();

printf(H\nPleaseenterm:");

scanf(“%d",&m);

printf("\nPleaseenter%dmark:\nM,m);

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

scanf(n%f',s+i);

printf(M\nThenumberofstudents:%d\n,',

fun(S,m,&aver));

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

39.下列给定程序中,函数fun的功能是按以下递归公式求函数值。

用制〃)={力(”—2

例如:当给n输入5时,函数值为240;当给n输入3时,函数值为60。

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

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

试题程序:

#include<stdio.h>

*!**!**!*»!*»!*»!*»!*»!*»!*»!*1*£**£**1**1**1*/

/不不不亦不小不,自不不不不不tci]n[[不不不不+不不不不干干不/

fun(intn);

intc;

/t

/不小不不不不不不不不不不不miinn不不不不不不不不不不不不不/

if(n=l)

c=15;

else

c=fiin(n-l)*2;

retum(c);

)

main()

(

intn;

printf("Entern:");

scanf(n%dH,&n);

printf(HTheresult:%d\n\nn,fun(n));

)

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

然后求两条对角线上的各元素之和,返回此和数。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#defineM5

f*1«•!»•!«*1**1*/

f・[•・1•-[•rTwrYw»Tw・[•»Tw・丫••丫•*T*rjwrTw・[•・[•・[•・[•»Tw・[•・[•/

ihtfun(intn,intxx[If1)

{inti,j,sum=0;

printf("\nThe%dx%dmatrix:\n",M,M);

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

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

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

printf(M%4f',xx[i][jJ);

printf(n\nn);

)

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

sum+=xx[i][i]+xx[i][n-i-l];

return(sum);

)

main()

{intaalMJLMJ={{1,2,3,4,5},{4,3,2』,0},

{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};

clrscr();

printf(M\nThesumofallelementson2

diagnalsis%dn,fun(M,aa));

五、程序改错题(2题)

41.

下列给定程序中,函数fun的功能是:从整数10.55,查找能被3整除且

有一位上的数值是5的数,把这些:故放在b所指的数组中,这些数的

个数作为函数值返回。规定函数中al放位数,a2放十位数。

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

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

试题程序:

include<stdio.h>

i;i(fun(int*b)

{intk,al,a2,i^O;

for(k=IO;k<=55;k++)

八:•**♦■*♦♦*•■***余*^Dnd«*本♦/奉■率***♦*****/

Q=k/1O;

al=k-a2*10;

if((k%3i==O&&a2^=5)tl(k%3==0&&

al==5))

b[ij^k;i++;•

1.

1.

returnk;

returnk;

main()

{intN1001k.m;

printf(Fieresultis:\nH);

for(k力;k<m;k++)

,r,,

printf(%4dfa[k]);

pHntfCXn%

1

42.

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

数proc()的功能是:删除数列中值为x的元素。n中存放的是数列中

元素的个数。请修改程序中的错误,使它能够得出正确的结果。注意:

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

题程序:

«i»cl*kh>

»SM20

mlp*oc<mi•arr.dttn.mtM>

tntp*0«H

•rrCuj^Mi

whal*<Kt*arv(p])

p-p+h

i«p**11>r»«uni-li

・I”

for(i*p|l<A|i't*)

//••••(<HMNI••••

ll»arffiji

rvttamnaI*

vo«dmatn()

miarr(M]«I-1.0.1»SJO.I5.S0.90).

i«*»h

pnntf(*Th»onginsldat«:\na)i

for(iw0»»<mH4)pnntf<*M5d".•rrLij)i

printfC*\nlnputx(tod«4«i*)t*)«

priRtfC^OIdr।Kd\n*«x>i

n*proc<art«n»x)i

W•―I)

printf(a•••Nobefound!•••\n\na)।

Hw

pnnih-Tbcdataahefde*etedi\a*)i

for(i-0iKi»ii4-♦)

print"-M5d*.arr{ij)i

pnmf(a\f)\n")।

六、操作题(2题)

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

案的项目中包含一个源程序文件progl.c。在此程序中,己知学生的记

录由学号和学习成绩构成,N名学生的记录己存入a结构体数组中。

请编写函数funO,该函数的功能是找出成绩最高的学生记录,通过形

参将其返回主函数〔规定只有一个最高分)。已给出函数的首部,请

完成该函数。

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

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

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

试题程序:

#include<stdlib.h>

#include<stdio.h>

#include<string.h>

#include<conio.h>

#dcfineN10

typedefstructss/*定义结构体*/

{charnum[101;

ints;

}STU;

fun(STUa[],STU*s)

(

)

voidmain()

(

STUa[N]={{“A01”,81},{“A02”,89},{“A03”,66},

{“A04”,87},“A05”,77},{“A06”,90},{“A07”,79},

{“A08”,61)A09”,80},{“A10”,71}},m;

inti;

system("CLS");

printf("****Theoriginaldata*****);

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

printf(4<No=%sMark=%d\n,\a[i].num,a[i].s);

fun(a,&m);

printfC****THERESULT****\n*);

printf(uThetop:%s,%d\n”,m.num,m.s);

44.以下程序中select函数的功能是:在N行M列的二维数组中,选出

一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。

请填空。

#defineN3

#defineM3

select{inta[N][M],int*n;

{inti,j,row=l,eolum=l;

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

forj=O;j<M;j++)

if(afil[j]>afrow][colum]){row=i;colum=j:}

*n=;

return;

)

main()

{inta[N][M]={9,11,23.6,1,15,9,17,20},max,nj

max=select(a,&n);

printf(Mmax=%d,line=%d\n,',max.n;

参考答案

1.1.0/i/i或1.0/(i*i)1.0/i/i或1.0/(i*i)解析:由题面中提供的计算pi的

公式可知:在第i项其值为l/(i*i),考虑到运算结果为浮点数,故必须

要将1转化为浮点数或采用L0/(i*i)的形式。故本题应填1.0/(i*i)或其等

效形式。

2.8

3.关系模型关系模型解析:在数据库中用数据模型这个工具来抽象、表

示和处理现实世界中的数据和信息。通俗地讲,数据模型就是现实世界

的反映,它分为两个阶段:把现实世界中的客观对象抽象为概念模型;

把概念模型转换为某一DBMS支持的数据模型。常见的数据模型有3

种,它们分别是层次模型、网状模型和关系模型。

4.D

5.123\nO56\n009123\\n056\\n009解析:数组是用于按顺序存储同

类型数据的数据结构,如果有一个一维数组,它的每一个元素是类型相

同的一维数组,就形成了一个二维数组。在内存中数组的元素是连续顺

序存放的,对;维数组来说,先存放第一行,再存放第;行,…,因为

每一行都是其广义一维数组的元素,并且在给出全部数组元素的初值后,

二维数组的定义中可以将第一维的下标省略。本题中,定义了一个元素

类型为整型的二维数组敢叫[3]={1,2,3,4,5,6,7,8,9),它相

当于一个3*3的矩阵,for(i=0;i<3:i++)for(j=i+l;j<3;j++)a|j][i]=0;

将行下标i大于列下标j的元素a[2][0],a⑵⑴赋值为0,最后

for(j=0;j<3;j++)prinffC%n;a[i][j]);printf('\\n');进行换行输出,所以

输出结果为

123

056

009

6.内模式或物理模式或存储模式内模式或物理模式或存储模式

解析:一个数据库只有一个内模式,它是数据物理结构和存储方式的描

述,是数据库内部的表示方法。例如,记录的存储方式是顺序存储、索

弓I按照什么方式组织;数据是否压缩存储,是否加密等。

7.*t++或*(t++)*t++或*(t++)解析:主函数中定义了两个字符型数组stll

和str2,并且给str2赋初值“abcdefgh”,接着调用函数sstrcpy(strl,str2),

将字符串str2的值赋给strl.在函数sstrcpy(*s,*t)中,用了一个while循

环,每循环一次将形参指针t所指的字符赋给形参指针s所指向的存储

空间,然后指针s和指针t都下移到下一个元素。所以空格处应该填"++

或*(t++)°

8.

C语言允许字符数据与整数进行直接的算术运算,故输出大写字母A

开始的连续字符,可通过白加运算ch++完成。三角形字符阵列第i行

的字符个数为n・i+L在每行结尾以回车字符Nn,换行。

\r\n

\r\n

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

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

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

strlen(strl)的值为13,则strcpy(str1+strlen(strl)/2,'esshe');相当于

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

10.(double*)(double*)解析:本题考查强制类型转换。函数malloc的默

认返回是void*,若要使指针指向double类型,必须进行类型转换,类

型转换格式为:(数据类型*)。

1LB解析:数据的存储结构,又称为数据的物理结构,是数据的逻辑

结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、

散列结构和索引结构等。

12.B解析:在内存口,字符数据以ASCII码存储,它的存储形式与整数的

存储形式类似。C语言中,字符型数据和整型数据之间可以通用,也可以

对字符型数据进行算术运算,此时相当于对它们的ASCII码进行算术运

算,在本题中,s++相当于s=s+l,即让s指向数组中的下一个元素。

13.A解析:在C语言中,应当在定义函数时指定函数值的类型。凡不

加类型说明的函数,默认按整型处理。在定义函数时对函数值说明的类

型一般应该和return语句中的表达式类型一致。如果函数值的类型和

return语句中的表达式类型不一致,则以函数值的类型为准,由系统自

动进行转换,即函数类型决定返回值的类型。

14.A

赋值运算符的左边只能是变量,而不能是常量或表达式。

15.BC语言中运算符有优先级和结合性。自增、自减运算符的优先级高

于逻辑运算符,逻辑运算符中逻辑与“&&”的优先级比逻辑或“『‘高,逻

辑运算符的结合性自左向右。所以题干中表达式等价于

“(a++)||((b++)&&(c++))»。运算顺序为:首先执行、++”,再执行“b++”,

最后执行“C++”。故本题答案为B选项。

16.B解析:指针变量p指向数组a的第5个元素,p[3]在原指向基础上

移3个单位,指针变量p将指向第8个元素(下标为7的元素),值为7。

17.D

18.D

19.C

20.D继承是面向对象的方法的一个主要特征,是使用已有的类的定义作

为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的

性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和

操作的机制。

21,voidfun(STREC*a)

\n{

\ninti;

\na->ave=O.0;

\nfor(i=0;i<N;i++)

\na->ave=a->ave+a->slij;

\n/*求各门课程成绩的总和*/

\na->ave=a->ave/N;/*求平均分*/

\n}

\n【解析】本题考查的是指向结构体类型的指针变量做参数和结构体类

型成员的运算。fun函数中求出平均成绩,要带回主函数则必须定义一

个指针类型的形参STREC*a,同时引用成员使用指向运算符,a->ave和

a->s[i]o

\n

22.intfun(intt)

(

intfO=O,fl=l,f;

do{

/*根据斐波那契数列的定义求数值*/

f=fO+fl;

fO=fl;fl=f;

}while(f<t);/*如果求的数值小于t则继续*/<7t);

returnf;

根据斐波那契数列定义不难发现,该数列最终的结果由两个数列之和

组成,所以可以在循环内部始终把f看成前两项之和,而fO始终代表

第n-2项,fl代表第n-1项。退出循环时得到的数f,就是大于指定数

的最小的数。

23.

【答案】

voidfun(char*s,chart(])

{.

inti,j-0;

forfi=0;i<strlen(s»);i++)

I

【解析】

使用循环遍历字符串,将下标和ASCII码值满足要求的元素赋给新的字符串c

24.\n#include,stdio.h'

\n#defineN3

\nstructstudent

\n{longstu_num;charsex;

\ncharname[15];intscore[4];

\nfloataverage;};

\nmain

\n{intij,index;floatsum,max;

\nstructstudentstuarr[N];

\nfor(I=0;I{printf('pleaseinput%dstudentinfoirnation:\\n',I+l);

\nscanf('%ld,%c,%s\&stuarr[I].stu_num,&stuarr[I].sex,stuarr[I].name);

\nfor(j=0;j<4;j++)

\nscanf('%d',&stuarr[I].score[j]);}

\nfor(I=0;I(sum=0.0;

\nfor(j=0;j<4;j++)

\nsum+=stuarr[I].score[j];

\nstuaiT[I].average=sum/4.0;}

\nmax=stuarr[0].average;

\nindex=0;

\nfor(I=1;Iif(stuarr[I].average>max)

\n{max=stuarr[I].average;

\nindex=I;}

\nprintfC总平均成绩最高的学生信息是学号二%ld,性别二%c,姓名二%s,平

均成绩

=%4.1fWn\sluarrtindex].slu_num,stuarr[index].sex,stuarr[index].nam

e,stuarrlindexj.average);

\n}\n

25.

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

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

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

26.\n\tdoubleproc(intn)

\n{

\ninti;

\ndoubles=0.0;//s为其和的变量

\nfor(i=1;i<=n;i+十)

\nS=s+(l.0/(2*i-l)-l.O/(2*i));//计算s

\n=(l-l/z)+(l/3-1/4)+…+(1/(2n-l)-l/

\n2n)

\nreturns;//最后把所得到的和返回到主函数中

\n}

\n【解析】由题目中所给表达式可知,多项式的值为n项表达式的

和。可以利用n次循环求出n项表达式的值,求和放在变量s中。最

后将多项式的值返回到主函数当中。\n

27.

【解析】要把字符串str中ASCH码值为偶数的字符删除,需要判断字

符串str

温馨提示

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

评论

0/150

提交评论