2021-2022年四川省遂宁市全国计算机等级考试C语言程序设计真题(含答案)_第1页
2021-2022年四川省遂宁市全国计算机等级考试C语言程序设计真题(含答案)_第2页
2021-2022年四川省遂宁市全国计算机等级考试C语言程序设计真题(含答案)_第3页
2021-2022年四川省遂宁市全国计算机等级考试C语言程序设计真题(含答案)_第4页
2021-2022年四川省遂宁市全国计算机等级考试C语言程序设计真题(含答案)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年四川省遂宁市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若有说明语句:double*p,a;则通过scanf语句正确给输入项读人数据的程序段是()。

A.*p=&a;scanf("%1f”,p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%1f",p);

2.要求当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,以下不满足要求的表达式是()。A.A%2==1B.!(A%2==0)C.A%2D.!(A%2)

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

A.宏替换不占用程序的运行时间

B.预处理命令行必须位于源文件的开头

C.在源文件的一行上可以有多条预处理命令

D.宏名必须用大写字母表示

4.设有定义:charpE]={’1’,‘2’,’3’},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是()。

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

5.下列选项中,能正确定义数组的语句是()。

A.intnum[0..2008];

B.intnum[];

C.intN=2008;intnum[N];

D.#defineN2008;intnum[N];

6.

7.请选出可用作C语言用户标识符的一组()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

8.

9.已知小写母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是_______。main(){unsignedinta=32,b=66;printf("%c\n",a|B);}

A.66B.98C.bD.B

10.第

4

栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是

A.ABCEDB.DCBEAC.DBCEAD.CDABE

11.判定一个顺序栈st(最多元素为MaxSize)为空的条件是()。

A.st->top!B.st->top!C.top==-1D.top==MaxSize

12.下列能正确定义且赋初值的语句是()。

A.intn1=n2=1;

B.charC=99;

C.floatf=f+1;

D.doublex=1.2E5.6;

13.

14.以下程序运行后,输出结果是()#include<stdio.h>ss(char*s){char*p=s;while(*p)p++return(p-s);}main(){char*a=“abded”inti;i=ss(a);printf(“%d\n”,i);}A.8B.7C.6D.5

15.下列关于C语言数据文件的叙述中正确的是A.文件由ASCII码字符序列组成,C语言只能读写文本文件

B.文件由二进制数据序列组成,C语言只能读写二进制文件

C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

16.在以下一组运算中,优先级最高的运算符是()

A.<=B.=C.%D.&&

17.数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放的存储器内,该数组按行存放,元素A[8][5]的起始地址为()。

A.SA+141B.SA+144C.SA+222D.SA+225

18.若以下选项中的变量已正确定义,则正确的赋值语句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

19.给出发下定义:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};则正确的叙述为______。

A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度

20.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)当执行程序时,输出的结果是()。A.-1B.1C.4D.0

二、2.填空题(20题)21.下列程序段的运行结果是______。

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

22.设有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序运行后,从键盘上输入(<CR>代表回车符):DEF<CR>BADEF<CR>QTHRG<CR>,则程

序的输出结果是______。

23.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。

24.设有以下程序:

main()

{inti,sum=0;

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

{if((i%2)==0)

continue;

sum+=i;}

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

}

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

25.按照逻辑结构分类,数据结构可分为线性结构和非线性结构,队列属于______。

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

main()

{inta=1,b=2;

a=a+b;b=a-b,a=a-b;

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

}

27.若有如下程序:

main()

{intx=5,y,*t;t=&x;

y=++(*t);

printf("%d,%d",x,y);}

则程序执行后的x值为【】,y的值为【】。

28.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。

intfun(intn)

{intm=0,f=1,i;

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

{m+=i*f;

f=______;

}

returnm;

}

main()

{printf("%d\n",【】);}

29.软件工程研究的内容主要包括:【】技术和软件工程管理。

30.下列程序的运行结果为【】。

main()

{intx=2,y,z;

x*=3+1;

printf("%d,",x++);

x+=y=z=5;

printf("%d,",x);

K=y==Z;

printf{"%d\n",x);

}

31.度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为______。

32.已有文本文件test.txt,其中的内容为:Hello,everyone!。以下程序中,文件test.txt已正确为“读”而打开,由此文件指针fr指向该文件,则程序的输出结果是【】。

#include<stdio.h>

main()

{FILE*fr;charstr[40];

fgets(str,5,fr);

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

felose(fr);

}

33.软件生命周期分为软件定义期、软件开发期和软件维护期,详细设计属于______中的一个阶段。

34.以下函数用来求出两整数之和,并通过形参将结果传回,请填空。

voidfunc(intx,inty,【】z)

{*z=x+y;}

35.下面的程序可列指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

36.若有如下程序:

voidsub()

{staticintx=8;

x/=2;printf("%d",x);

}

main()

{intm;

for(m=0;m<2;m++)sub();}

则程序运行后的输出结果是【】.

37.若a=1,b=2,则表达式!(x=A)‖(y=B)&&0的值是______。

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

#include<stdio.h>

main()

{inta=2,b=-1,c=2;

if(a<b)

if(b<0)c=0;

elsec++;

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

}

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

#include<string.h>

char*ss(char*s)

{char*p;t;

p=s+1;t=*s;

while(*p){*(p-1)=*p;p++;}

*(p-1)=t;

returns;

}

main()

{char*p,str[10]="abcdergh";

p=ss(str);

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

}

40.执行下面程序段后,k的值是【】。

r=1;n=203;k=1

do}k*=n%10*r;n/=10;r++;}while(n);

三、1.选择题(20题)41.以下程序执行后,sum的值是______。main(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%d\n",sum);}

A.15B.14C.不确定D.0

42.有以下程序:#include<stdio.h>voidsum(int*a){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}执行后的输出结果是()。

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

43.有以下程序:main(){unsignedchara,b;a=4|3;b=4&3;printf("%d%d\n",a,b);}执行后输出结果是()。

A.70B.07C.11D.430

44.视图设计—般有3种设计次序,下列不属于视图设计的是______。

A.自顶向下B.由外向内C.由内向外D.自底向上

45.若有以下说明和语句:intc[4][5],(*p)[5];p=C;能够正确引用c数组元素的是______。

A.p+1B.*(p+1)C.*(p+1)+3D.*(p[0]+2)

46.下列选项中错误的说明语句是

A.chara[]={'t''o','y','o','u','\0'};

B.chara[]={"toyou\0"};

C.chara[]="toyou\O";

D.chara[]='toyou\0';

47.在C语言中,可以把整数以二进制形式存放到文件中的函数是()

A.fprintf()函数B.fread()函数C.fwrite()函数D.fputc()函数

48.若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是

A.int*i=NULL;scanf("%d",i);

B.float*f=NULL;*f=10.5;

C.chart='m',*c=&t;*c=&t;

D.long*L;L='\0';

49.在C语言中,运算对象必须是整型数的运算符是()。

A.%B.\C.%和\D.**

50.源程序中应包含一些内部文档,以帮助阅读和理解程序,源程序的内部文档通常包括选择合适的标识符、注释和

A.程序的视觉组织B.尽量不用或少用GOTO语句C.检查输入数据的有效性D.设计良好的输出报表

51.算法中的每一个步骤都必须是有明确意义的,不允许有模棱两可的解释,也不允许有多义性,这个性质称为

A.可行性B.有穷性C.正确性D.确定性

52.有如下程序段int*p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为______。

A.12B.11C.10D.编译出错

53.执行下面的程序后,a的值为main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}}

A.7B.8C.9D.10

54.以下语句段执行后的输出结果是()。#include<stdio.h>main(){intk=3;if(k)printf("###")elseprintf("&&&&");}

A.###

B.&&&&

C.###&&&&

D.有语法错误,不能执行

55.有以下程序

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;

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

程序运行后的输出结果是

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

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

57.将E-R图转换到关系模式时,实体与联系都可以表示成________。

A.属性B.关系C.键D.域

58.有以下程序:#include<stdio,h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}当运行时输入:a<回车>后,以下叙述正确的是()。

A.变量c1被赋予字符a,c2被赋予回车符

B.程序将等待用户输入第二个字符

C.变量c1被赋予字符a,c2中仍是原有字符2

D.变量c1被赋予字符a,c2中将无确定值

59.以下程序的输出结果是______。#include<stdio.h>#defineFUDGE(y)2.84+y#definePR(a)printf("%d",(int)(a))#definePRINT1(a)PR(a);putchar('\n')main(){intx=2;PRINT1(FUDGE(5)*x);}

A.11B.12C.13D.15

60.下列选项中,不能作为合法常最的是()。

A.1.2340000B.1.234.4C.1.2340000D.1.234

四、选择题(20题)61.有以下程序:

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

A.3B.4C.lD.9

62.现有如下程序段:

则程序的输出结果为()。

A.78B.23C.21D.28

63.以下程序段中的变量已正确定义:

程序段的输出结果是()。

A.**B.****C.*D.********

64.设有定义:,以下不能计算出一"/Pchar型数据所占字节数的表达式是()。

65.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用(双引号)括起时,寻找被包含文件的方式是()。

A.直接按系统设定的标准方式搜索目录

B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索

C.仅仅搜索源程序所在目录

D.仅仅搜索当前目录

66.有以下程序:

fun(inta[],intm,intn)

{inti;

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

a[i+1]=a[i]+3;

returna[i+1];

}

voidmain()

{

inti,a[6]={2,4,6,8,10,12};

fun(a,2,5);

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

printf("%d",a[i]);

}

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

A.24691315B.24691215C.249121518D.249121415

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

A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.各对象之间的共同性质D.类之间共享属性和操作的机制

68.有以下程序

main()

{

intx[]={1,3,5,7,2,4,6,0},i,j,k;

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

for(j=2;j>=i;j--)

if(x[j+1]>x[j])

{

k=x[j];

x[j]=x[j+1];

x[j+1]=k;

}

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

for(j=4;j<7-i;j++)

if(x[j]>x[j+1])

{

k=x[j];

x[j]=x[j+1];

x[j+1]=k;

}

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

printf("%d",x[i]);

printf("\n");

}

程序运行后的输出结果是

A.75310246B.01234567

C.76310462D.13570246

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

A.属性B.事件C.方法D.类

70.

71.有如下程序段

#include"stdio.h"

main()

{intk[10];

intj;

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

scanf("%d",&k[j]);

for(j=9;j>=0;j--)

printf("%d",k[j]);}

则程序段实现的功能是

A.输入10个数据的顺序输入并输出

B.输入10个数据的逆序存放

C.输入10个数据的逆序输出

D.以上叙述均错误

72.

73.有以下程序:

#include<stdio.h>,

main()

{intS;

scanf("%d",&s);

while(s>O)

{switch(s)

{casel:printf("%d",s+5);

case2:printf("%d",s+4);break;

case3:printf("%d",s+3);

default:("%d",s+1);break;

}

scanf("%d",&s);

}

}

运行时,若输入123450<回车>,由输出结果是()。

A.6566456B.66656C.66666D.6666656

74.

75.

76.有以下程序:

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

A.1,6,2,1,B.8,7,3,1,C.4,7,5,2,D.1,6,5,7,

77.下面描述中错误的是()。

A.系统总体结构图支持软件系统的详细设计

B.软件设计是将软件需求转换为软件表示的过程

C.数据结构与数据库设计是软件设计的任务之一

D.PAD图是软件详细设计的表示工具

78.有以下程序(说明:字母A的ASCIl码值是65):

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

A.BTB.YEC.YTD.BY

79.设有定义语句int(*f)(int);,则以下叙述正确的是()。

A.f是基类型为int的指针变量

B.f是指向函数的指针变量,该函数具有一个int类型的形参

C.f是指向int类型一维数组的指针变量

D.f是函数名,该函数的返回值是基类型为int类型的地址

80.设有定义:,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是()。

五、程序改错题(1题)81.下列给定程序中,函数fun的功能是:将s所指字符串的正序和反序进行连接,形成的新串放在t所指的数组中。例如,当S所指字符串为“ABCD”时,t所指字符串中的内容应为“ABCDDCBA”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,函数fun()的功能是将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指字符串中剩余的字符形成的新字符串存放在t所指的数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符C的ASCⅡ值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCⅡ值为奇数,在数组中的下标为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是“BDH2345”。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序::

参考答案

1.Ddouble*p,a定义了一个指向双精度型的指针变量P和双精度型变量a,p=&a表示将变量a的地址赋给指针变量p;scanf("%If",p)表示用键盘输入的数赋给指针变量P所指向的地址单元中,scanf函数要求在输入double型数据,格式控制符必须用%1f。否则,数据不能正确输入。所以选项D正确。

2.D

3.A宏替换是在编译阶段前的预处理阶段,对程序中的宏完成文本替换,因此宏替换不占用运行时间,选项A正确;预处理命令行无须在源文件的开头,它可以出现在程序的任何一行的开始部位,其作用一直持续到源文件的末尾,选项B错误;在源文件的一行上至多只能有一条预处理命令,选项C错误;宏名通常使用大写字母表示,这并不是语法规定,只是一种习惯,选项D错误。本题答案为A选项。

4.A根据题目中的定义可以知道sizeof(p),计算的是数组P中所有元素所占用的字节数,而不是ch”型数据所占字节数。

5.DC语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中的数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定元素的个数;C选项错误,N为变量,不能用来定义数组大小。故本题答案为D选项。

6.C

7.B解析:C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。A)中的void与C语言的关键字重名,不合法;C)中的case和C语言的关键字重名,不合法;D)中的2a是数字开头,而且sizeof与C语言的关键字重名,不合法。

8.B

9.C解析:位运算符“|”的作用是按位或,即两个二进制数的相应位中只要有一个为1,该位的结果值为1。最后以字符型输出,98对应的字符“b”

10.B解析:栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈。所以出栈时一定是先出D,再出C,最后出A。

11.B

12.B在c语言规定中,可以在定义变量的同时给变量赋初值,选项A中n2没有定义;选项C中不能在赋值表达式的右边出现变量本身,选项D中字母E后面的数应该为整数,所以不对。

13.C

14.D

15.D解析:C语言把文件看成是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为ASCII文件和二进制文件。ASCII文件又称文本文件,它的每一个字节放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。

16.C

17.C

18.C解析:赋值的一般形式为:变量名:表达式;,赋值的方向为由右向左,即将:右侧表达式的值赋给:左侧的变量,执行步骤是先计算再赋值。选项A中运算符%的运算对象必须为整数,而选项A中26.8不为整数,故选项A不正确;选项B将一个变量赋值给一个常量,这在C语言中是不允许的,故选项B不正确;选项D中也是将一个常量3赋值给一个常量,故选项D不正确;所以,4个选项中选项C符合题意。

19.C

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

21.8208,20解析:本题考查while循环和++运算符的运用。x=0符合条件x<15,则执行y++,x+=++y后,y=1,x=0+2=2后y=2,符合条件继续循环,y=3,x=x+4=6后y=4,再循环y=5,x=x+6=6+6=12后,y=6,继续循环y=7,x=x+8=12+8-20,此时y=8。

22.QTHRGQTHRG解析:函数strcmp(t,s)用来比较t和s所指字符串的大小,若t>s,则函数值大于0;若t=s,则函数值等于0:若t<s,则函数值小于0。函数strcpy(t,s)的功能是,把字符数组s所指字符串的内容复制到字符数组t所指存储空间中。本题中,t[10]='CDEF'。第一次循环,s[10]='BADEF',if语句的控制条件strcmp(t,s)<0不成立,接着执行第二次循环,s='QTHRG',if语句的控制条件strcmp(t,s)<0成立,执行下列的语句,将字符数组s所指字符串的内容复制到字符数组t所指存储空间中,然后输出字符数组t。

23.封装封装

24.2424解析:continue语句功能:结束本次循环(注:不是终止整个循环),即跳过循环体中continue语句后面的语句,开始下一次循环。

25.线性结构线性结构解析:队列有且只有一个根结点,而且每一个结点最多有一个前件,也最多有一个后件,满足线性结构的条件,所以属于线性结构。

26.21

27.66

28.fun中的答案为-fmain函数中的答案为fun(10)fun中的答案为-f,main函数中的答案为fun(10)解析:根据题意可知函数fun的功能是计算12+3-4+…+n的和,所以空格处应填入-f,main函数中输出1-2+3-4+…+9-10的结果,所以函数的实参为10,函数调用为fun(10)。

29.软件开发

30.8141

31.4545解析:对于长度为N的线性表,在最坏情况下(即线性表中元素现在的顺序与目标顺序正好相反),冒泡排序需要经过N/2遍的从前往后的扫描和N/2遍的从后往前的扫描,需要的比较次数为N(N-1)/2。

32.HellHell解析:文件的字符串读写函数fgets()有3个参数,第三个参数是文件指针指向要读取数据的文件,第二个参数是一个整数(假设为n),表示从文件中读取n-1个字符并在其后加一个'0',第一个参数为存放读取的字符串的内存区的起始地址,读取得数据保存在其中。可见本题的输出结果为:Hell。

33.软件开发软件开发解析:软件生命周期分为3个时期共8个阶段:软件定义期(问题定义、可行性研究和需求分析)、软件开发期(系统设计、详细设计、编码和测试)、软件维护期(即运行维护阶段)。

34.int*int*解析:从题中代码可知:z应该是一个整型指针,因此应填int*。

35.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下一个字符,则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+l]。最终打印输出得到的字符串str,所以第三空应填:'%s',str。

36.4242解析:主函数中的for循环循环两次,即函数sub()被调用两次。在sub()中x被定义为静态整型变量,当调用函数sub()完毕返回主函数,x中的值仍然保留,下次调用函数sub()时,x不再被赋初值。第1次调用x/=2相当于x=x/2=8/2=4,第2次调用x=x/2=4/2=2,因此输出42。

37.00解析:根据运算符的运算顺序可知,该表达式最后运算的是与(&&)运算,而任何表达式与“0”进行“与”运算,结果都为0。

38.22解析:分析程序,a=2,b=-1,c=2时,if语句的表达式a<b不成立,不再往下判断,直接退出if语句,执行后面的输出语句,程序结束。在这个程序中a、b、c的值没做任何改变。

39.bcdefghabcdefgha解析:在本题定义的ss()函数中首先定义了一个指针p和一个字符变量t,然后让p指向参数指针s的下一个位置s+1,并让t保存s位置的字符。然后使用一个while循环将p指向的内容赋给它前面一个位置,即将参数s所指的字符串从第2个字符开始整体往前移动一位。循环结束时,p指向原s串的结束标志处,所以让*(p-1)=t;即是将原s串的第1个字符复制到s串的最后一个位置。整个函数实现的是让一个字符串循环左移一位。故主函数中最后输出的字符串是'bcdefgha'。

40.00解析:本题考查的是do…while循环。第一次执行循环体,因为k=1,r=1,n=20;所以k=1*20%10*1=0,n=20/10=2,r=2;第二次执行循环体,k=0*2%10*2=0,n=10/10=1,r=3;第三次执行循环体,k=0*1%10*3=0,n=1/10=0,r=4。所以k的值为0。

41.C解析:变量sum在使用时未赋初值,所以无法确定sum最终的值。

42.A解析:该程序通过main函数循环凋用sum函数。

当i=2时,将实参aa[2]的地址传递给形参,此时a[0]=a[1]=aa[3]=4,即aa[2]=4;

当i=1时,将实参aa[1]的地址传递给形参,此时a[0]=a[1]=aa[2]=4,即aa[1]=4;

当i=0时,将实参aa[0]的地址传递给形参,此时a[0]=a[1]=aa[1]=4,即aa[0]=4;

当i=-1时,不满足条件i>=0,跳出循环,程序执行后数组aa中的值为4,4,4,4,5,6,7,8,9,10,所以aa[0]=4。

43.A解析:在位与运算符&中参加运算的两位都为1时,其结果为1,否则结果为0。所以本题中的4|3:01002|00112=01112=7。位与运算符|中参加运算的两位只要有一个为1,则结果为1,只有当相应的两位都为0结果才为0。所以本题中的4&3=01002&00112=00002=0。最后输出a和b的值为7和0。故4个选项中选项A符合题意。

44.B解析:视图设计—般有3种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。

45.D解析:p是指向一个一维数组的指针,选项A、B和C中都是地址,而非数组元素。选项D正确。

46.D解析:通过赋初值的方式给一维数组赋字符串,可以用给一般数组赋初值的相同方式给一维字符数组赋字符串,也可以在赋值时直接赋字符串常量。选项B)和C)后面的'\\0'是多余的,在C语言中,系统会自动在字符串的结尾处加上一个字符'\\0'作为串的结束标记。

47.C

48.D解析:选项A定义了一个整型变量i,并且初始化让它指向NULL,接着通过seanf()函数,改变i指向的存储空间的值,选项A中首先定义了整型指针变量i并初始化为NULL,即表示指针i不指向任何内存,即此时程序还没有为i在内存中开辟存储单元,而在scanf()函数中笫;个参数是地址参数,显然在这里i不在表示地址,所以下面的scanf('%d',i)语句是不正确的,故选项A不正确;选项B定义了一个浮点型变量f并初始化让它指向NULL,而当一个指针变量指向NULL以后不能在给它赋值,而按下来的程序中为其赋了一值,故选项B错误;选项C中首先定义了一个字符变量t并给它赋初值\'m\',然后定义一个字符型指针c并让它指向了变量t,这一部分正确,然后接着用了一个语句“c=&t;”应该特该语句中c前的“*”去掉,故选项c运用指针变量不正确。所以,4个选项中选项D符合题意。

49.A解析:在C语言中,“%”运算符两侧的运算数必须是整型。

50.A解析:源程序文档化主要包括三个方面的内容:标识符的命名、程序中添加注释以及程序的视觉组织。

51.D解析:算法中的每一个步骤都必须是有明确意义的,不允许有多义性。算法的这个性质即为算法的确定性。

52.B解析:执行p=&a;后,p指向整数a,*p即p的目标变量,也就是a;所以a=*p+b等价于a=a+b,可知a的值最终为11。

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

54.D解析:在C语言中语句结束时应该以分号结尾,程序中的第1个printf('###')输出语句后面少了一个分号(;),因此执行程序时会出错。

55.88解析:*p=&a[3],即*p=4,*q=p+2;即*q=6,所以*p+*q=10。

56.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。

57.B解析:关系数据库逻辑设计的主要工作是将\ue008E-R\ue009图转换成指定RDBMS中的关系模式。首先,从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性,实体集也可以转换成关系。

58.A解析:函数getchar()的作用是从终端(或系统隐含指定的输入设备)输入一个字符,且只能接受一个字符(回车符也是一个字符)。故本题中变量c1被赋予字符a,c2被赋予回车符。

59.B解析:在程序中如果有带实参的宏,则按#define命令行中指定的字符串从左到右进行置换,如果串中包含宏中的形参,则将程序语句中相应的实参代替形参。将实参带入已经定义的宏中,可以得出答案为“12”。

60.B

61.B每次内循环只循环一次就结束,第一次外循环时t=t+b[0][b[0][0]]=1+b][0]=1+0=第二次外循环时t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第三次外循环时t=t+b[2][b[2][2]]=2+b[2][2]=2+2=4。

62.C通过地址来引用二维数组,若有以下定

63.C由于内层循环for(k=1;k<3;k++)后面直接跟了空语句“;”所以在循环内部什么操作也不做,跳出外层循环后执行打印语句,所以打印了一个“t”,选择C。

64.A根据题目中的定义可以知道sizeof(p),计算的是数组p中所有元素所占用的字节数,而不是char型数据所占字节数。

65.B#include"文件名",预处理程序首先在引用被包含文件的源文件所在的目录下搜索指定的文件,如没找到,再按系统指定的标准目录搜索。

66.B函数的

温馨提示

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

评论

0/150

提交评论