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

下载本文档

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

文档简介

2022年甘肃省张掖市全国计算机等级考试

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

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

一、2.填空题(10题)

1.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是

[]o

structstud

{charnum[6];

ints[4];

doubleave;

}a,*p;

2.以下程序的运行结果为【】。

#defineN5

main()

{inta[N]={1,2,3,4,5},i,temp;

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

{temp=a[i];

a[i]=a[N-i-l];

a[N-i-l)=temp;

}

printf("\n");

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

3.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结

点。

4.实体联系模型是一种常用的高级概念数据模型,而是实体联系

模型中的核心。

5.\13,在内存中占1个字节,"\12"在内存中占____个字节。

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

#definePR(ar)printf("ar=%d",ar)

main()

{intj,a[]={l,3,5,7,9,11,13.1),*p=a+5;

for。=3;j;j-)

switch(j)

{case1:

case2:PR(*p++);break;

case3:PR(*(—p));}}

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

fun(intx,inty,intz)

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

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

)

8.下面程序的功能是将字符串a下标值为偶数的元素由小到大排序,其

他元素不变,请填空。

#include<stdio.h>

main()

(

chara[]="labchmfye",t:

int1,j;

for(i=0;i<7;i+=2)

for(j=i+2;j<9;[])

if([])

{t=a[i];a[i]=a[j];a[j]=t;j++;)

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

)

9.#define命令出现在程序中函数的外面,宏名的有效范围为。

10.以下程序运行后的输出结果是()。

main()

{charc;intn=100;

loatf=10;doublex;

x=f*=n/=(c=50);

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

二、单选题(10题)

11.

有以下程序

#include<stdio.h>

main

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

x=(aAb)&C;printf("%d",x);

)

程序的运行结果是()。

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

12.读取二进制文件的函数调用形式为“fi"ead(bufTer,size,count,的「,其中

buffer代表的是()o

A.一个内存块的字节数

B.一个整型变量,代表待读取的数据的字节数

C一个文件指针,指向待读取的文件

D.一个内存块的首地址,代表读入数据存放的地址

13.以下正确的字符串常量是()。

A.“\\\"B.'abc'C.OlympicGamesD."“

14.表示关系a<b<c的C语言表达式为()o

A.(a<=B)&&(b<=C)

B.(a<=B)and(b<=C)

C.(a<=b<=C)

D.(a<=B)&(b<=C)

15.下列关于逻辑运算符两侧运算对象的叙述中正确的是()。

A.只能是整数0或1B.只能是整数0或非0整数C.可以是结构体类型

的数据D.可以是任意合法的表达式

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

A.一个逻辑数据结构只能有一种存储结构

B.逻辑结构属于线性结构,存储结构属于非线性结构

C一个逻辑数据结构可以有多种存储结构,且各种存诸结构不影响数据

处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存诸结构影响数据处

理的效率

17.在多媒体计算机系统中,不能用以存储多媒体信息的是

A.光缆B.软盘C.硬盘D.光盘

18.若f(n)=3n2+2n+l,则f(n)=()o

A.0(n2)B.O(n)C,O(2n)D.O(3n2)

19.有以下程序:#include<stdio.h>main(){inti=0.s=0;for(;;)if(i==

3IIi==5)continue;if(i==6)break;i++;s+=i;}printf("%d\n”,s);程序

运行后的输出结果是()。

A.10B.13C.21D.程序进入列循环

20.以下选项中不能用作C语言程序合法常量的是()。

A.123C.1,234D.“\x7D”

三、程序设计题(10题)

21.学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构

体数组中,请编写函数fun,其功能是:把分数最低的学生数据放入b所

指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低

的学生人数:

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

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

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

findude<stdio.h>

WdcfineN16

typedefttract

|charniun[10]:

ints;

|STREC;

intfun(STREC•a.STREC•b)

main()

(STREC»(N]»H-GA05",851.{"GAOS",761,|"GA02”,691,|"GA04",851,

|"GA01CAO7",72(,rGA08".641.GA06",871.

|-GA015-,85(,)"GA0)3,,91|,|*GA012-,64|,|"CA014",911.

,

|"CA0ir,91|.|"CA0i7,,64|,|-CA0I8",64|,|"CAOI6,72||{

STRECb[N];

iniitn;FIL£♦oul;

n=fun(f,h);

prinlf("The%dlowestscore:\n*,n);

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

printf("%B%4d\n*,b[i].num,h[i].•);

pnntf(-\n");

out=fbpen("out.dat**.Ww*);

fprintf(o<rt,,n);

for(i»0;i<n;i♦♦)

fprinlf(out,*%4d\n",h[i].•);

fdooe(out);

i

22.

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

是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形

参m给出了字符串的长度,形参h给出了字符串中前*号的个数,形参

e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提

供的字符串函数。例如,若字符串中的内容为****a*bc*def*g****,删

除后,字符串中的内容则应当是a*bc*def*g。注意:部分源程序给出如

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

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

ttincludeV.tdso,b>

AIRCIIMUVCOAMKh>

vendprocCdwu•a»mtm.inth•inte)

voedauian()

eMr•£!!j«

m<tn*0«tn*0«fn,O4

phmf(aEncerA«tnnfI\D*)I

<et>(»)i

whileC•t)

-"m"导冷圈舲长It

t一一i/掂计t|B向字符率兄施

wt)dr<•)

{l———■++/

,指针,■向■晅一个字母・sflUt/部•'的

个教

wtul«<•(0*,*,>

<(+♦if»*♦11

/mitf・网■一个字,・《■畿精•»‘•’的个•

proc<■・m«(n»fn)i

prmtf<*The»tnnc>(irrdeleiedt\ii*>i

pulsC•)t

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

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

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

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

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

linclude<stdio.h>

voidNONO();

intfun(intn)

main()

{intn,place;

do{

printf(“请输入一个4位以内的正整数:

scanf;

Iwhile(n<0IIn>9999);

place«fun(n);

print—1*输入的数字是记位\n“,place);

NONO();

)

voidNONO()

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

FILE•fp,•wf;

inti,n,place;

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

wf-fopen("c:\testk>ut.datHw");

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

(

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

place■fun(n);

fprintf(wff”%d\n”,place);

fclose(fp);

fclose(wf);

序:)

24.请编写一个函数voidproc(char*str),其功能是:将字符串str中所有

下标为偶数位置上的字母转化为大写(若该位置上不是字母,则不转换)。

例如,若输入字符串:“thankyou6verymuch",则应输出:

“TbAnKYoU6vErYMuCh”。注意部分源程序给出如下。请勿改动main

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

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

FIncludeVcooio.b>

9includeVZ&OLb>

*includeVsidUKh>

voidpruc<char•Mr)

RidYAMI)()

ciuiftt£51].

»yw<<^ii("CI.S">i

prtnt(<*Ptc«*«*«t*rancharacterBtnn*

wvtlMn$0cluirMk9er»i\nw)।

gcis(tt)।

printf<<\«\nAhrrchancingubcMring\a%>*.11)1

proc<tt)1

prmtfC*\nbcconKB\n%•"•"一

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

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

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

时停止迭代)O

^=I+±+p^1x2x3+Ix2xlx4

233x53x5x73x5x7x9

1x2x…x〃

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("%lf',&x);

printf("\neps=%lf,PI=%lf\n,5,x,fun(x));

)

26.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放人

结构体数组stu中,请编写函数proc(),它的功能是:把指定分数范围

之外的学生数据放在b所指的数组中,分数范围之外的学生人数由函

数值返回。

例如,输入的分数是70和79,则应当把分数低于70和高于79的学生

数据输出,不包含70分和79分的学生数据。主函数中把70放在low

中,把79放在heigh中。

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

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

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

试题程序:

gMidud*k>

WdefineMl«

typcdefMruci

duirHMtn[IO]i

I*-i

STREC,

mipror<STREC•••STREC•b«mfl・uithX

voidmain()

STRfl1MU(M]»<(*<;ADOSa.SSK<*(^003*,<M,

(*GA002*.SOhlPA004.♦

<aGAOOP.MMaGA<X)7fl.74h

《・GA0Q8・・N)・<.GA006・.891・

<<GA0i$-.901PAO】3'•

<・GAOI2".”1・C«;AO14・.8Z),

rGA0ir.73KI*GA0n\69h

<wGAOiaa.MU(aGAO)S*.MHs

STRECh(M]i

mti.■・low.hngh*ti

|mtit(<*EiMrr2fen«<rrnumberlow&

Knght

«canf(*KdHd*«(low•the<h>i

lf(h«cbVlow>

t*he«ch|

heigh*lowi

loft.

A*:proc(sin»h•low•lw<h)।

prtfit(<,ThcwiwdcAt'•<Utaoui

Kd------Kdi\a*»low»het<h)•

+)

prifitfc*K«w.h(i3.aum«

〃■掰指定分数越■内立学生妃量

pHfll(<*\ll")|

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

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

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

例如.字符串中的内容为»••A•BC.DEF.........................•".!!除后,字符串中的内容应当

是:・••••ABCDEFG".

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

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

tinchide<stdio.h>

voidfun(chArea)

main()

|char»[8i];voidNONO();

pnntf(*Enterastring:\n");gete(s);

fun(«);

printf("Tbestringafterdeleted:\nM);puls(s);

NONO();

I

voidNONO()

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

FILE■in,■out;

mli;chart[81];

,

m=fopoi(-in.dal"f"r");

outsfbpen(ffoul.dat",ww");

ibr(i-0;i<10;i♦♦)

I

n

bcanf(in("%8;

Ma

^printf(outv%s\n,»);

I

fd»e(in);

Ho-g);

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

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

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

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

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

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

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

舅1tinclude<stdio.h>

2voidNONO();

3intfun(char*s)

5

6}

7main()

8{char*s=n2def35adh253kjsdf

7/kj8655x";

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

10printf(',%dKn*1,fun(s));

11NONO();

12}

13voidNONO()

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

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

15FILE*fp,♦wf;

16inti;

17chars[256];

nMnM

嘉fp=fopen(in*datrr);

19wf=fopen(Mout.dat11,www);

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

21fgets(sf255,fp);

,"

Wfprintf(wf,%d\n"rfun(s));

9Efclose(fp);

fclose(wf);

■)

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

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

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

k所指向的存储单元中。

例如,输入如下整数:

876675896101301401980431451777则输出结果为6,980□

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

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

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

1tinclude<conio.h>

2#include<stdio.h>

3#include<stdlib,h>

4intfun(int♦szintt,int♦k)

5{

6

7)

8voidmain()

9{

10FILE*wf;

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

301r401r980r431,451,777}rk;

12system(MCLSH);

13fun(a,10,&k);

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

15/**************京**/

16wf=fopen(nout.daf\MwH);

w

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

18fclose(wf);

19/

20}

30.有一个一维数组,内放10个学生成绩,写一个函数,求出平均分。

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

31.下列给定程序中fun()函数的功能是:将n个无序整数从小到大排序。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

fun(intn,int*a)

{inti,j,p,t;

for(j=O;j<n-l;j++)

{P=j;

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

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

if(a[p]>a[i])

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

t=i;

if(p!=j)

{t=a[j];a[j]=a[p];a[p]=t;}

putarr(ihtn,int*z)

{inti;

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

{printf("%4d",*z);

if(!(i%10))printf("\n");

}printf("\n");

main()

{intaa[20]={9,3,0,4,l,2,5,6,8,10,7},n=ll;

clrscr();

printf("\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa);

fun(n,aa);

printf("\nAftersorting%dnumbers:\n",n);putarr(n,aa);

32.给定程序M0D11.C中函数fun的功能是:判断一个整数是否是素

数,若是返回1,否则返回0。

在mai()函数中,若fun返回1输出YES,若fun返回。输出NO!。

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

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

1*include<stdio.h>

2intfun(intm)

3{intk-2;

4while(k<«m&&(m%k))

5/…………"und…………/

6…

7/…………found…………/

8if(m-k)

9return1;

10elsereturn0;

11}

12main()

13(intn;

14printf(••\nPleaseentern:w

R

scanf("%dr&n);

15if(fun(n))printf(MYES\nR);

16elseprintf(WNO!\nn);

17

33.给定程序MOD11.C中函数fun的功能是:将字符串中的字符按逆

序输出,但不改变字符串中的内容。

例如,若字符串为abed,则应输出:deba。

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

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

♦include<stdio.h>

2/…………found

3fun(chara)

4(if(*a)

5{fun(a*l);

6/…………found

7printf(n%cn*a);

8

9

10main()

11{chars[10]s»nabcdw;

12printf("处理前字符申=*s\n处理后字

符串s);

13fun(s);printf(w\nn);

14

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

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

71/4-1-1/3+1/5-1/7+...

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

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

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

试题程序:

#include<math.h>

#include<stdio.h>

floatfun(floatnum)

{ints;

floatn,t,pi;

t=l;pi=0;n=l;s=l;

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

while(t>=num)

pi=pi+t;

n=n+2;

s=-s;

/******

t=s%n;

pi=pi*4;

returnpi;

)

main()

{floatnl,n2;

clrscr();

printf("Enterafloatnumber:");

scanf("%f",&nl);

n2=fun(nl);

printf("%6.4An",n2);

)

35.给定程序M0D11.C中函数fun的功能是:计算小于形参k的最大

的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的

值为500,则函数值为4622。

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

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

1tinclude<stdio.h>

2intfun(intk)

3{intmc-0;

while((k>»2)&&(me<10))

(

/••♦••♦♦♦♦•••found•

7if((k%13-0)||(k%17-0))

8(m-k;mc++;(

9k一;

10

11returnm;

12/…………"und…………/

13

14main()

15(

ww

16printf(%d\nrfun(500));

17

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

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

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

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

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

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

doublefun(doubleq)

{intn;doubles,t;

n=2;

s=2.0;

while(s<=q)

t=s

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

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

n++;

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

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

returns;

main()

{clrscr();

printf("%Rn"Jun(50));

37.给定程序MOD11.C中函数fun的功能是:将s所指字符串的正序

和反序进行连接,形成一个新串放在t所指的数组中。

例如,当s所指字符串为:“ABCD”时,则t所指字符串中的内容应为:

“ABCDDCBA”。

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

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

1•tinclude<stdio.h>

*

2Itinclude<string.h>

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

4voidfun(chars,chart)

5(

6inti,d;

7d-strlen(s);

8for(i=0;i<d;[♦+)t[i]«s[i];

9for(i■0;i<d;i++)t[d>i]»

s[d-l-i];

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

11t[2*d-l]-t\0,;

12

13main()

14

15chars[100]9t(100);

16printf(H\nPleaseenterstringS:R);

w

scanf("%s#s);

17fun(s,t);

w

18printf(\nTheresultis:%s\n"rt);

19

38.给定程序MOD11.C中函数fun的功能是:先从键盘上输入一个3

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

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

它能得出正确的结果。

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

1♦include<stdio.h>

2finclude<string.h>

3voidfun()

4(

5inta[3][3],sum;

6intirj;

7

8

9printf("Inputdata:");

10for(i-0;i<3;if>)

11{for(j-0;j<3;j++)

12/**w******found**********/

RR

13scanf(%d,a[i](j]);

14

15for(i-0;i<3;i++)

16sum=sum+a(i)[i];

ww

17printf(Sum»%d\nrsum);

18}

19main()

20

21fun();

22

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

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

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

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

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

1tinclude<stdio.h>

2tinclude<string.h>

3voidfun(chars[],intn)

4(

5chara[80],*p;

6inti;

7/•••••★★★★*found***********

8s-p;

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

10do

11{a[i]«wp;

12i++;

13

14**♦♦♦♦**♦♦found***********

15while(*p++)

16a(i]-0;

17strcpy(sra);

18

19main()

20(intn;chars[80];

21printf(M\nEnterastring:w);

gets(s);

Mn

22printf(\nThestring\"%s\*\nrs);

23printf(w\nEntern(numberof*):

“);scanf&n);

24fun(s,n);

25printf(w\nThestringafterinsert:

\"%s\"\nw,s);

26

40.下列给定程序中,函数fun()的功能是:找出一个大于给定整数m且

紧随m的素数,并作为函数值返回。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

intfun(intm)

{inti,k;

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

{for(k=2;k<i;k++)

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

if(i%k!=0)

break;

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

if(k<i)

return(i);

)

}

main()

{intn;

clrscr();

printf("\nPleaseentern:");

scanf("%d",&n);

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

五、程序改错题(2题)

41.下列给定程序中,函数fun()的功能是:根据输入的三条边长(整

形),判断能否构成三角形;构成的是等边三角形还是等腰三角形。若能

构成等边三角形函数,返回3;若能构成等腰三角形函数,返回2;若

构成=三角形函数,返回1;若不能构成三角形函数返回0。请修改函数

fun()中的错误,得出正确的结果。注意:不要改动main()函数,

不能增行或减行,也不能更改程序的结构。试题程序:

#include<stdio.h>

inifun(inty,intz)

(

i“x+y>/&&y+z>x&&x+z>y>

(

//•♦•»found•*•*

if(x==y&&y==z)

return1।

elseif(xyIly^:zlx--z)

return2,

elite

//»*»*found»••»

return3s

else

return0(

i

voidmairiC)

intx.y.z.shape;

print«"\nlnputx.y.z:・)i

scan”.%d%d%d*・&x,&y.i

prinif("\nx^%d.y=%d.z=%d\n"・x・y・z)i

shapc=fun(x・y・z)i

prind("\n\nThc5hapc:%d\nH.shape)»

42.

下列给定程序中,函数proc()的功能是:求S的值。设

S7《22,4]03))e(4?*(3•$>>•((3•:>

・・・・•(2k)2y<(2h—

例如,当k为20时,函数的值应为1.551759。请修改程序中的错误,

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

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

stfiduJeVstdio.h>

=mcludeVconeo.h>

9mclu4eVIL>

:includeVaih.h>

••found••

proHintk)

mtmfloat»•w«p.Q,

l.Ot

wtiikrCn<

2,0•m

p■■-LOi

q-w

w•wpqi

••found••

rrtum%

fvMMni*CI

ptmtlC

六、操作题(2题)

43.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指

的存储单元中。请填空。

#include<conio.h>

#include<stdio.h>

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

{inti;

*k=0;

[1

if(s[*k]<s[i])*k=i;

return[];}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777),k;

fun(a,10,&k);

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

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

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

参考答案

1.22

2.54321

3.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点

(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,

故叶子结点数为18+1=19个。

4.实体联系图或E-R图实体联系图或E-R图解析:实体联系图(B-R图)

是实体联系模型中的核心。由于E-R图描述的是数据流图中数据存储及

其之间的关系,因此它是数据库观念设计的最常用的工具。

5.22解析:'W13':表示八进制数13表示的ASCII字符,是一个字符,

占一个字节;而飞12”是个字符串,除了八进制数12表示的ASCII字符

占一个字节外,还有在字符串的末尾加上串结束标志所以共有2

个字节。

6.ar=9ar=9ar=llar=9ar=9ar=ll解析:本题综合考查了for循环,switch

语句及宏替换等几个知识点。j=3时,执行PR(*(--p));输出数组元素a[4]

的值;j=2时,执行PR(*p++);取出p所指位置的元素a[4],然后p++;

当J=1时,执行PR(*p++);取得是数组元素a[6]的值llo

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

8j++a[j]>a[j]

9.从定义到本源文件结束从定义到本源文件结束解析:C语言规定,宏

名的有效范围为从定义宏到本源程序结束。

10.0

11.D

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

00000011,即十进制数3。

\n

12.D函数原型“fread(void*buffer,sizetsize,sizetcount,FILE*stream)”

的功能是从一个文件流中读数据,读取count个元素,每个元素size字

节。如果调用成功,返回count。buffer用于接收数据的内存地址,大小

至少是size*count字节;size是单个元素的大小,单位是字节;count是

元素的个数,每个元素是size字节;stream是输入流。故本题答案为D

选项。

13.D

在C语言中,字符串常量是用双引号标注的字符序列,因此B选项和

C选项不正确。字符序列中可包含一些转义字符,转义字符以“\\”开

头。A选项中包含3个前两个(\\\\)代表一个“\\”字符,后面一个为

因为被看作一个所以该字符串缺少一个结束的因此

A选项不正确。D选项的两个“”之间没有任何字符,代表的是一个空

串,是合法的字符串常量,因此D选项正确。B选项的abc应该使用

双引号标注。故本题答案为D选项。

14.A解析:本题考查逻辑与运算符&&。在C语言中使用运算符“&&”

连接两个表达式,也可以表示逻辑与运算符。在C语言中不允许出现a

<=b<=c这种格式。

15.D解析:逻辑运算符两侧的运算对象可以是任意合法的表达式。逻辑

表达式的运算结果或者为1(“真”)或者为0(“假”)。

16.D数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放

形式,一种数据结构可以根据需要采用不同的存储结构,用的存储结构

有顺序和链式结构。用不同的存储结构,其处理的效率是不同的。

17.A

解析:光缆是传输多媒体信息的通道,不能用以存储多媒体信息。

18.A

19.D解析:程序第1次执行for循环时,i=0,两条if语句中的表达式

都不成立,执行i++;s+=i;此时i为1,s为1第2次循环,两条if语

句中的表达式也不成立,执行i++,s+=i,此时i为2,s为3;……;当

i=3时,执行continue,结束本轮循环,不执行i++;继续执行下一轮循

环,这样一来i值始终为3,继续continue,无终止条件,进入死循环。

20.CC选项中不能含有逗号,所以“1,234”不能用作C语言程序的合法

常量。B选项表示的是八进制的常量,D选项表示的是十六进制的常量。

故本题答案为C选项。

21.

【考点分析】

本题考查:查找结构体数组中的最小数据,需要通过for循环语句和if

条件语句来完成。

【解题思路】

本题中第一个循环语句的作用是遍历数组求出最低分数,第二个循环

语句的作用是将数组中的元素与最低分比较,查找是否存在与最低分

相等的成绩。

22.

【解析】题目要求不能用C语言提供的字符串函数,可以利用移动字符

串指针来实现,首先移动字符串指针到第一个不是*的位置,通过指针

的移动,来实现把第一个不是星号的字符与最后一个不是星号的字符放

到a数组中,最后用‘'0'来作为字符串结束的标志。

23.

int量帆计位”

while(n/lO)〃料备是否为0,若不为O.bita*1,4

*以10,it修判断

I

bitsx;

n-n/10;

returnbits;【考点分析】主要考察考生对循环

跳出的条件的理解,以及理解取数字位数的方法。【解题思路】通过

对指定的多位数每次除以10,去掉最后一位,直到为。结束,使用临时

变量来统计一个多位数的位数。

24.

【解析】要将字符串str中下标为偶数位置上的字符转化为大写字母,

首先应该判断字符串str中下标为偶数位置上的字符是否为小写字母,

若是将其转化为大写字母.若不是不做任何变化。

25.doublefun(doubleeps)

(

doubles=0.0,sl=1.0;

intn=l;

while(sl>=eps)/*当某项大于精度要求时,继续求下一项*/

{s=s+sl;/*求和*/

sl=sl*n/(2*n+l);

/*求多项式的每一项*/

n++;

)

return2*s;

)

该题考核的是通过迭代法求给定多项式的值。迭代法是让计算机对一组

指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,

都从变量的原值推出它的一个新值。需要注意变量的数据类型和赋初值

操作。

定义double类型变量s,并为其赋初值,用来存放多项式的某一项和

最后的总和。从第2项开始,以后的每一项都是其前面一项乘以

n/(2*n+l)o程序用si来表示每一项,用s表示求和后的结果。需注意

变量si和s的初值都为1.0,因为循环变量从第2项开始累加。

26.

【解析】题目要求把指定范围之外的数放到h中,将每一个学生的成

绩与指定的成绩相比较,将符合条件的学生成绩放在数组b中,并将

符合要求的学生个数返回给主函数。

27.

程序设计题解析:

【考点分析】

本题考查:指针型变最定义;wh丑e循环语句;语句条件

表达式;字符串结束标识

【解题思路】

函数fun的功能:除了字符串前导的*号之外,将串中其他+号全部删

除。

【解答本题】

(1)定义一个临时指针P,初始指向原串首地址;(2)利用循环语句把字

符串前导*号拷贝到原串;(3)继续移动指针,把串中和串尾的非*号字

符拷贝到原串;(4)为修改后的字符串赋结束字符,0\

【解题宝典】

要删除字符串中的指定字符,我们通常采用保留非指定字符的方法。

可以将非指定字符保留在原串,即将需要保留的字符从原串的起始位

置重新赋值;也可以保留到新串,即新建一个字符串,存放要保留的

字符。

28.intfun(char*s)

2;{intn=0;

3char*p;

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

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

6n++;

7retumn;

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

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

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

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

29.1intfun(int*s,intt,int*k)

2{

3Inti;

4*k=0;/*k所指的数是数组的下

5标*/

6for(i=0;i<t;i++)hif(s[*k]<s[i])*k=i;/*找到数组中值最大的元素,把该元

素的下标赋给k所指的数*/

7returns[*k];/*返回数组的最大元素*/

81

<t;i++)

<>本题中使用指针变量k作为值最大的元素的下标。使用时要注意对

k进行指针运算。程序一开始让k指向数组中的第1个元素,即

*k=0o通过for循环与数组各个元素比较,找到最大值。<></t;i++)

30.\nfloataverage(floatarray[],intn)

\n{intI;

\nfloataver,sum=array[0];

\nfor(I=1;Isum=sum+an'ay[I];

\naver=sum/n;

\nreturn(aver);}

\nmain

\n{floatave,score[10];

\nintI;

\nfor(I=0;I<10;I++)

\nscanf('%f,&score[I]);

\nave=average(score,10);

\nprintf('%f\\n',ave);}

\n

31.(1)错误:for(i=j+l;i<n-l;i++)正确:for(i=j+l;i<n;i++)(2)错误:

t=i;正确:p=i;(1)错误:for(i=j+l;i<n-1;i++)正确:for(i=j+l;i<

n;i++)\r\n(2)错误:t=i;正确:p=i;解析:该程序是对n个数实现从

小到大的排序,该题中先是找小输入整数的最小项,置于指针第1个元

素的位置:再找出第2个元素至尾元素的最小项,置于第2个元素的位

置;之后顺次处理后读元素。

32.⑴k++;(2)if(m==k)(l)k++;(2)if(m==k)解析:本题中函数的功能

是判断一个整数n是否是素数。素数是只能被1和本身整除的正整数

(>1),所以判别n是否为素数,只要用2、3.........n-l这些数逐个去除

n,观察余数是否为0即可,只要有一次相除余数为0,n就不是素数,

否则n为素数。

33.(l)voidfun(char*a)(2)printf("%c"*a)

(l)voidfun(char*a)(2)printf("%c",*a),解析:本题中函数的功能

是将字符串中的内容逆序。题干中给出的fun函数通过递归调用自

身,实现字符串的逆序。

34.(1)错误:while(t>=num)正确:while(fabs(t)>=num)(2)错

温馨提示

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

最新文档

评论

0/150

提交评论