2021-2022年海南省三亚市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021-2022年海南省三亚市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021-2022年海南省三亚市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021-2022年海南省三亚市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021-2022年海南省三亚市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年海南省三亚市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10;x.c[1]==1;printf("\n%d",x.i);}

A.266B.11C.265D.138

2.下列程序的输出结果是()。voidfun(int*X,inty){printf("%d%d",*x,*y);*x=3;*y=1;}main{intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}A.2143B.1212C.1234D.2112

3.数据结构通常是研究数据的及它们之间的联系______。A.存储和逻辑结构B.存储和抽象C.理想和抽象D.理想与逻辑

4.有以下程序:#include<stdio.h>voidf1(char*a,charb){charc;c=*a;*a=b;b=c;}voidf2(chara,charb){charc;c=a;a=b;b=c;}voidf3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}main(){chart1,t2;t1=‘A’;t2=‘B’;f3(&t1,&t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f2(t1,t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f1(&t1,t2);putchar(t1);putchar(t2);printf(“\n”);}程序运行后的输出结果是()。

A.ABBABBB.BAABBBC.BABABAD.BABAAB

5.

6.向堆中插入一个元素的时间复杂度为________。

A.O(log2n)B.O(n)C.O(1)D.O(nlog2n)

7.若执行以下程序时从键盘上输入9,则输出结果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8

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

#include<stdio.h>

main()

{iuta=2,b=3,p;

p=f(a,B)

printf("%d",p);

}

intf(a,b)

{intc;

if(a>B)c=1;

e1Seif(a==B)c=0;

else(3=-1;

return(C);

}

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

9.有以下程序.#include<stdio.h>main{charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar;c6=getchar;putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,若从键盘输入(从第l列开始)123<回车>45678<回车>程序运行后,若从键盘输入(从第l列开始)123<回车>45678<回车>则输出结果是()。A.1267B.1256C.1278D.1245

10.以下能正确定义一维数组的选项是()。

A.inta[5]=(0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A','B','C'};

D.inta[5]="0123";

11.已定义以下函数fun(char*p2,char*p1){while((*p2=*p1)!='0'){P1++;p2++;}}函数的功能是

A.将p1所指字符串复制到p2所指内存空间

B.将P1所指字符串的地址赋给指针p2

C.对p1和p2两个指针所指字符串进行比较

D.检查P1和p2两个指针所指字符串中是否有'\0'

12.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是()

A.cedbAB.acbeDC.decaBD.deabC

13.若要用函数fopen打开一个新的二进制文件,该文件要既能读也能写,则应以哪种方式打开文件()。

A.wbB.wb+C.rb+D.rb

14.有以下程序:#include<stdio.h>intfun(intX,inty){if(X!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf("%d/n",fun(2*a,fun(b,c)));}程序运行后的输入结果是()。A.3B.6C.8D.12

15.以下与数学表达式“0<x<5且x≠2”不等价的C语言逻辑表达式是()。

A.(0<x<5)&&(x!=2)

B.0<x&&x<5&&x!=2

C.x>0&&x<5&&x!=2

D.(x>0&&x<2)||(x>2&&x<5)

16.下面关于线性表的叙述中,错误的是()。

A.线性表采用顺序存储,必须占用一片连续的存储单元

B.线性表采用顺序存储,便于进行插入和删除操作

C.线性表采用链接存储,不必占用一片连续的存储单元

D.线性表采用链接存储,便于插入和删除操作

17.以下不合法的数值常量是()。

A.8.0E0.5B.1e1C.011D.0xabcd

18.以下程序的功能是()。#include<stdio.h>main(){FILE*fPl;*fp2;fp1:fopen("file1","r");fp2:fopen("file2","w");while(!Feof(fP1))fputc(fgetc(fP1),fp2);fclose(fP1);fclose(fp2);}

A.将磁盘文件的内容显示在屏幕上

B.将两个磁盘文件合为一个

C.将一个磁盘文件复制到另一个磁盘文件中

D.将两个磁盘文件合并后送屏幕

19.下列程序的输出结果是______。#include<stdio.h>main(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf("%d\n",d*y);}

A.3B.3.2C.0D.3.07

20.排序方法中,从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为()。

A.希尔排序B.冒泡排序C.插入排序D.选择排序

二、2.填空题(20题)21.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

22.软件测试分为白箱(盒)测试和黑箱(盒)测试。基本路径测试方法属于()测试。

23.一棵二叉树第六层(根结点为第一层)的结点数最多为______个。

24.在计算机软件系统的体系结构中,数据库管理系统位于用户和【】之间。

25.以下函数把b字符串连到a字符串的后面,并返回a中新字符串的长度,请填空。

strcen(chara[],charb[])

{

intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;}

returnnum;

}

26.设有定义:

struct{inta;floatb;charc;}abc;*p_abc=&abc;

则对结构体成员a的引用方法可以是abc.a和p_abc【】a。

27.下列程序的输出结果是______。

longfun5(intn)

(longs;

if((n==l)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

28.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。

29.与结构化需求分析方法相对应的是【】方法。

30.下述函数统计—个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】;}

31.()是指用户的应用程序与数据库的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变了,用户程序也可以不变。

32.执行以下程序后,输出#号的个数是【】。

#include<stdio.h>

main()

{inti,j;

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

for(j=2;j<=i;j++)putchar('#');

}

33.在软件开发中,结构化方法包括结构化分析方法、结构化设计方法和结构化程序设计方法。详细设计阶段所采用的是【】方法。

34.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下:

1

11

121

1331

14641

其构成规律是,第0列元素和主对角线元素均为1,其余元素为其左上方和正上方元素之和,数据的个数每行递增1。请将程序补充完整。

#defintN6

voidYangHui(int*[N][N])

{

inti,j;

x[0][0]=1

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

{

x[i][0]=【】=1

for(j=1;j<i;j++)

x[i][j]=【】;

}

}

35.在面向对象的方法中,______描述的是具有相似属性与操作的一组对象。

36.在Windows环境下,可以利用单击、双击、拖动这三种鼠标操作之一的【】操作实现窗口的移动。

37.以下程序的输出结果是______。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

}

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

38.执行下面程序段时输出suet,请填空。

main()

{staticchara[]="student";

char*p;

for(p=a;p<【】;p+=2)

putchar(*p);

}

39.设有定义“stmct{inta;floatb;charc}abc,*p_abc=&abc;”,则对结构体成员a的引用方法可以是abc.a和p_abc______。

40.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。

#include<stdio.h>

main()

{inti,j;

for(i=0【】;i++)

{j=i*10+6;

if(【】)continue;

printf("%d",j);

}

}

三、1.选择题(20题)41.语句int(*ptr)()的含义是()。

A.ptr是一个返回值是int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向血型数据的指针

42.设有以下语句:charstrl[]="string",str2[8],*str,*str4="string";则______不是对库函数的正确调用。

A.strcpy(strl,"HELLO1");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLO3");

D.strcpy(str4,"HELLO4");

43.下列程序的输出结果是()。point(char*pt);main(){charb[4]={'a','c','s','f},*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}

A.sB.cC.fD.a

44.有以下程序:main(){intx=0,y=0,i;for(i=1;++i){if(i%2==0){x++;continue;}if(i%5==0){y++;break;}}printf("%d,%d",x,y);}程序的输出结果是()。

A.2,1B.2,2C.2,5D.5,2

45.fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是______。

A.只读B.追加C.读或读写D.以上均正确

46.有以下程序main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)‖(m=a<b);printf("%d,%d\n",k,m);}程序运行后的输出结果是

A.0,0B.0,1C.1,0D.1,1

47.开发软件时对提高开发人员工作效率至关重要的是()

A.操作系统的资源管理功能B.先进的软件开发工具和环境C.程序人员的数量D.计算机的并行处理能力

48.关系表中的每一行记录称为一个()。

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

49.请读程序:#include<stdio.h>main(){inta=5,b=7,c=9;pintf("%d,%d,"a,b,C);printf("%d,%d",a,D);}上面程序的输出结果是_______。

A.5,7,9,5,7B.5,7,5,7C.5,7,不定7,9D.5,7,5,7,不定

50.按照“先进先出”组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

51.有以下程序fun(intx){intp;if(x==0‖x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7));}执行后的输出结果是

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

52.请选出正确的程序段______。

A.int*pscanf(""%d"",p);……

B.int*s,k;*s=100;……

C.int*s,k;char*p,c;s=&k;p=&c;*p='a';……

D.int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;……

53.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

54.已知inta=2,b=3;则执行表达式a=a<b后,变量a的值为()。

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

55.下列描述中正确的是()。

A.程序就是软件

B.软件开发不受计算机系统的限制

C.软件既是逻辑实体,又是物理实体

D.软件是程序、数据与相关文档的集合

56.有以下程序

main()

{inti,s=1;

for(i=1;i<50;i++)

if(!(i%5)&&!(i%3))s+=i;

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

程序的输出结果是

A.409B.277C.1D.91

57.以下程序的运行结果为______。main(){inti,f1,f2;f1=f2=1;for(i=0;i<4;i++){printf("%d%d",f1,f2);f1+=f2;f2+=f1;}}

A.1123581321

B.1122551010

C.1258981321

D.0112451521

58.有以下程序#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen(“d1.dat”,“w”);fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”,j);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d%d”,&k,&n);printf(“%d%d\n”,k,n);fclose(fp);}程序运行后的输出结果是

A.2030B.2050C.3050D.3020

59.下列字符数组初始化语句中,不正确的是()。

A.charc[]='goodmorning';

B.char,c[20]="goodmoming";

C.charc[]={'a','b','c','d'};

D.charc[]={"goodmoming"};

60.下列叙述中正确的是()。A.算法的效率只与问题的规模有关,而与数据的存储结构无关

B.算法的时间复杂度是指执行算法所需要的计算工作量

C.数据的逻辑结构与存储结构是一一对应的

D.算法的时间复杂度与空间复杂度一定相关

四、选择题(20题)61.

有以下程序:

main

{inta=0,b=0;

a=10;/*给a赋值

b=20;给b赋值*/

printf("a+b=%d\n",a+b);//输出计算机结果

}

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

A.a+b=10B.a+b=30C.30D.出错

62.

则下面对m数组元素的引用中错误的是()。

A.

B.

C.

D.

63.有以下程序:

执行后输出结果是()。

A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday

64.

65.

66.

67.有下列程序:

main

{inty=10;

do{y--;}while(--y);

printf("%d\n",--y);

)

当执行程序时,输出的结果是()。

A.-1B.1C.4D.0

68.

有下列程序:

intfun(intn)

{if(n==1)}return1;

else

return(n+fun(n-1));

}

main

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x);

)

执行程序时,给变量x输入10,程序的输出结果是()。

A.55B.54C.65D.45

69.

70.若有定义语句:“intx=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为()。A.1.9B.1C.2D.2.4

71.

72.

73.

74.下面程序的输出结果是()。

main()

{inta,b;

scanf("%2d%3d",&a,&b);

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

}

A.a=12b=34

B.a=123b=45

C.a=12b=345

D.语句有错误

75.以下叙述中错误的是()。

A.用户所定义的标识符允许使用关键字

B.用户所定义的标识符应尽量做到“见名识意”

C.用户所定义的标识符中,大、小写字母代表不同标识

D.用户所定义的标识符必须以字母或下划线开头

76.若变量a、i已正确定义,且i已正确赋值,合法的语句是()。

A.a==lB.++iC.a=a++=5D.a=int(i)

77.

78.

79.合法的main函数命令参数形式是()。

A.main(inta,char*c[])

B.main(intarc,char**arv)

C.main(intargc,char*argv)

D.main(intargv,char*argc[])

80.

有以下程序:

main

{inti,n=0:

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

{do

{if(i%3)continue:

n++:

}while(!i);

n++:

}

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

}

程序执行后输出结果是()。

A.n=5B.n=2C.n=3D.n=4

五、程序改错题(1题)81.下列给定程序中,函数proc()的作用是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。

例如,若输入“I,anl,A,Student”,则输出“i,am,a,student”。

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

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

试题程序:

六、程序设计题(1题)82.请编写函数proc(),它的功能是计算下列级数和,和值由函数值返回。sum=1-x+x2/2!-x3/31+…+(-l*x)n/n!例如,当n=23,x=0.3时,函数值为0.740818。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。试题程序:

参考答案

1.A解析:由于本题定义的是共用体,所以成员表列中的整型变景x与字符数组c共占用同—个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。

2.C当执行fun函数时,因为参数传递时是地址传递,因此形参值的改变会影响实参中的数,在执行fun函数时先输出12,接着把*X赋3,*y赋4,此时带回主函数中,输出的值为34。

3.A

4.B函数f1(*a,b),*a为地址传递,b为值传递,将b值传给*a,则f1(&t1,t2)调用后输出t1、t2为BB。f2(a,b)为值传递,传入的只是a、b的值,不实现交换,则f2(t1,t2)调用后输出t1、t2为AB。f3(*a,*b)为地址传递,可以实现a、b值的交换,则f3(&t1,&t2)调用后输出t1、t2为BA。因此结果为BAABBB。故本题答案为B选项。

5.D

6.A

7.B当n为9时,此时if语句成立,执行n++后,n为10,因此输出n的值为10,故选择B选项。

8.A解析:本题考查ifelse语句。在intf(a,B)中:第一个if语句,先判断条件,发现a>b条件不成立,则执行与其配对的else语句:第二个if语句,先判断条件,发现a==b条件不成立,则执行与其配对的else语句,c=-1。

9.Dscanf函数读取的是char型数据,所以回车时输入的换行符也是有效字符。于是cl,c2,c3,c4的内容分别是1,2,3,\n。

10.B数组1标从0开始,A选项中所赋值的个数超过了数组的长度;C选项中定义a为字符型变量,而不是数组,赋值错误;D选项中,整型数组不能赋字符串。

11.A解析:fun()函数中声明了两个字符串指针作为形参,在其函数体中用了一个while循环,首先while括号内表达式*p2=*p1是将p1所指的内容赋值到P2所指的存储空间中,然后再判断是否为'\\0',表达式的值为真时,执行循环体,指针p1和指针P2分别下移一位,当p1指向字符'\\0'时,表达式的值为假,循环结束,故此函数的功能是将p1所指字符串复制到p2所指内存空间中。

12.A

13.B解析:本题考查文件使用方式标识符。方式“wb”为输出打开一个二进制文件;方式“wb+”为读写建立一个新的二进制文件;方式“rb+”为读写打开一个二进制文件:方式“rb”为输入打开一个二进制文件。

14.B此题考查的是函数fun,fun(b,c)=5,然后fun(2*a,5)=fun(8,5)=6。

15.A在C语言里不能直接表达“0<x<5”,需要分步骤来实现,即使用“x>0&&x<5”来描述。在C语言里,“0<x<5”属于一个逻辑运算表达式,可以理解为“(0<x)<5”,因此选项A错误。故本题答案为A选项。

16.B

17.AA选项中E后面的指数必须为整数,所以不合法。C选项中的011表示的是八进制常量,D选项中的0xabcd表示的是十六进制常量。故本题答案为A选项。

18.C解析:程序首先定义了两个文件类型的指针fp1、fp2。为读打开文件filel,并让指针fp1指向该文件;为写打开文件file2,并让指针fp2指向该文件。循环执行从文件file1中读取一个字符,输出到文件file2中,直到文件file1结束。因此程序的功能是将文件file1中的内容复制到文件file2中。

19.C

20.C

21.*(p+5)或p[5]*(p+5)或p[5]

22.自盒自盒解析:自盒测试法即结构测试,它与程序内部结构相关,要利用程序结构的实现细节设计测试实例。白盒测试法主要有逻辑覆盖、基本路径测试等。

23.3232解析:二叉树的一个性质是,在二叉树的第k层上,最多有2k-1(k≥1)个结点。由此,26-1=32.所以答案为32。

24.操作系统或OS操作系统或OS解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务。位于用户和操作系统之间。

25.\0'n++

26.->->解析:结构变量abc有成员a,并有指针pabc指向结构变量abc,则引用变量abc成员a的形式有abc.a和p_abc->a。

27.99解析:考查ifelse语句,n==4不满足条件,所以fun5(4)=4+fun5(3),n==3也不满足条件,fun5(3)=3+fun5(2),n==2满足条件fun5(2)=2,故x=4+3+2=9。

28.自顶而下自顶而下

29.结构化设计结构化设计解析:与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是采用最佳的可能方法设计系统的各个组成部分以及各个成分之间的内部联系的技术。

30.*s++flag=0或*(s-1)=''num*s++\r\nflag=0或*(s-1)=''\r\nnum解析:在统计字符串单词个数的算法中,本题的flag是为了记录—个单词是否结束。第18空应填*s++;如果某个字符不是空格,则必须判断它是否是单词,如是,则使得flag的标志为1,num的值加1。本题判断方法是:先判断s所指向的字符是否为空格,如果是则使得flag=0,否则判断前—个字符是否是空格,如果是则说明这个字符是—个单词的开始,将flag标志为1,num的值加1,如果不是,则不必记录。故第19空应填flag=0或*(s-1)='';最后—个空格需填写的是返回的单词的个数,即num。

31.逻辑独立性逻辑独立性解析:数据独立性包括数据的物理独立性和逻辑独立性。物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。数据在磁盘上的数据库中怎样存储是由DBMS管理的,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变时。应用程序不用改变。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变了,用户程序也可以不变。

32.66解析:本题中i循环执行4次,当i=1时,j循环执行0次;当i=2时,j循环执行1次;当i=3时,j循环执行2次;当i=4时,j循环执行3次,所以输出#号的个数是0+1+2+3=6。

33.结构化设计结构化设计解析:在软件开发中,结构化方法包括结构化分析方法、结构化设计方法和结构化程序设计方法。详细设计阶段所采用的是结构化设计方法。

34.x[i][i]x[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]解析:在程序中有两重循环。在第一层for循环中将每行的第0列赋值为1,对角线上的元素赋值为1,显然在第一个空白处应该填入对角线上的元素即x[i][i],在第二重循环中给每行其他元素赋值,而在每行中除了第0列和对角线的元素外其他元素为其对应的上一行中同列和同列的前一列的元素相加,所以在第二个空白处应该填入x[i-1][j-1]+x[i-1][j]。

35.类类解析:在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。

36.拖动拖动

37.

38.a+strlen(a)或strlen(a)+aa+strlen(a)或strlen(a)+a解析:要输出suet就要将指针从字符串开始移动到字符串结尾,表达式p=a使p指向字符串的首地址;表达式p+=2使每次循环p值加2,是向前移动指针;空白处应判断是否到达字符串结尾,因此应填字符串的首地址加字符串长度,strlen(a)的返回值为字符串a所含的字符个数。

39.若结构体变量abc有成员a,并有指针p_abc指向结构变量abe,则引用变量abe成员s的标记形式有abe.a和p_abc->a。

40.i<=9或i<10或9>=i或10>ij%3!=0或j%3i<=9或i<10或9>=i或10>i\r\nj%3!=0或j%3

41.C解析:本题考查的是指向函数的指针.函数指针定义的基本格式为:类型标识符(*指针变量名)()。“类型标识符”为函数返回值的类型。

42.C解析:C语言中strcpy(stl,st2);,其两个参数均为字符指针或字符数组,选项C中的目的串指针str3没有指向具体有效的存储单元,故是错误的调用。

43.C解析:本题考查函数调用时的参数传递。函数point的参数为字符指针,当执行函数point时,刚开始指针p指向“a”,经过+3操作后,指针p指向“f”,所以最后的输出结果是f。

44.A解析:本题考查了continue和break语句用在循环语句中的作用。break语句的作用是结束本层循环,而continue语句的作用是结束本次循环直接进入到下次循环。

45.D解析:fgetc函数是指从指定的文件读入一个字符,该文件必须是以读或读写方式打开的。fgetc函数的调用形式为:ch=fgetc(fp);。

46.C解析:在“||”运算中当其左边的表达式为真,右边的表达式将不再执行。主函数中,“||”左边的表达式k=(n=b>A),“2>1”为真,所以n被赋值为1,接着k被赋值1,即“||”运算符左边表达式为真,此时不再计算“||”右边的表达式,因此m的值没有被改变仍为0,最后的输出结果1,0。

47.B解析:软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境。工具和环境的使用又进一步提高了软件的开发效率、维护效率和软件质量。

48.BB)【解析】在关系表中,每一列称为一个属性,对应表中的一个字段;每一行称为一个元组,对应表中的一条记录。

49.D解析:printf函数按格式控制符的个数输出表列中对应的数据,若输出表列的个数大于格式控制符个数,则输出与格式控制符对应的输出表列的数据,输出表列中多的则省略;若格式控制符个数大于输出表列的个数,则输出与格式控制符对应的输出表列的数据,格式控制符多的部分输出的数据是随机的。

50.A队列是一种特殊的线性表,只允许在表的一端插八元素,在表的另一端删除元素,插入元素的一端叫“队尾”,删除元素的一端叫“队头”。先插入的元素先被删除,是按“先进先出”的原则组织数据的。

【知识拓展】“队列”和“栈”都是一种特殊的线性表。之所以称之为“队列”,其形式如“排队”。要讲究“先来后到”,先进先出,后进后出。

51.C解析:因为fun(intx)是一个递归函数,所以主函数中fun(7)经过三次递归调用,其过程可以描述为'fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2”,所以最后的输出结果为2。

52.C解析:本题的选项A)和B)犯了同样的错误,即指针变量在定义后并没有指向具体的变量。也就是说,指针变量中没有确定的地址值,它的值是不可预见的,所指的单元也是不可预见的,因此不能进行赋值操作。另外,在选项D)中,s是int型指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。

53.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法定义:①遍历左子树;②遍历右子树;③访问根结点。根据前序遍历的结果可知,a是根结点。由中序遍历的结果dgbaechf可知,d、g、b是左子树的结点,e、c、h、f是右子树的结点。再由前序遍历的结果bdg可知,b是a左边子树的根,由cefh可知,c是a右边子树的根。再由中序遍历的结果dgb可知,d、g是b左边子树的结点,b右边子树无结点。再由前序遍历结果dg可知,d为b左子树的根,g是以d为根的子树的右结点。至此,a的左子树已完全弄清楚了。同样的道理,可以弄清楚以c为根的子树的结点位置。所以可知后序遍历的结果是D。

54.B解析:先计算关系表达式a<b=2<3为真(表达式为真时,如果变量为int型变量则真用1表示,假用0表示),即a=1。

55.D\r\n软件是与计算机操作相关的计算机程序、规程、规则,以及可能有的文件、文档及数据;软件开发要受到计算机系统的限制;软件是一个逻辑实体,不是物理实体,软件具有抽象性。因此选项D正确。

56.D解析:本题是计算50之内的自然数相加之和,题中if语句括号中的条件表达式!(i%5)&&!(i%3)表明只有能同时被5和3整除的数才符合相加的条件,1~49之间满足这个条件的只有,15、30和45,因为s的初始值为1,所以s=1+15+30+45=91。

57.A

58.A解析:本题首先以创建方式打开文件“d1.dar”,两次调用fprintf()把i和j的值写到文件“d1.dat”中,文件“d1.dar的内容为20〈回车〉30〈回车〉后把该文件关闭再以读的方式打开,文件位置指针指向文件头,在通过fscard()函数从中读取两个整数到k和n中,由于格式符无间隔,因此输入数据可以用回车隔开,故输入的k值为20,n的值为30。

59.A解析:本题考查两个概念:①用单引号括起来的一个字符常量只能存放一个字符;②C语言中没有字符串变量,只能用字符数组来存储字符串。

选项A)中一个单引号内放了若干个字符是错误的;选项B)和选项D)中将一个字符串赋值给一个字符数组是允许的。

60.B解析:本题考查数据结构中有关算法的基本知识和概念。数据的结构,直接影响算法的选择和效率。而数据结构包括两方面,即数据的逻辑结构和数据的存储结构。因此,数据的逻辑结构和存储结构都影响算法的效率。选项A的说法是错误的。算法的时间复杂度是指算法在计算机内执行时所需时间的度量;与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。因此,选项B的说法是正确的。

数据之间的相互关系称为逻辑结构。通常分为四类基本逻辑结构,即集合、线性结构、树型结构、图状结构或网状结构。存储结构是逻辑结构在存储器中的映象,它包含数据元素的映象和关系的映象。存储结构在计算机中有两种,即顺序存储结构和链式存储结构。可见,逻辑结构和存储结构不是一一对应的。因此,选项C的说法是错误的。

有时人们为了提高算法的时间复杂度,而以牺牲空间复杂度为代价。但是,这两者之间没有必然的联系。因此,选项D的说法是错误的。

61.A\n本题中/*……*/为多行注释,所以可知b=20为注释语句,在程序运行时不起作用,b仍为0,所以本题中A正确。

\n

62.C数组m下标从0到4计算,共5个元素,选项c)中m[0]=5,则m[m[0]]为m[5],超出了数组m的下标范围。因此正确答案为C)。

63.CP指向字符串”tuesday”,因此*(P+1)的值为n。s[0]=”monday”。

64.B

65.C

66.B

67.A

\n本题考查do-while循环。当--y是0(即y是o)时结束循环,输出--y,先将y的值减1再输出Y的值。

68.A

\n本题在函数intfun(intn)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为

\nfun(10)=10…fun(9)=104-94-fun(8)=104-9+84-fun(7)

\n=10+9++8++7++fun(6)=10+9++8+7+6+fun(6)

\n=10+9++8+7+6+5+fun(4)

\n=10+9++8+7+6+5+4+fun(3)

\n=10+9++8+7+6+5+4+3+fun(2)

\n=10+9++8+7+6+5+4+3+2+fun(1)

\n=10+9++8+7+6+5+4+3+2=55

\n

69.C

70.B此题考查除法运算,根据先乘除后加减,有括号先算括号的原则,先计算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,转化一下取整除部分,结果Z=1

71.D

72.D

73.B

74.C严格按照格式进行输入和输出。%2d%3d,a是两位输入,b是三位,输出时亦是这个格式。

75.Ac语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线,排除D);用户定义标识符中大小写字母之间是有区别的并且应尽量做到”见名识意”,排除选项B)和c);C语言中还规定标识符不能为c语言的关键字,故选项A)叙述错误,正确答案是选项A)。

76.B选项A为表达式,因此不正确,选项C中a++本身就是表达式,无需再赋值,选项D中,在强制类型转换时,类型名应用括号括起来,故选择8选项。

77.C

78.B

79.C在C语言中,main函数也可以有参数,例如,main(intar90,char*argv),argc是指字符串的指针数组,而其他几项表达不正确。

80.D

\ncontinue语句的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。

\n

81.

82.

【解析】首先定义两个变量分别用来存储级数的和与每一项的分母。观察级数的特点,其每一项的正负号是交替变化的。根据这些特点,每增加一项都需要变换符号。最后求出级数的和。

2021-2022年海南省三亚市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10;x.c[1]==1;printf("\n%d",x.i);}

A.266B.11C.265D.138

2.下列程序的输出结果是()。voidfun(int*X,inty){printf("%d%d",*x,*y);*x=3;*y=1;}main{intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}A.2143B.1212C.1234D.2112

3.数据结构通常是研究数据的及它们之间的联系______。A.存储和逻辑结构B.存储和抽象C.理想和抽象D.理想与逻辑

4.有以下程序:#include<stdio.h>voidf1(char*a,charb){charc;c=*a;*a=b;b=c;}voidf2(chara,charb){charc;c=a;a=b;b=c;}voidf3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}main(){chart1,t2;t1=‘A’;t2=‘B’;f3(&t1,&t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f2(t1,t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f1(&t1,t2);putchar(t1);putchar(t2);printf(“\n”);}程序运行后的输出结果是()。

A.ABBABBB.BAABBBC.BABABAD.BABAAB

5.

6.向堆中插入一个元素的时间复杂度为________。

A.O(log2n)B.O(n)C.O(1)D.O(nlog2n)

7.若执行以下程序时从键盘上输入9,则输出结果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8

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

#include<stdio.h>

main()

{iuta=2,b=3,p;

p=f(a,B)

printf("%d",p);

}

intf(a,b)

{intc;

if(a>B)c=1;

e1Seif(a==B)c=0;

else(3=-1;

return(C);

}

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

9.有以下程序.#include<stdio.h>main{charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar;c6=getchar;putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);}程序运行后,若从键盘输入(从第l列开始)123<回车>45678<回车>程序运行后,若从键盘输入(从第l列开始)123<回车>45678<回车>则输出结果是()。A.1267B.1256C.1278D.1245

10.以下能正确定义一维数组的选项是()。

A.inta[5]=(0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A','B','C'};

D.inta[5]="0123";

11.已定义以下函数fun(char*p2,char*p1){while((*p2=*p1)!='0'){P1++;p2++;}}函数的功能是

A.将p1所指字符串复制到p2所指内存空间

B.将P1所指字符串的地址赋给指针p2

C.对p1和p2两个指针所指字符串进行比较

D.检查P1和p2两个指针所指字符串中是否有'\0'

12.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是()

A.cedbAB.acbeDC.decaBD.deabC

13.若要用函数fopen打开一个新的二进制文件,该文件要既能读也能写,则应以哪种方式打开文件()。

A.wbB.wb+C.rb+D.rb

14.有以下程序:#include<stdio.h>intfun(intX,inty){if(X!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf("%d/n",fun(2*a,fun(b,c)));}程序运行后的输入结果是()。A.3B.6C.8D.12

15.以下与数学表达式“0<x<5且x≠2”不等价的C语言逻辑表达式是()。

A.(0<x<5)&&(x!=2)

B.0<x&&x<5&&x!=2

C.x>0&&x<5&&x!=2

D.(x>0&&x<2)||(x>2&&x<5)

16.下面关于线性表的叙述中,错误的是()。

A.线性表采用顺序存储,必须占用一片连续的存储单元

B.线性表采用顺序存储,便于进行插入和删除操作

C.线性表采用链接存储,不必占用一片连续的存储单元

D.线性表采用链接存储,便于插入和删除操作

17.以下不合法的数值常量是()。

A.8.0E0.5B.1e1C.011D.0xabcd

18.以下程序的功能是()。#include<stdio.h>main(){FILE*fPl;*fp2;fp1:fopen("file1","r");fp2:fopen("file2","w");while(!Feof(fP1))fputc(fgetc(fP1),fp2);fclose(fP1);fclose(fp2);}

A.将磁盘文件的内容显示在屏幕上

B.将两个磁盘文件合为一个

C.将一个磁盘文件复制到另一个磁盘文件中

D.将两个磁盘文件合并后送屏幕

19.下列程序的输出结果是______。#include<stdio.h>main(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf("%d\n",d*y);}

A.3B.3.2C.0D.3.07

20.排序方法中,从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为()。

A.希尔排序B.冒泡排序C.插入排序D.选择排序

二、2.填空题(20题)21.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

22.软件测试分为白箱(盒)测试和黑箱(盒)测试。基本路径测试方法属于()测试。

23.一棵二叉树第六层(根结点为第一层)的结点数最多为______个。

24.在计算机软件系统的体系结构中,数据库管理系统位于用户和【】之间。

25.以下函数把b字符串连到a字符串的后面,并返回a中新字符串的长度,请填空。

strcen(chara[],charb[])

{

intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;}

returnnum;

}

26.设有定义:

struct{inta;floatb;charc;}abc;*p_abc=&abc;

则对结构体成员a的引用方法可以是abc.a和p_abc【】a。

27.下列程序的输出结果是______。

longfun5(intn)

(longs;

if((n==l)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

28.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。

29.与结构化需求分析方法相对应的是【】方法。

30.下述函数统计—个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】;}

31.()是指用户的应用程序与数据库的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变了,用户程序也可以不变。

32.执行以下程序后,输出#号的个数是【】。

#include<stdio.h>

main()

{inti,j;

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

for(j=2;j<=i;j++)putchar('#');

}

33.在软件开发中,结构化方法包括结构化分析方法、结构化设计方法和结构化程序设计方法。详细设计阶段所采用的是【】方法。

34.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下:

1

11

121

1331

14641

其构成规律是,第0列元素和主对角线元素均为1,其余元素为其左上方和正上方元素之和,数据的个数每行递增1。请将程序补充完整。

#defintN6

voidYangHui(int*[N][N])

{

inti,j;

x[0][0]=1

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

{

x[i][0]=【】=1

for(j=1;j<i;j++)

x[i][j]=【】;

}

}

35.在面向对象的方法中,______描述的是具有相似属性与操作的一组对象。

36.在Windows环境下,可以利用单击、双击、拖动这三种鼠标操作之一的【】操作实现窗口的移动。

37.以下程序的输出结果是______。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

}

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

38.执行下面程序段时输出suet,请填空。

main()

{staticchara[]="student";

char*p;

for(p=a;p<【】;p+=2)

putchar(*p);

}

39.设有定义“stmct{inta;floatb;charc}abc,*p_abc=&abc;”,则对结构体成员a的引用方法可以是abc.a和p_abc______。

40.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。

#include<stdio.h>

main()

{inti,j;

for(i=0【】;i++)

{j=i*10+6;

if(【】)continue;

printf("%d",j);

}

}

三、1.选择题(20题)41.语句int(*ptr)()的含义是()。

A.ptr是一个返回值是int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向血型数据的指针

42.设有以下语句:charstrl[]="string",str2[8],*str,*str4="string";则______不是对库函数的正确调用。

A.strcpy(strl,"HELLO1");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLO3");

D.strcpy(str4,"HELLO4");

43.下列程序的输出结果是()。point(char*pt);main(){charb[4]={'a','c','s','f},*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}

A.sB.cC.fD.a

44.有以下程序:main(){intx=0,y=0,i;for(i=1;++i){if(i%2==0){x++;continue;}if(i%5==0){y++;break;}}printf("%d,%d",x,y);}程序的输出结果是()。

A.2,1B.2,2C.2,5D.5,2

45.fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是______。

A.只读B.追加C.读或读写D.以上均正确

46.有以下程序main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)‖(m=a<b);printf("%d,%d\n",k,m);}程序运行后的输出结果是

A.0,0B.0,1C.1,0D.1,1

47.开发软件时对提高开发人员工作效率至关重要的是()

A.操作系统的资源管理功能B.先进的软件开发工具和环境C.程序人员的数量D.计算机的并行处理能力

48.关系表中的每一行记录称为一个()。

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

49.请读程序:#include<stdio.h>main(){inta=5,b=7,c=9;pintf("%d,%d,"a,b,C);printf("%d,%d",a,D);}上面程序的输出结果是_______。

A.5,7,9,5,7B.5,7,5,7C.5,7,不定7,9D.5,7,5,7,不定

50.按照“先进先出”组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

51.有以下程序fun(intx){intp;if(x==0‖x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7));}执行后的输出结果是

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

52.请选出正确的程序段______。

A.int*pscanf(""%d"",p);……

B.int*s,k;*s=100;……

C.int*s,k;char*p,c;s=&k;p=&c;*p='a';……

D.int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;……

53.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

54.已知inta=2,b=3;则执行表达式a=a<b后,变量a的值为()。

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

55.下列描述中正确的是()。

A.程序就是软件

B.软件开发不受计算机系统的限制

C.软件既是逻辑实体,又是物理实体

D.软件是程序、数据与相关文档的集合

56.有以下程序

main()

{inti,s=1;

for(i=1;i<50;i++)

if(!(i%5)&&!(i%3))s+=i;

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

程序的输出结果是

A.409B.277C.1D.91

57.以下程序的运行结果为______。main(){inti,f1,f2;f1=f2=1;for(i=0;i<4;i++){printf("%d%d",f1,f2);f1+=f2;f2+=f1;}}

A.1123581321

B.1122551010

C.1258981321

D.0112451521

58.有以下程序#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen(“d1.dat”,“w”);fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”,j);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d%d”,&k,&n);printf(“%d%d\n”,k,n);fclose(fp);}程序运行后的输出结果是

A.2030B.2050C.3050D.3020

59.下列字符数组初始化语句中,不正确的是()。

A.charc[]='goodmorning';

B.char,c[20]="goodmoming";

C.charc[]={'a','b','c','d'};

D.charc[]={"goodmoming"};

60.下列叙述中正确的是()。A.算法的效率只与问题的规模有关,而与数据的存储结构无关

B.算法的时间复杂度是指执行算法所需要的计算工作量

C.数据的逻辑结构与存储结构是一一对应的

D.算法的时间复杂度与空间复杂度一定相关

四、选择题(20题)61.

有以下程序:

main

{inta=0,b=0;

a=10;/*给a赋值

b=20;给b赋值*/

printf("a+b=%d\n",a+b);//输出计算机结果

}

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

A.a+b=10B.a+b=30C.30D.出错

62.

则下面对m数组元素的引用中错误的是()。

A.

B.

C.

D.

63.有以下程序:

执行后输出结果是()。

A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday

64.

65.

66.

67.有下列程序:

main

{inty=10;

do{y--;}while(--y);

printf("%d\n",--y);

)

当执行程序时,输出的结果是()。

A.-1B.1C.4D.0

68.

有下列程序:

intfun(intn)

{if(n==1)}return1;

else

return(n+fun(n-1));

}

main

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x);

)

执行程序时,给变量x输入10,程序的输出结果是()。

A.55B.54C.65D.45

69.

70.若有定义语句:“intx=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为()。A.1.9B.1C.2D.2.4

71.

72.

73.

74.下面程序的输出结果是()。

main()

{inta,b;

scanf("%2d%3d",&a,&b);

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

}

A.a=12b=34

B.a=123b=45

C.a=12b=345

D.语句有错误

75.以下叙述中错误的是()。

A.用户所定义的标识符允许使用关键字

B.用户所定义的标识符应尽量做到“见名识意”

C.用户所定义的标识符中,大、小写字母代表不同标识

D.用户所定义的标识符必须以字母或下划线开头

76.若变量a、i已正确定义,且i已正确赋值,合法的语句是()。

A.a==lB.++iC.a=a++=5D.a=int(i)

77.

78.

79.合法的main函数命令参数形式是()。

A.main(inta,char*c[])

B.main(intarc,char**arv)

C.main(intargc,char*argv)

D.main(intargv,char*argc[])

80.

有以下程序:

main

{inti,n=0:

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

{do

{if(i%3)continue:

n++:

}while(!i);

n++:

}

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

}

程序执行后输出结果是()。

A.n=5B.n=2C.n=3D.n=4

五、程序改错题(1题)81.下列给定程序中,函数proc()的作用是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。

例如,若输入“I,anl,A,Student”,则输出“i,am,a,student”。

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

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

试题程序:

六、程序设计题(1题)82.请编写函数proc(),它的功能是计算下列级数和,和值由函数值返回。sum=1-x+x2/2!-x3/31+…+(-l*x)n/n!例如,当n=23,x=0.3时,函数值为0.740818。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。试题程序:

参考答案

1.A解析:由于本题定义的是共用体,所以成员表列中的整型变景x与字符数组c共占用同—个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。

2.C当执行fun函数时,因为参数传递时是地址传递,因此形参值的改变会影响实参中的数,在执行fun函数时先输出12,接着把*X赋3,*y赋4,此时带回主函数中,输出的值为34。

3.A

4.B函数f1(*a,b),*a为地址传递,b为值传递,将b值传给*a,则f1(&t1,t2)调用后输出t1、t2为BB。f2(a,b)为值传递,传入的只是a、b的值,不实现交换,则f2(t1,t2)调用后输出t1、t2为AB。f3(*a,*b)为地址传递,可以实现a、b值的交换,则f3(&t1,&t2)调用后输出t1、t2为BA。因此结果为BAABBB。故本题答案为B选项。

5.D

6.A

7.B当n为9时,此时if语句成立,执行n++后,n为10,因此输出n的值为10,故选择B选项。

8.A解析:本题考查ifelse语句。在intf(a,B)中:第一个if语句,先判断条件,发现a>b条件不成立,则执行与其配对的else语句:第二个if语句,先判断条件,发现a==b条件不成立,则执行与其配对的else语句,c=-1。

9.Dscanf函数读取的是char型数据,所以回车时输入的换行符也是有效字符。于是cl,c2,c3,c4的内容分别是1,2,3,\n。

10.B数组1标从0开始,A选项中所赋值的个数超过了数组的长度;C选项中定义a为字符型变量,而不是数组,赋值错误;D选项中,整型数组不能赋字符串。

11.A解析:fun()函数中声明了两个字符串指针作为形参,在其函数体中用了一个while循环,首先while括号内表达式*p2=*p1是将p1所指的内容赋值到P2所指的存储空间中,然后再判断是否为'\\0',表达式的值为真时,执行循环体,指针p1和指针P2分别下移一位,当p1指向字符'\\0'时,表达式的值为假,循环结束,故此函数的功能是将p1所指字符串复制到p2所指内存空间中。

12.A

13.B解析:本题考查文件使用方式标识符。方式“wb”为输出打开一个二进制文件;方式“wb+”为读写建立一个新的二进制文件;方式“rb+”为读写打开一个二进制文件:方式“rb”为输入打开一个二进制文件。

14.B此题考查的是函数fun,fun(b,c)=5,然后fun(2*a,5)=fun(8,5)=6。

15.A在C

温馨提示

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

评论

0/150

提交评论