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

下载本文档

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

文档简介

2022年湖南省益阳市全国计算机等级考试

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

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

一、2.填空题(10题)

1.以下程序的输出结果是()。#include<stdio.h>voidmain(){intf,

fl,fl,i;fl=0;f2=l;printf("%d%d",fl,f2);for(i=3;i<=5;i++)

{f=-fl+f2,printf("%d",f);f2=fl;fl=f;}printf("\n");}

2.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、

数据结构、数据流和处理过程。

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

main()

{inta[4][4]={{l,2,3,4),{5,6,7.8},{11,12,13.14},{15,

16,17,18}};

inti=0,j=0,s=0;

while(i++<4)

(

if(i==2||i==4)continue;

j=0;

do{S+=a[i][j];j++;}while(j<4);

)

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

)

4.函数voidfun(float*sn,intn)的功能是:根据以下公式计算s,计算

结果通过形参指针sn传回…通过形参传入,n的值大于或等于0。请

填空。

s=§

42xi+1

voidfun(float*sn,intn)

{floats=0.0,w,f=-1.0;

inti;

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

{f=[】*f;

w=f/(2*i+l);

s+=w;

)

【】=S;

}

5.用十六进制给存储器中的字节地址进行编号,其地址编号从0000到

FFFF,则该存储器容量是【】。

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

#include<stdio,h>

main()

{inta,b,c;

a=10;b:20;c=(a%b<1)II(a/b>1);

printf("%d%d%d\n",a,b,c);

)

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

#include<stdio.h>

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

)

main()

{fun(6);}

8.数据库设计分为以下6个设计阶段:需求分析阶段-------逻辑设

计阶段、物理设计阶段、实施阶段、运行和维护阶段。

9.下列程序的输出结果是____o

main()

{chara[]="ABCDEFG";

char*cp=&a[7];

while(—cp>&a[0])putchar(*cp);

)

10.在关系数据库中把数据表示成二维表,每一个二维表称为【】。

二、单选题(10题)

11.设有定义“Charp[]={T,2,3},*q=p;",以下不能计算出一个char

型数据所占字节数的表达式是()。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

12.二叉树的第三层最少有个结点。

A.OB.lC.2D.3

13.已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正

确判断出kk中的值为大写字母的表达式是

A.kk>='A'&&kk<='Z'

B.!(kk>='A'||kk<='Z')

C.(kk+32)>=W&&(kk+32)<=2

D.isalpha(kk)&&(kk<91)

14.折半查找法的查找速度一定比顺序查找法快()。

A.正确B.错误

15.程序运行后的输出结果是()。

]社inchide<stdio.h>

mainO

{

intb[3][3]={0Il,2s0;ls2J0sL2},i,j,t=h

fbr(i=O;i<3;i++)

fbr(j=i;j<=i;j++)t+=b[i][b[j][i]];

printfr^6dn",t);

}

A.3B.4C.1D.9

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

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

17.在下面栈的基本运算中,不是加工型运算的是

A.初始化B.进栈C.退栈D.判栈空

18.若有以下定义和语句:

chars[10]="abcd!%*s2="\nl23\\";

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

则输出结果是()。

A.55B.105C.107D.58

19.以下叙述中正确的是()。

A.C程序中注释部分可以出现在程序中任意合适的地方

B.花括号"(“和只能作为函数体的定界符

C.构成C程序的基本单位是函数,所有函数名都可以由用户命名

D.分号是C语句之间的分隔符,不是语句的一部分

20.

(40)已知一个文件中存放若干工人档案记录,其数据结构如下:

structa.・

{charnumber[100];

intage;

floatp[6];);

定义一个数组:structanumber[10];

假定文件己正确打开,不能正确地从文件中读入10名工人数据到数组b中的是()o

A)fread(b,sizeofl[structa),10,fp);B)fbr(i=0;i<10;i-H-)

fread(b[i],sizeof(structa),l,fp);

C)fbr(i=0;i<10;i+4-)D)fbr(i=O;i<5;i-»-=2)

frcad(b+i,sizcof{structa),l,fp);fread(b+i9sezeof(stnicta),2,fp);

三、程序设计题(10题)

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

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

其功能是找出一维整型数组元素中最大的值及其所在的下标,并通过形

参传回。数组元素中的值已在主函数中赋予。

主函数中x是数组名,n表示x中的元素个数,max存放最大值,

index存放最大值所在元素的下标。

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

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

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

试题程序:

#include<time.h>

#include<stdlib.h>

#include<stdio.h>

voidfun(inta[],intn,int*max,int*d)

(

}

voidmain()

(

inti,x[20],max,index,n=10;

srand((unsigned)time(NULL));

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

(

x[i]=rand()%50;

printfC4%4d”,x[i]);

/*输出一个随机数组*/

printf(n\nH);

fun(xfnf&max,&index);

printf("Max=%5d,Index=%4d\n”,max,index);

)

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

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

fun(),它的功能是求小于形参n同时能被3与7整除的所有自然数之

和的平方根,并将其作为函数值返回。例如,若n为1000时,程序输

出应为s=153.909064。注意:部分源程序在文件progl.c中。请勿改动

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

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

1#include<math.h>

2tinclude<stdio.h>

3doublefun(intn)

4{

5

靠}

7main()/*主函数♦/

8{voidNONO();

w

9printf("s»%f\nrfun(1000));

10NONO();

篡)

12voidNONO()

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

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

FILE*fp,*wf;

inti,n;

doubles;

fp■fopen(win.datn,wrw);

18wf=fopen(Mout.datn,Hww);

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

20fscanf(fpr,•%d",&n);

21s=fun(n);

22fprintf(wf,n%f\n",s);

23)

24fclose(fp);

25fclose(wf);

26

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

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

其功能是将s所指字符串中除了下标为奇数同时ASCII值也为奇数的字

符之外的其余所有字符全部删除,字符串中剩余字符所形成的一个新字

符串存放在t所指的数组中。

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

ASCII值为奇数,但所在元素的下标为偶数,因此需要删除;而字符1

的ASCII值为奇数,所在数组中的下标也为奇数,因此不应当删除,

其他依此类推。最后t所指数组中的内容应为“135”。

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

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(char*s,chart[])

(

)

main()

{

chars[100],t[100];

printf("\nPleaseenterstrings:");

scanfs);

fun(s,t);

printf("\nTheresultis:%

)

24.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1+1

/2)+(1/3+1/4)+...+(1/(2n-l)+1/2n)例如,若输入10,

则输出为S=3.5977400n的值要求大于1但不大于100。注意:部分

源程序给出如下。请勿改动函数main()和其他函数中的任何内容,

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

夕includehj>

doubleproHintn)

iniBI

double

prmifcnt

•mproc<n)t

prmtfC**>)>

25.请编写一个函数proc,它的功能是:求出1〜m(含m)能被7或11

整除的所有整数放在数组a中,通过n返回这些数的个数。

例如,若传给m的值为70,则程序输出:

7111421222833354244495556636670

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

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidproc(intm,int*a,int*n)

{

}

voidmain

(

intarr[N],n,k;

system("CLS");

proc(70,arr,&n);

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

if((k+l)%20==0)//每行输出20个数

{printf("%4d",arr[k]);

printf("\n");

)

else

printf("%4d",arr[k]);

printf("\n");

)

26.请编写函数proc,该函数的功能是:将M行N列的二维数组中的

数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放

在形参n所指的存储单元中。

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

13233343

14243444

15253545

则一维数组中的内容应该是132333431424344415253545。

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

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

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

试题程序:

#include<stdio.h>

voidproc(int(*s)[103,int*b,int*n,intrain,intnn)

(

)

voidmain

{

intarr[10][10]={{33,33,33,33),{44,44,44,44},

{55,55,55,55}),i,j;

inta[100]={o),n=o;

printf("Thematrix:\n");

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

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

printf("%3d",arr[i][j]):

printf("\n");

)

proc(arr,a,&n,3,4):

printf("TheAarray:\n");

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

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

printf("\n\n");

)

27.

请编写一个函数voidproc(chara[],charbE3,intn),其功能是:删除

一个字符串中指定下标的字符。其中,a指向原字符串,删除后的字符

串存放在b所指的数组中,n中存放指定的下标。例如,输入一个字符

串student,然后输入5,则调用该函数后的结果为studet。注意:部分

源程序给出如下。请勿改动main()函数和其他函数中的任何内容,

仅在函数proc的花括号中填入所编写的若干语句。试题程序:

#includeVstdlib.h>

#include<stdio.h>

#include<conio.h>

5defineN20

voidproc(chara[].charb[].intn)

voidmain()

charstr![N].str2[Nji

intn।

xystemC**C1-S*,)i

printf("Enterthesiring:\n")i

gets(strl)t

printf(*Enterthepositionofthestringdeleted:

*>I

scan!&n>i

proc(strl•»1r2an)i

print!("Thenewstringis*%*\n".sir2>i

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

置。例如,字符串中原有的字符串为asdfg,则调用该函数后,串中的

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

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

•Mtcludc<Mmg.

.MKUKWh2>

•ifirlvdr<M4KXk>

■Mm*NIM

voidItmCcliar•MY>

NMMI<)

HMM«N].

FILE•<nrti

pciiith*EIN«T•Mrwg••,.

pnatlc*TWongwoi3vwg..*>j

,i“s

pmn{<-TWvtracafwrwAf.%*>g

pvt»<a)a

•ircpy<a.*W«IRMB»!->a

l«M<a>i

Out■*fopettl4atW)i

(pciatf(ovi«0M»*»a)s

29.

请编写一个函数,用来删除字符串中的所有空格。

例如,输入asdafaaz67,则输出为asdafaaz67o

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

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

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

试题程序:

/iwlude<stdiA.h>

#include<ctype.h>

#hiclude<conio.h>

vodfun(char*str)

}(

main。

fcharstr[81];

charMsgf]=°Inputastring:T,;

intn;

printf(Msg);gftt5(str);puts(atr);fun(str);

printfC****str:%&\nM,str);

I,

30.请编一个函数intfun(inta),它的功能是:判断a是否是素数,若a是

素数,返回1;若不是素数,返回0°A的值由主函数从键盘读入。

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

31.下列给定程序中函数fun()的功能是:计算n!。例如,给n输入5,

则输出120.000000。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

doublefun(intn)

{doubleresult=1.0;

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

ifn==0

return1.0;

while(n>l&&n<170)

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

result*=n—

returnresult;

)

main()

{intn;

printf("InputN:");

scanf("%d"&n);

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

)

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

写字母F。

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

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

试题程序:

#include<stdio.h>

voidfun(char*s)

inti,j;

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

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

if(s[i]!=F)

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

s[j]=s[i];

sU]='\O';

)

main()

chars[80];

printf("\nEnterastring:");

gets(s);

printf("Theoriginalstring:");

puts(s);

fun(s);

printf("Thestringafterdeleted:");

puts(s);

printf("\n\n");

)

33.给定程序中,函数fun()的功能是:使数组中的元素的值增加10倍。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

ihtm[10];

voidfun(void)

(

intj;

printf("Insubfuncaftercalling\n");

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

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

printf("%3d",m[j]*10);

)

)

main()

{inti;

printf("Inmainbeforecalling\n");

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

m[i]=i;

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

fun();

printf("\nlnmainaftercalling\n");

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

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

getch();

)

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

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

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

它能得出正确的结果。

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

1♦include<stdio.h>

2finclude〈string.h>

3voidfun()

4(

5inta[3][3]rsum;

6intj;

7

8

9printf("Inputdata:w);

10for(i-0;i<3;i+*)

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

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

wR

13scanf(%dra[i](jj);

14

15for(i,0;i<3;

16sum-sum*a(i)[i];

w,t

17printf(Sum-%d\nrsum);

18

19main()

20

21fun();

22

35.给定程序MODII.C中函数fun的功能是:把主函数中输入的3个

数,最大的放在a中,最小的放在c中,中间的放在b中。

例如,输入的数为:551234,输出结果应当是:a=55.0,b=34.0,

c=12.0o

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

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

linclude<stdio.h>

2voidfun(float*arfloat*b#float*c)

3(

4/**********found***♦W♦*♦♦♦/

5float*k;

6if(*a<*b)

7{k«*a;*a-*b;*b«k;}

8/*****w****found******w***/

9if(*a>*c)

10{k-*c;*c»wa;*a-k;)

11if(*b<*c)

12{k-wb;*b-*c;*c-k;}

13)

14main()

15{floata,b,c;

16printf("Inputabc:R);scanf

《“mm&br«c);

w

17printf(a-%4.Ifrb-%4.If,c

H

-%4.1f\n\nra,b,c);

18fun(&a,&b,;

19printf(wa=%4.If,b■%4.If,c

-%4.1f\n\n"rarbrc);

20

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

换为按字母序列的后续字母(但Z转化为A,z转化为a),其他字符不

又O

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

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

试题程序:

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

voidfun(char*s)

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

{while(*s!='@')

{if(*s>='A'&*s<='z'||*s>='a'&&*s<='z')

{if(*s=='Z')*S='A';

elseif(*S=='z')*s-a';

else*s+=l;

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

(*s)++;

)

main()

{chars[80];

clrscr();

printf("\nEnterastringwithlength<80:\n\n");gets(s);

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

fun(s);

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

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

如下公式的值。

V=-----------+------------+------------

lOO♦lOO200♦200300・300ni'm

例如,若m=2000,则应输出:0.000160。

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

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

1finclude<stdio.h>

/…………found…………

3fun(intm)

4(doubley0,d

5inti;

6/…………found…………/

7for(i,100,i<«mri+=100)

8(d«(double)i*(double)i;

9yl.0/d;

10

11return(y);

12

13main()

14(intn=2000;

15printf("\nTheresultis%lf\n",

fun(n));

16}

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

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

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

试题程序;

main()

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

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

longn;

printf("Enteranumberin'');

scanf("%ld",&n);

do{

/*****************f^ound****************/

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

while(n!=0);

printf("Transmitenewbase:\n");

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

/***************'^Qurid*******************/

{d=c[i];printf("%c",b..);)

printf("\n");

39.给定程序中,函数fun()的功能是:使数组中的元素的值缩小5倍。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

floatm[10];

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

intfun(void)

(

intj;

printf("Insubfuncaftercalling\n");

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

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

print("%f",m[j]%5);

)

main()

inti;

printf("Inmainbeforecalling\n");

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

(

m[i]=i+20;

printf("%f",m[i]);

)

fun();

printf("\nlnmainaftercalling\n");

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

printf("%f",m[i]/5);

40.下列给定程序中函数fun()的功能是;从低位开始取出长整型变量s

中奇数位上的数,依次构成一个新数放在t中。例如,当s中的数为

4576235时,t中的数为4725。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

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

intfun(longS,long*t)

longsi=10;

*tiS%10;

while(s>0)

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

s=s%100;

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

sl=sl*10;

)

)

main()

(

longS,t;

clrscr();

printf("\nPIeaseenterS:");

scanf("%ld”,&s);

fun(S,&t);

printR'Theresultis:%ld\n",t);

)

五、程序改错题(2题)

41.下列给定程序中,函数ptoc的功能是:利用插入排序法对字符串

中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字

符串中的头两个元素进行排序,然后把第3个字符插入前两个字符

中,插入后前3个字符依然有序;再把第4个字符插入前三个字符

中,待排序的字符串已

在主函数中赋予。

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

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

构。

试题程序:

#include<strin9.h>

#include<stdiO.h>

#defineM80

voidproc(char*arr)

{inti,j,n;charch;

n=strlen(arr):

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

//****found****

{c=arr[i];

j=i-l;

while((j>=o)&&(ch<arr[j]))

(

arr[j+l]=arr[j];

j-;

)

arr[j+l]=ch;

)

)

voidmain

(

chara[Ml="QWERTYUIOPASDFGHJKLMNBVCXZ";

printf("Theoriginalstring:%s'n”,a);

proc(a);

printf("Thestringaftersortin9:

%s\n\n",a);

42.下列给定的程序中,函数proc()的功能是:计算并输出k以内最大

的10个能被15或18整除的自然数之和,k的值由主函数传人。若k

的值为800,则函数的值为7605。

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

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

构。

试题程序:

giurludcVcodio.h>

giticludr<sldUKh>

mtprodmtk)

■m-<>♦ji

WX(卜>Id

//••••found••»•

k——•

//••••••••

returnmi

)

voidmmnC>

(

»ynteni(*CLS-)i

pnfid<eMd\ft•.proe《800》>,

六、操作题(2题)

43.下列给定程序的功能是:读入一个整数n(2<=n<=5000),打印

它的所有为素数的因子。例如,若输入整数1234,则应输出:2,

6170

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

注意:不要改动main函数,不能增选或删行,也不能匿改程序的结

构。

试题程序:

#include<conio.h>

#include<stdio.h>

//****found****

Prime(intm);

(

intj,P;

p=l;

〃****found****

for(j=2;j++)

if!(m%j)

(

p=0;

break;

)

retum(p);

inti,n;

printf("\npleaseenteranintegernumberbetween2

and5000:");

scanf("%d",&n);

printf("\n\nTheprimefactor(s)of%dis(are):",n):

for(i=2;i<n;i4+)

if((!(n%i))&&(Prime(i)))

printf("%4d,",i);

printf("\n");

)

44.请编一个函数voidproc(intttEM][N],intpp[N]),tt指向一"个M行

N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指

的一维数组中。二维数组中的数已在主函数中给出。

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

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#defineM3

#defineN4

voidproc(intttrM3rN]。intpp[N])

voidmain

intstr[M][Nl={{34,56,84,78},

{23,84,93,12),

{28,38,39,93}};

intp[Nl,i,j,k;

systemC'CLS");

printf("Theriginaldatais:\n");

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

(

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

printf("%6d",str口皿);

printf("\n");

)

proc(str,p);

printf("\nTheresultis:\n");for(k=0:k<M;k++)

printf("%4d",p[k]);

printfC'n");)

参考答案

1.0111201112解析:在主函数中定义了整型变量fl和f2,并把其值

赋为。和1,在屏幕上输出。然后在第一次运行for循环语句时,变量f

的值等于1,把其值输出,把变量fl的值。赋给变量位,变量f的值1

赋给n,在执行第二次for循环语句时,变量f的值等于1,把此值输出。

然后再把变量fl的值1赋给变量f2,变量f的值1赋给fl,在执行第

三次for循环语句时,变量f的值等于2,把此值输出。所以程序运行后

的结果为。1112。

2.数据存储数据存储

3.9292解析:本题的主函数中首先定义了一个4行4列的二维数组,然

后执行一个while循环,该循环中又嵌套了一个do-while循环。先看

while循环,该循环通过i++的值来判断是否结束循环,当i++的值为4

的时候结束循环,当i=0时,执行while的循环体,显然if语句条件不

满足不执行,接着让j=0,然后执行do-while循环体,不难看出do-while

循环的功能是将第i+1行的所有元素加起来,所以这时s的值为

s=a[l][0]+a[l][l]+a[l][2]+a[l][3]=26^i=j±i+l=2,if后面括号里的

表达式的值为真执行后面的continue语句,结束该次循环;当i=2时,

i加1变为3,把第3+1行的所有元素的值加到s上,此时

s=s+a⑵[0]+a[2][l]+a⑵⑵+a[2][3]=92,当i=3时,3+1=4,if后面括号里

的表达式的值为真执行后面的continue语句,结束该次循环,当i=3时,

if后面括号里的表达式的值为真执行后面的continue语句,结束该次循

环当i=4时while循环结束,所以最后输出的s的值为92o

4.-1*sn-1*sn解析:根据公式可知,第一处应填-1;由于计算结果要

通过形参指针sn传回,所以第二处应填*sn。

5.64KB

6.1020010200解析:程序中(a%b<l)||(a/b>1)的运算顺序为先算括号

一算术运算符一关系运算符t逻辑运算符。首先计算a%b=10,a/b=O,

因为a%b<l为假(0),a/b>l也为假(0),所以整个表达式的结果为假

(0),最后输出a,b,c的值为10200。

7.136136解析:程序中定义了一个递归调用函数fun。程序运行时,

先把实参6传给形参。if语句中6/2>0成立,执行fun(x/2),即fun(3),

同时输出x的值6;再判断if条件,3/2>0成立,再执行fun(x/2),即

fun(l),同时输出x的值3;此时1/2>0不再成立,输出1。而递归调用

的输出顺序是相反的,故输出结果为136。

8.概念设计阶段(数据库概念设计阶段)概念设计阶段(数据库概念设计阶

段)

9.GFEDCB。GFEDCBO解析:开始指针cp指向字符串结束标志,在

循环中,cp依次向前移动,当打印出第二个字符后,cp指向第一个字

符,循环判断条件不满足,退出循环,因此,只打印出第一个字符以后

的字符的逆序列。

10.关系或一个关系关系或一个关系解析:在关系数据库中,把数据表

示成二维表,而一个二维表就是一个关系。

11.A

根据题目中的定义可知,“sizeof(p)”计算的是数组p中所有元素所占用

的字节数,而不是char型数据所占的字节数。故本题答案为A选项。

12.B

13.B解析:C语言的字符以其ASCII码的形式存在,所以要确定某个字

符是大写字母,只要确定它的ASCII码在A和Z之间就可以了,选项A)和

C)符合要求。函数isalpha用来确定一个字符是否为字母,大写字母的

ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那

么就能确定它是大写字母。

14.B

15.B

[解析]每次内循环只循环一-次就结束,第一次外循环时t=t+b[][0][]=

l+b[0][0]=1+0=1;第二次外循环时t=t+b[l][b[l][l]]=l+b[l][l]=l+l=2;

第三次外循环时t=t+b[][2][]=2+b⑵⑵=2+2=40

16.A

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

17.D

18.A

\\n和\\\\分别为转义字符,各占据一个字符的位置。

19.A解析:/*与*/之间的信息称为注释信息,在C语言中,允许在任何

能够插入空格符的位置插入注释,但C语言的注释不能进行嵌套,故选

项A正确:在C语言中,函数体是从花括号{开始,到花括号}结束。但

没有规定花括号{和}只能作为函数体定界符,故选项B错误;选项C中

前半句是正确的,C程序由一个或多个函数所组成,但不是所有的函数

都由用户自己命名,有些函数,比如主函数main()就不能由用户来命名,

故选C不正确;在©语言中明确规定每条语句以分号;结束,分号是语

句不可缺少的一部分,故选项D不正确。所以,4个选项中选项A符合

题意。

20.B

21.voidfun(inta[],intn,int*max,int*d)

int1;

*max=a[0];

*d=0;

l;i<=""p="">

(

i/f*max<a[i])

max=a[i];*d=i;}

fun()函数形参max用来存放最大值,形参d用来存放最大值的下标。由

于它们都是指针变量,因此在引用所指向的变量时,要进行指针运算。

循环语句用来遍历数组元素,找出最大值。条件语句用来判断该数组元

素是否最大。

22.1doublefun(intn)

doublesum=0.0;inti;

for(i=21;i<=n;i++)if((i%3==0)&&(i%7==0))sum+=i;

retumsqrt(sum);

本题考查算术运算的算法。首先利用一个for循环判断小于n且能同时

被3和7整除的整数,并将满足条件的整数累加到sum。之后调用

Sqrt()函数计算sum的平方根,并将其作为函数的返回值返回。

23.voidfun(char*s,chart[])

{

inti,j=0,n;

n=strlen(s);

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

if((i%2)&&(s[i]%2))

(

t[j++]=s[i];/*将下标为奇数同时ASCII值为奇数的字符放入数组

t中*/

}

中]='\。';/*最后加上字符串结束标志*/

本题要求保留下标为奇数同时ASCII值也为奇数的字符,其余的所有字

符都删除。将S字符串中,满足条件的字符存放到字符串t中。if的条

件表达式为:if(i%2!=0&&s[i]%2!=0)o

24.

【解析】首先定义一个变量来存放表达式的和,根据题目中提供的多项

式,通过n次循环来求出n项的和。最后把所求得的和返回到主函数当

中。

25.\n\tvoidproc(intm,int*a,int*n)

\n{

\ninti,j=0;

\nfor(i=l;i<=m;i++)//进行m次循环

\nif(i%7==0||i%U==0)//能被7或11整除的所有整数

\na[j++]=i;//符合条件的数放在数组a中

\n*n=j;//返回这些数的个数

\n}

\n【解析】本题需要先判断1〜m每一个整数能否被7或11整除,然

后将符合条件的整数放在数组a中,最后将符合条件的数的个数通过

形参n返回主函数。\n

26.\r\n\tvoidproc(int(*s)[10],int*b,int*n,intmm,intnn)

(

inti,j,k=0;

for(i=0;i<mm;i++)//i是表示其行的下标

for(j=0;j<nn;j++)//j是表示其列的下标

b[k++]=s[i][j];//把其放到b的一维数组中

*n=k;//把b数组的长度通过形参n传回到主函数中

)

【解析】要将M行N列的二维数组中的数据,按行的顺序依次放到一

维数组中,可以通过首先行循环,然后列循环取出二维数组中的每一

个元素,并将其放入一维数组中。最后,将一维数组的长度通过形参

返回到主函数当中。

27.

【解析】按照题目中的要求,删除一个字符串中指定下标的字符。首先,

将指定下标之前的字符放入字符数组b中,然后将指定下标之后的字符

也放入字符数组b中,最后为新的字符数组b添加结束符。

28.

【解析】在fun()函数中,首先求行字符串的长度,然后通过循环进行字

符交换。要注意的是,如果字符串长度是奇数,则最中间的元素在逆置

前后的位置是没有改变的。

29.[答案]

voidfiin(char♦str)

{inti=0;

char*p=?str;

while(*p『遍历字符串♦/

.

{

/*如果当前元素不为空格*/

即p!二

{••

/*将当前元素保存到西中*/

sti(ij=*p;

i++;

)

P++;

}

6用尸\0V*字符串最后加上结束标记符M力

)

[解析]

题目要求删除空格,也就是重新保存空格以外的其他字符。通过循环删

除字符串中的每一个空格,将非空格字符进行重新保存。

30.\n#include"stdio.h"

\nintfun(inta)

\n{intI;

\nif(a==2)return1;1=2;

\nwhile((a%I)!=OI<=sqrt((float)a))

\nl++;

\nif(a%I==O)

\n{printf("%disnotaprime!,5,a);

\nretum0;}

\nprintf(t4%disaprime!,5,a);

\nretum1;}

\nmain

\n{intx;

\nprintf("\\npleaseenteranumber:^^);

\nscanf("%d",&x);

\nprintf("%d\\n”,ftm(x));}

\n

31.(1)错误:ifn==0正确:if(n==0)⑵错误:result*=n—正确:result*=n-

-;(1)错误:ifn==0正确:if(n==0)\r\n(2)错误:result*=n—正确:result*=n-

-;解析:在做这道题之前,我们首先应该明白一个数学上的概念,一

般判卷人员先要执行程序,如果结果正确,得满分,否则错一个扣分,

再错再扣,本题考查5!即51=5x4x3x2x1=120,要求输出double型结

果。

32.(1)错误:for(i=j=0;s[i]!='0';i++)正确:for(i=j=0;s[i]!'\0';i++)(2)错误:

s[j]=s[i]正确:s[j++]=s[i];⑴错误:for(i=j=0;s[i]!=O升+)正确:

for(i=j=0;s[i]!'\\01;i++)\r\n(2)错误:s|j]=s[i]正确:s[j++]=s[i];解析:错

误1:本题考查是否掌握字符串的最后一个字符是结束标志符错误

2:在循环中,新字符串的下标也要递增,这样最终产生一个新的字符

串。

33.错误:printf("%3d"m[j]*10);正确:printf("%3d"m[j]=m[j]*10错误:

printf('%3d'm[j]*10);正确:printf(%3cf解析:本题考查

全局变量相关知识。该题程序中的fun()没有参数输入,但数组皿⑼为

全局变量,故可在fun()函数中使用,fun()函数对数组m的操作可以反

映到主函数的输出结果中。

34.(l)sum=0(2)scanfr%d,,&a[i][j]);(l)sum=O(2)scanf(“%d,“,&

a[i][j]);解析:该题中函数功能是计算元素的和。从已给定源程序的

main主函数开始入手,然后通过“fUn();”语句调用fun函数的功能。

35.(l)floatk;(2)if(*a<*c)(l)floatk;(2)if(*a<*c)解析:本题中函数

的功能是把主函数中输入的3个数,最大的放在a中,最小的放在c中。

对三个数进行两两比较,实现函数功能。

36.⑴错误:whil

温馨提示

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

评论

0/150

提交评论