2021年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计_第1页
2021年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计_第2页
2021年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计_第3页
2021年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计_第4页
2021年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩117页未读 继续免费阅读

下载本文档

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

文档简介

2021年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下叙述中正确的是()。

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

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

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

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

2.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}输出的结果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456

3.下述哪一个是顺序存储结构的优点()。

A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示

4.定义int*swap()指的是______。

A.—个返回整型值的函数swap()

B.一个返回指向整型值指针的函swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

5.下列有关格式输入函数scanf的叙述中正确的是()

A.输入项可以是C语言中规定的任何变量,并且在任何变量前必须加地址符号“&”

B.可以只有格式控制项,没有地址列表项

C.在输入数据时,必须规定精度。如:scanf("%4.2f",&d);

D.当输入数据时,必须指明变量地址

6.下列函数的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}

A.将a所指字符串赋给b所指空间

B.使指针b指向a所指字符串

C.将a所指字符串和b所指字符串进行比较

D.检查a和b所指字符串中是否有‘\0’

7.下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST”要求的是()。A.if(strcmp(s2,s1)==0)ST;

B.if(s1===s2)ST;

C.if(strcpy(s1,s2)==1)ST;

D.if(s1,s2==0)ST;

8.

9.

10.若有以下定义和语句

chars1[10]="abcd!",*s2="\n123\\";

printf("%d%d\n",strlen(s1),strlen(s2));

则输出结果是A.A.55B.105C.107D.58

11.

12.链表不具有的特点是()。

A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比

13.有以下程序:main(){inta[][3]={{1,2,3),{4,5,0)),(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}执行后输出结果是()。

A.7B.6C.8D.无确定值

14.已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是A.scanf("%2d%2d%2d",&i,&j,&k);

B.scanf("%d%d%d",&i,&j,&k);

C.scanf("%d,%d,%d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

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

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

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

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

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

16.将两个字符串连接起来组成一个字符串时,选用()函数。A.strlen()B.strcpy()C.strcat()D.strcmp()

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

#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

18.

19.下列程序的输出结果是()。main(){inta=4,b=5,c;if(a<B){c=a*b;printf("%d,%d,%d\n",b,a,C);}else{c=b/a;printf("%d,%d,%d\n",b,a,C);}}

A.4,5,12B.20C.5,4,20D.12

20.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()

A.不确定B.n-i+1C.iD.n-i

二、2.填空题(20题)21.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。

22.算法的复杂度主要包括空间复杂度和______复杂度。

23.调用C语言标准库函数时要求用【】命令。

24.以下程序用来统计文件中字符个数。请填空。

#include"stdio.h"

main()

{FILE*fp;longnum=OL;

if((fp=fopen("fname.dat","r")==NULL)

{Pirntf("Openerror\n");exit(0);}

while(【】)

{fgetc(fp);num++;}

printf("num=%1d\n",num-1);

fclose(fp);

}

25.若给fun函数的形参s传送字符串:"abc-6354abc",则函数的返回值是()。(字符串中包括空格)

longfun(charS[])

{longn;intsign;

for(;isspace(*s)||islower(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*S-'0');

returnsign*n;

}

26.以下程序给指针p分配三个double型动态内存单元,请填空。

#include<stdio.h>

#include<stdlib.h>

main()

{double*p;

p=(double*)malloc(【】);

p[0]=1.5;p[1]=2.5;P[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

27.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。

structnode

{intinfo;

【】link;};

28.按“先进后出”原则组织数据的数据结构是[]。

29.以下程序的运行结果是【】。

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

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

}

30.类是一个支持集成的抽象数据类型,而对象是类的【】。

31.数据结构分为逻辑结构和存储结构,循环队列属于______结构。

32.若输入21、23、34、11、2、6,则以下程序的运行结果【】。

main()

{inti;

char+p,num[6];

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

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

scanf("%d",&num[5]);

p=&num[0];

sort(p,6);

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

printf("%d\n",num[5]);

}

sort(p,m)

char*p;

intm;

{inti;

charchange,*p1,*p2;

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

{p1=p+i;

p2=p+(m-1-i);

change=*p1;

*p1=*p2;

*p2=change;

}

}

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

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

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

}

34.以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件中,形成文本文件,并将字符的个数写到文件的尾部。请填空。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[32];intcount=0;

printf(”Inputthefilename:");

scanf("%s",fname);

if((fp=fopen(【】,"w+"))==NULL)

{printf("Can'topenfile:%s\n",fname);exit(0);}

printf("Enterdata:\n");

while((ch=getchar())!='#')

{fputc(ch,fp);count++;}

fprintf(【】,"\n%d\n",count);

fclose(fp);

}

35.软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修复性等特性,其中最重要的是()。

36.实现算法所需的存储单元多少和算法的工作量大小分别称为算法的【】。

37.表示""整数x的绝对值大于5""时值为""真""的C语言表达式是【】。

38.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。

39.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【】和选择排序等。

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

#include<stdio.h>

main()

{inti;

for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);

printf("\n");

}

三、1.选择题(20题)41.下列描述中正确的是()。

A.软件工程只是解决软件项目的管理问题

B.软件工程主要解决软件产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D.软件工程只是解决软件开发中的技术问题

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

A.构成C程序的基本单位是函数

B.可以在一个函数中定义另一个函数

C.main函数必须放在其他函数之前

D.C函数定义的格式是K&R格式

43.以下程序的输出结果是()。#include<stdio.h>main(){inti;for(i=1;i<5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("$\n");

A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$

44.下列对于线性链表的描述中正确的是()。

A.存储空间不一定连续,且各元素的存储顺序是任意的

B.存储空间不一定连续,且前件元素一定存储在后件元素的前面

C.存储空间必须连续,且前件元素一定存储在后件元素的前面

D.存储空间必须连续,且各元素的存储顺序是任意的

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

A.数据的逻辑结构与存储结构必定是一一对应的

B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构

C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构

D.以上3种说法都不对

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

A.charc[]='goodmoming';

B.charc[20]="goodmorning";

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

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

47.有以下程序

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);printf("%s,%s\n",ss,aa);

}

程序的运行结果是

A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

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

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

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

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

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

49.下列程序执行后的输出结果是voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}

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

50.模块本身的内聚是模块独立性的重要性度量因素之一。在7类内聚中,具有最强内聚的—类是______。

A.顺序性内聚B.过程性内聚C.逻辑性内聚D.功能性内聚

51.设有如下三个关系表:

下列操作中正确的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

52.

若有下列定义(设int类型变量占2个字节):

inti=8,j=9;

则下列语句:

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

输出的结果是()。

A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

53.下列程序的输出结果是______。#include<stdio.h>main(){inta,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}

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

54.对下列二叉树进行中序遍历的结果是()

A.ABCDEFGHB.ABDGEHCFC.GDBEHACFD.GDHEBFCA

55.以下正确的程序段是

A.charstr1[]="12345",str2[]="abcdef";

B.charstr[10],*st="abcde";strcat(str,st);

C.charstr[10]=""。*st="abcde";strcat(str,st);

D.char*st1="12345",*st2="abcde";strcat(st1,st2);

56.函数调用strcat(strcpy(str1,str2),str3)的功能是()。

A.将字符串str1复制到字符串str2中后再连接到字符串str3之后

B.将字符串str1连接到字符串str2之后再复制到字符串str3之后

C.将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后

D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中

57.下列程序的执行结果是______。#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

58.有以下函数定义:

voidfun(intn,doublex){……}

若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

59.在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为______。

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

60.在执行完下列的C语句段之后,则B的值是()。chara='A';intb;B=((34&&56)&&(a<'b'));

A.0B.1C.TRUED.FALSE

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

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

A.C程序对预处理命令行的处理是在程序执行的过程中进行的

B.预处理命令行的最后不能以分号表示结束

C.#defineMAX是合法的宏定义命令行

D.在程序中凡是以“#”开始的语句行都是预处理命令行

63.

64.执行语句printf(“%u\n”,+12345)的输出结果是()。

A.12345B.0C.-1D.非定值

65.

66.有以下程序:

#include<stdio.h>

main

{inta=1,b=2;

while(a<6){b+=a;a4+=2;b%=10;)

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

}

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

A.5,11B.7,1C.7,11D.6,1

67.在下列结论中,只有一个是错误的,它是()。

A.C语言允许函数的递归调用

B.C语言中的continue语句,可以通过改变程序的结构而省略

C.有些递归程序是不能用非递归算法实现的

D.C语言中不允许在函数中再定义函数

68.

69.下列数据结构中,属于非线性结构的是A.循环队列B.带链队列C.二叉树D.带链栈

70.

71.有以下程序

72.

73.有以下程序:

#include<stdio.h>

#defineN3

voidfun(inta[][N],intb[])

{inti,j;

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

{b[i]=a[i][0];

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

if(b[i]<a[i][j])b[i]=a[i][j];

}

}

main()

{intx[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;

fun(x,y);

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

printf("\n");

}

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

A.2,4,8,

B.3,6,9,

C.3,5,7,

D.1,3,5,

74.

75.设x,y和z都是int型变量,且x=3,y=4,z=5,则下列表达式中,值为0的表达式是

A.x&&yB.x<=y

C.x||++y&&y-zD.!(x<y&&!z||1)

76.软件按功能可以分为:应用软件、系统软件和支撑软件(工具软件)。下面属于应用软件的是().

A.编译程序B.操作系统C.教务管理系统D.汇编程序

77.

若希望下列的程序运行后输出25,程序空白处的正确选项是()。

main

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

printf("%d",j-40);

}

A.i=l;i<4;++i

B.i=1;i<3;++i

C.i=4;i>2;i--

D.i=2;i<4;++i

78.以下程序的功能是计算:s=1+12+123+1234+12345

A.tB.t*10C.t*100D.t+10

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

A.可以给指针变量赋一个整数作为地址值

B.函数可以返回地址值

C.改变函数形参的值,不会改变对应实参的值

D.当在程序的开头包含头文件stdi0.h时,可以给指针变量赋NULL、、、

80.有以下程序:

若运行时输入:123<回车>,则输出结果是()。

A.编译错误2000B.102000C.122030D.10

五、程序改错题(1题)81.已知一个数列从0项开始的前3项为0,0,1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc的功能是:计算并输出该数列前n项的和sum。n的值通过形参传人。例如,当n=20时,程序的输出结果应为42762.000000。

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

doubleproc(intn)

{

doublesum,s0,s1,s2,s;

intk;

sum=1.0;

if(n<=2)

sum=0.0;

s0=0.0;

s1=0.0;

s2=1.0;

//****found****

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

}

{

s=s0+s1+s2;

sum+=S:

s0=s1;

s1=s2;

//****found****

s2=s;

returnsum;

}

voidmain

{

intn;

system("CLS");

printf("InputN=");

scanf("%d",&nJ;

printf("%f\n",proc(n));

}

六、程序设计题(1题)82.假定输入的字符串中只包含字母和*号。请编写函数proc,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容则应当是a*bc*def*g****。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:#include<stdio.h=:{>#include<conio.h>woidproc(char*str){}voidmaincharstr[81];printf("Enterastring:\n");gets(str);proc(str):printf("Thestringafterdeleted:\n");puts(str);}

参考答案

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

2.B本题考查实参与形参调用,从实参传递到形参时,只是数值的传递,调用函数中值的改变不会影响主函数中的值,因此原样输出。

3.A

4.B解析:—个函数可以带回—个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是—个返回整型指针的函数。

5.D解析:如果是指针型变量或数组名,则变量前不加地址符号&,所以选项A的说法有误。必须有地址列表项才能实现正确输入,所以选项B的说法有误。在输入数据时,不可以指定实型数据的精度,所以选项C的说法有误。只有选项D的说法正确。

6.A题目的fun函数内,while循环条件为“(*b=*a)!=‘\\0’”,执行时先把指针a所指向的字符赋给指针b所在的内存单元。如果该字符不是结束标识‘\\0’,执行循环体“a++;b++;”,指针a、b分别指向下一个字符单元。再判断循环条件,如果成立,继续把指针a所指向的字符赋给指针b所在的内存单元,直到遇到结束标识为止。故本题答案为A选项。

7.A解析:strcmp(char*,char*),函数strcmp用于比较两个字符串的长度,长者为大,若字符个数也一样,则从左至右依次比较相同位上的字符,字符大小按ASCⅡ表值计算,直到最后一个字符,若还相同,则两个字符串相等,返回值0。选项A中if(strcmp(s2,s1)=0)ST,若s2等于s1,则返回值0,0等于0,所以逻辑表达式strcmp(s2,s1)=0为真执行ST。

8.D

9.A

10.A

11.D

12.BB选项的特点是顺序存储结构的特点,即数组的特点。

13.A解析:本题定义了一个指向由3个元素组成的一维数组的指针变量pa,通过赋值让它指向具有2行3列的数组a,此时用指针变量pa,表示数组元素a[i][j]的形式是pa[i][j]。for循环执行了3次;第一次i值为0,执行pa[1][0]=pa[1][0]-1,执行后a[1][0]的值变为3;第二次i值为1,执行pa[1][1]=pa[1)[1]-1,执行后a[1][1]的值为4;第三次i值为2,执行pa[1][2]=1,执行后a[1][2]的值变为1。故printf语句输入的值为2+4+1=7。所以,A选项为所选。

14.C

15.A解析:在C语言中,应当在定义函数时指定函数值的类型。凡不加类型说明的函数,默认按整型处理。在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转换,即函数类型决定返回值的类型。

16.C将两个字符串连接起来组成一个字符串,选用strcat函数来连接。

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

18.C

19.C解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a<b成立,执行下列的复合语句,得c=a*b=20,b、a的值不变。

20.B

21.交换排序交换排序解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。

22.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。

23.includeinclude解析:include命令可调用标准的C语言库函数,可以用一对尖括号或一对双引号将“.h”文件括起来,在include前面要加“#”。

24.!feof(fp)!feof(fp)解析:本题中统计文件中字符个数的算法可描述为;首先判断文件位置指针是否指向了文件尾,如果不是则读出一个字符,同时字符的个数加1,再判断文件位置指针是否位于文件尾,如此循环,直到文件位置指针位于文件尾为止。本题首先以读文件的方式打开了文件“fname.dat”,如果打开成功则把返回的文件型指针赋值给fp,然后通过循环求文件中的字符数。首先判断文件位置指针是否位于文件尾,如果不是则循环读取字符,每次字符数加l。所以下划处应填循环条件,文件位置指针不是指向文件尾,即“!feof(fp)”。

25.-6354-6354解析:本题的考查点是函数的返回值。这个函数的目的是提取出由函数的形参传送来的字符串中的数字字符,并通过相应字符位置计算出它们数值形式的幂,最后返回字符串中的数字字符的数值形式,所以函数的返回值应当是“-6354”。

26.3*sizeof(double)或243*sizeof(double)或24解析:观察程序可知,本题要求用malloc函数分配三个double型的动态内存单元。

27.structnode*structnode*解析:本题中的结构类型名为structnode,所以空白处应填:structnode*。即定义一个指向自身的结构体指针。

28.栈栈解析:栈和队列都是—种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的—端进行插入或删除操作,是—种“先进后出”的线性表;而队列只允许在表的—端进行插入操作,在另—端进行删除操作,是—种“先进先出”的线性表。

29.a=2b=1a=2,b=1解析:本题考查了switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的case2:分支,最后a和b的值分别为2和1。

30.实例将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,对象则是其对应类的一个实例。

31.存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。可知,循环队列应当是物理结构。

32.6211342321

33.3535解析:考查swap()函数。函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,参形指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。

34.fnamefpfname\r\nfp解析:fopen()函数实现打开文件的功能,通常的调用方式为:FILE*fp;fp=fopen(文件名,使用文件方式),因此,第一个横线处要求填写要打开文件的名字fname。fprintf()函数的—般调用方式为:fprintf(文件指针,格式字符串,输出表列),所以第二个横线处应填写fp。

35.正确性正确性解析:软件需求规格说明书是需求分析阶段的最后成果,通过建立完整的信息描述、详细的功能和行为描述、性能需求和设计约束的说明、合适的验收标准,给出对目标软件的各种需求。软件需求规格说明书的特点:①正确性;②无歧义性;③完整性;④可验证性;⑤一致性;⑥可理解性;⑦可追踪性。其中最重要的是正确性。

36.空间复杂度和时间复杂度算法的复杂性是指对一个在有限步骤内终止算法和所需存储空间大小的估计。算法所需存储空间大小是算法的空间复杂性,算法的计算量是算法的时间复杂性。

37.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整数x的绝对值大于5,则x大于5或x小于5,用C语言表示即为:x>5||x<-5或者x<-5||x>5。故本题答案为;x>5||x<-5或者x<-5||x>5。

38.77解析:此表达式为三目运算符,++a的值为6,b--的值为6,则整个表达式的值为++a的值,++a的值为7。请注意前缀++,--和后缀++,--的区别。

39.交换排序交换排序解析:常见的排序方法有插入排序(包括简单插入排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选择排序(包括简单选择排序和堆排序等)。注意:常见的排序方法及其作用机制和区别。

40.ACEACE解析:在本题中,for循环体每执行完一次,变量i的值自加两次。i的初值为\'a\',执行一次循环后变为\'c\',之后再变成\'e\',当其变为\'g\'时,循环条件若不满足,循环终止,故本题共输出3个字符。表达式'i-\'a\'+\ue008\'A\'\ue009'即表示输出i对应的大写字母,结果为ACE。

41.C\r\n软件工程是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。软件工程的主要思想是强调在软件开发工程中需要应用工程化的原则。软件工程用来解决以下问题:软件需求的增长得不到满足、软件开发成本和进度无法控制、软件质量难以保证、软件不可维护或维护程度低、软件得成本不断提高、软件开发生产率的提高赶不上硬件的发展和应用需求的增长。软件项目的管理、软件产品的生产率、软件开发中的技术都是软件工程需要解决的部分问题。因此选项C正确。

42.A解析:本题考查C语言的综合基础知识。构成C程序的基本单位是函数,一个C程序总是从main函数开始执行,而不论main函数在整个程序中的位置如何。C语言的函数定义都是互相平行、独立的,在定义函数时,一个函数内不能定义另一个函数。C函数定义的一般格式有两种:传统格式和现代格式。传统格式也称K&R格式,是早期编译系统使用的格式;现代格式又称ANSI格式,是现代编译系统使用的格式。

43.C解析:程序中当i不能整除2时输出*,然后输出#,能够整除2时将结束本次循环,进入到下一次循环。当循环结束后,输出$。

44.A解析:在链式存储结构中,存储数据的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,数据元素之间的逻辑关系,是由指针域来确定的。由此可见,选项A的描述正确。因此,本题的正确答案为A。

45.D解析:本题考查数据结构的基本知识。数据之间的相耳关系称为逻辑结构。通常分为4类基本逻辑结构,即集合、线性结构、树形结构、图状结构或网状结构。存储结构是逻辑结构在存储器中的映象,它包含数据元素的映象和关系的映象。存储结构在计算机中有两种,即顺序存储结构和链式存储结构。顺序存储结构是把数据元素存储在一块连续地址空间的内存中;链式存储结构是使用指针把相互直接关联的节点链接起来。因此,这两种存储结构都是线性的。可见,逻辑结构和存储结构不是一一对应的。因此,选项A和选项B的说法都是错误的。无论数据的逻辑结构是线性的还是非线性的,只能选择顺序存储结构或链式存储结构来实现存储。程序设计语言中,数组是内存中一段连续的地址空间,可看作是顺序存储结构。可以用数组来实现树型逻辑结构的存储,比如二叉树。因此,选项C的说法是错误的。

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

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

47.D解析:本题中fun函数实现丁字符串函数str-eat的功能,将字符串aa连接到字符串ss的末尾。调用fun函数时,形参t和s分别指向了字符串ss和aa,然后通过一个while循环使t指向字符串ss的结束符的位置,第二个while循环将字符串aa中的字符(包括结束符'\\0')逐个复制到字符串ss的末尾处。

48.A解析:getchar函数读入字符时,空格、回车符都作为字符读入,因此A正确。

49.A解析:函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针型。它的作用是将一个变量的地址传递到另一个函数中。当数组名作参数时,如果形参数组中的各元素的值发生变化,实参数组元素的值也将随之发生变化。

50.D解析:内聚性是一个模块内部各元素间彼此结合的紧密程度的度量。内聚共有7类,它们之间的内聚性由弱到强排列顺序为:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚。

51.C解析:本题考查数据库的关系代数运算。R表中只有一个域名A,有两个记录(也叫元组),分别是m和n;S表中有两个域名,分别是B和C,其所对应的记录分别为1和3。注意观察表T,它是由R的第一个记录依次与S的所有记录组合,然后再由R的第二个记录与S的所有记录组合,形成的一个新表。上述运算恰恰符合关系代数的笛卡儿积运算规则。关系代数中,笛卡儿积运算用“×”来表示。因此,上述运算可以表示为T=R×S。因此,本题的正确答案为C。

52.B解析:本题考查printf函数的格式。在printf函数中,如果格式说明符中有两个%说明,则将第1个%后面的字符原样输出,并不输出其对应的变量值。

53.A

54.C遍历就是不重复地访问二叉树的所有结点。二叉树遍历的方法有3种:前序遍历、中序遍历和后序遍历。记住3种遍历的顺序:①前序,访问根→按前序遍历左子树→按前序遍历右子树。②中序,按中序遍历左子树→访问根→按中序遍历右子树。③后序,按后序遍历左子树→按后序遍历右子树→访问根。所以对该二叉树的中序遍历结果为GDBEHACF。

55.C解析:本题考查了一维字符数组的定义和初始化。选项C中str[10]初始化为空,可以不必进行类似''的空赋值,字符数组若没有进行初始化赋值,默认的字符为空,并且定义完str数组后,应该用“,”分隔而不是“。”,所以选项C错误。

56.C解析:strcat(s1,s2)是把s2字符串连接到s1字符串末尾,strcpy(s1,s2)是把s2字符串复制给s1字符串,要保证s1能容纳下连接或复制后的字符串。

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

58.C解析:选项A中应将y和m前面的函数的类型说明符去掉,故选项A不正确;选项B中函数传了2个参数,其中一个为整型一个为浮点型,而fun()函数在定义时声明的2个参数,一个为整型一个为双精度型,其参数类型不一致,故选项B不正确;选项D在调用函数时,不应该再声明其返回类型,故迭项D不正确.所以,4个选项中选项C符合题意。

59.C解析:二分法查找是一种线性查找方法,其基本方法是:首先要用要查找的关键码与线性表中间位置结点的关键码值进行比较,这个中间结点把线性表分为两个子表,比较相等则查找完毕,不等则根据查找结果确定下一步的查找应该在哪一个子表中进行,如此下去,直到找到满足条件的结点:或者确定表中没有这样的结点。用二分法查找关键码值11的顺序如下所示,其中[]内为本次栓索的子表,()内为该子表的中间结果。从图中可以看出,经四次查找后,确定表中没有这样的结点。因此本题正确答案为选项C(4)。

第一次:[3,6,8,10,12,(15),16,18,21,25,30]

第二次:[3,6,(8),10,12],15,16,18,21,25,30

第三次:[3,6,8,[(10),(12)],15,16,18,21,25,30]

第四次:[3,6,8,10,[(12)],(15),16,18,21,25,30]查找失败。

60.B解析:本题考查C语言3个知识点:①将一个字符赋给一个字符变量时,并不是将该字符本身存储到内存中,而是将该字符对应的ASCII码存储到内存单元中;②大写字母的ASCII码值小于其对应小写字母的ASCII码值;③只要逻辑与运算符&&的两个运算对象都为非零,返回值就是1。

61.A第一次循环返回5+5为l0,第二次循环返回l4+14为28,所以选择A)。

62.AC程序对预处理命令行的处理是在程序编译的过程中进行的,所以选择A)。

63.C

64.A"%u"表示输出无符号的整数(如果输出值前有符号,将自动转化为相应的无符号数输出)。

65.A

66.B“b+=a;”等价于“b=b+a;”,“a+=2;”等价于“a=a±2;”,“bA=10;”等价于“b=b%=10;”。循环体执行3次,最终结果为7,1。

67.CC语言不仅可以递归调用,还可以对自己进行递归调用,但是,不允许在函数中再次定义函数,c语言中的coutinue语句,可以通过改变其结构来实现。

68.B

69.C根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类:线性结构和非线性结构。循环队列、带链队列和带链栈都是线性结构,而二叉树是非线性结构。

70.C

71.A本题考查的是递归算法的分析。一个直接或间接地调用自身的算法称为递归算法。在一个递归算法中,至少要包含一个初始值和一个递归关系。本题的fun()函数在x等于0或1时返回3,而在其余情况下返回x—fhn(x一2),所以本题的递归算法可以这样表示:fun(x)=3(x--0或x=1)(初始值)fun(x)=x-fun(x一2)(x≠0且x≠1)(递归关系)在主函数中输出的结果是run(7),而fun(7)=7-fun(5)=7-(5-fun(3))=7-(5一(3一fun(1)))。

72.B

73.B\nFun函数功能是把数组a的每一行的最大值赋给b,a的第一行的最大值是3,第二行的最大值是6,第三行的最大值是9,所以答案是3,6,9。

\n

74.C

75.D在本题中,定义了三个整型变量x,y,z,并分别赋初值为3,4,5。然后求结果为0的表达式。

选项A中的表达式x&&y,由于在C语言中,有非0即真的定义,即变量x,y的值都不为0,因此表达式的结果不为0。

选项B中的表达式x<=y,由于变量y的值比变量x的值大,因此,该表达式的结果也不为0。

选项C中的表达式x||++y&&y-z,由于运算符&&的优先级较||高,那么本表达式等价于x||(++y&&y-z),在表达式中,首先运算++y,将变量y的值变为5,然后执行y-z,得到结果为0,因此,(++y&&y-z)的运算结果为0,但x为非0值,最终的结果不为0。

选项D中的表达式!(x<y&&!z||1),首先运算!z,结果为0,由此可知x<y&&!z的结果为0,但由于||运算符后有一个1,因此,(x<y&&!z||1)部分的结果为1,而再进行逻辑非运算结果为0。

76.C编译程序、操作系统、汇编程序都属于系统软件.只有教务管理系统才是应用软件.因此本题答案为C):

77.D

\n要想使程序输出是25,则在printf中,j-40=25,j=65,而j初值是50,“j+=a[i];”也可写成i=j+a[i];,j=50+a[i]=65,当a[i]=15,条件满足,数组下标由0开始,当i=2时,指向元素10,i=3时,10+5=15,退出循环体,所以选项D正确。

\n

78.B1、12、123、1234、12345可以写成l=0*10+1、12=1*10+2、123=12*10+3、1234=123*10+4、12345=1234*10+5,按照这种规律后一项可以等于前一项乘以10再加上循环变量。这属于循环里面比较难的题目,需要考生找出其数据的内在规律,并转化为计算机语言,基本上都是累加和累乘两种。

79.A不能将一个整数直接赋给指针变量作为地址,因此A)是错误的。函数的返回值可以是地址,即指针。函数调用中形参值的变化不会传递给实参。故本题答案为A)。

80.B首先二维数组a中的元素都初始化为0,其次定义了指向数组的指针ptr,并且依次将ptr指向二维数组

81.\n\t(1)错误:for(k=4;k<n;k++)

\n正确:for(k=4;k<=11;k++)

\n(2)错误:s2=S;

\n正确:s2=s;)

\n【解析】题目中要求计算数列前n项的和,包括第n项,因此“for(k=4;k<n;k++)”中的“k<n”应改为“k<=n”;根据C语言的语法规则,for循环体中的多条语句必须在大括号“{”和“}”之间,因此,要在语句s2=s;后加上)。\n

82.\n\tvoidproc(char*str)\n\n\n\t{\n\n\n\tchar*p=str:\n\n\n\twhile(*p==*)p++;//通过P的移动来达\n\n\n\t到使P指向第一个不是*号的字符\n\n\n\tfor(;*p!=\0

;p++,str++)//把从第一个\n\n\n\t不是*号的字符放到a中‘\n\n\n\t*str=*P:\n\n\n\t*str=\0

;//最后用\0作为字符串结束标志\n\n\n\t}\n\n\n\t【解析】题目中要求将字符串中的前导*号全部删除首先将指针p移动到第一个不是*的字符,将指针P之后的字符放入原来的字符串中,并为新的字符串添加结束符。\n2021年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下叙述中正确的是()。

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

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

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

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

2.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}输出的结果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456

3.下述哪一个是顺序存储结构的优点()。

A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示

4.定义int*swap()指的是______。

A.—个返回整型值的函数swap()

B.一个返回指向整型值指针的函swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

5.下列有关格式输入函数scanf的叙述中正确的是()

A.输入项可以是C语言中规定的任何变量,并且在任何变量前必须加地址符号“&”

B.可以只有格式控制项,没有地址列表项

C.在输入数据时,必须规定精度。如:scanf("%4.2f",&d);

D.当输入数据时,必须指明变量地址

6.下列函数的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}

A.将a所指字符串赋给b所指空间

B.使指针b指向a所指字符串

C.将a所指字符串和b所指字符串进行比较

D.检查a和b所指字符串中是否有‘\0’

7.下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST”要求的是()。A.if(strcmp(s2,s1)==0)ST;

B.if(s1===s2)ST;

C.if(strcpy(s1,s2)==1)ST;

D.if(s1,s2==0)ST;

8.

9.

10.若有以下定义和语句

chars1[10]="abcd!",*s2="\n123\\";

printf("%d%d\n",strlen(s1),strlen(s2));

则输出结果是A.A.55B.105C.107D.58

11.

12.链表不具有的特点是()。

A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比

13.有以下程序:main(){inta[][3]={{1,2,3),{4,5,0)),(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}执行后输出结果是()。

A.7B.6C.8D.无确定值

14.已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是A.scanf("%2d%2d%2d",&i,&j,&k);

B.scanf("%d%d%d",&i,&j,&k);

C.scanf("%d,%d,%d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

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

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

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

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

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

16.将两个字符串连接起来组成一个字符串时,选用()函数。A.strlen()B.strcpy()C.strcat()D.strcmp()

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

#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

18.

19.下列程序的输出结果是()。main(){inta=4,b=5,c;if(a<B){c=a*b;printf("%d,%d,%d\n",b,a,C);}else{c=b/a;printf("%d,%d,%d\n",b,a,C);}}

A.4,5,12B.20C.5,4,20D.12

20.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()

A.不确定B.n-i+1C.iD.n-i

二、2.填空题(20题)21.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。

22.算法的复杂度主要包括空间复杂度和______复杂度。

23.调用C语言标准库函数时要求用【】命令。

24.以下程序用来统计文件中字符个数。请填空。

#include"stdio.h"

main()

{FILE*fp;longnum=OL;

if((fp=fopen("fname.dat","r")==NULL)

{Pirntf("Openerror\n");exit(0);}

while(【】)

{fgetc(fp);num++;}

printf("num=%1d\n",num-1);

fclose(fp);

}

25.若给fun函数的形参s传送字符串:"abc-6354abc",则函数的返回值是()。(字符串中包括空格)

longfun(charS[])

{longn;intsign;

for(;isspace(*s)||islower(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*S-'0');

returnsign*n;

}

26.以下程序给指针p分配三个double型动态内存单元,请填空。

#include<stdio.h>

#include<stdlib.h>

main()

{double*p;

p=(double*)malloc(【】);

p[0]=1.5;p[1]=2.5;P[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

27.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。

structnode

{intinfo;

【】link;};

28.按“先进后出”原则组织数据的数据结构是[]。

29.以下程序的运行结果是【】。

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

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

}

30.类是一个支持集成的抽象数据类型,而对象是类的【】。

31.数据结构分为逻辑结构和存储结构,循环队列属于______结构。

32.若输入21、23、34、11、2、6,则以下程序的运行结果【】。

main()

{inti;

char+p,num[6];

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

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

scanf("%d",&num[5]);

p=&num[0];

sort(p,6);

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

printf("%d\n",num[5]);

}

sort(p,m)

char*p;

intm;

{inti;

charchange,*p1,*p2;

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

{p1=p+i;

p2=p+(m-1-i);

change=*p1;

*p1=*p2;

*p2=change;

}

}

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

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

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

}

34.以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件中,形成文本文件,并将字符的个数写到文件的尾部。请填空。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[32];intcount=0;

printf(”Inputthefilename:");

scanf("%s",fname);

if((fp=fopen(【】,"w+"))==NULL)

{printf("Can'topenfile:%s\n",fname);exit(0);}

printf("Enterdata:\n");

while((ch=getchar())!='#')

{fputc(ch,fp);count++;}

fprintf(【】,"\n%d\n",count);

fclose(fp);

}

35.软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修复性等特性,其中最重要的是()。

36.实现算法所需的存储单元多少和算法的工作量大小分别称为算法的【】。

37.表示""整数x的绝对值大于5""时值为""真""的C语言表达式是【】。

38.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。

39.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【】和选择排序等。

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

#include<stdio.h>

main()

{inti;

for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);

printf("\n");

}

三、1.选择题(20题)41.下列描述中正确的是()。

A.软件工程只是解决软件项目的管理问题

B.软件工程主要解决软件产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D.软件工程只是解决软件开发中的技术问题

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

A.构成C程序的基本单位是函数

B.可以在一个函数中定义另一个函数

C.main函数必须放在其他函数之前

D.C函数定义的格式是K&R格式

43.以下程序的输出结果是()。#include<stdio.h>main(){inti;for(i=1;i<5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("$\n");

A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$

44.下列对于线性链表的描述中正确的是()。

A.存储空间不一定连续,且各元素的存储顺序是任意的

B.存储空间不一定连续,且前件元素一定存储在后件元素的前面

C.存储空间必须连续,且前件元素一定存储在后件元素的前面

D.存储空间必须连续,且各元素的存储顺序是任意的

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

A.数据的逻辑结构与存储结构必定是一一对应的

B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构

C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构

D.以上3种说法都不对

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

A.charc[]='goodmoming';

B.charc[20]="goodmorning";

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

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

47.有以下程序

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);printf("%s,%s\n",ss,aa);

}

程序的运行结果是

A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

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

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

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

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

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

49.下列程序执行后的输出结果是voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}

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

50.模块本身的内聚是模块独立性的重要性度量因素之一。在7类内聚中,具有最强内聚的—类是______。

A.顺序性内聚B.过程性内聚C.逻辑性内聚D.功能性内聚

51.设有如下三个关系表:

下列操作中正确的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

52.

若有下列定义(设int类型变量占2个字节):

inti=8,j=9;

则下列语句:

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

输出的结果是()。

A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

53.下列程序的输出结果是______。#include<stdio.h>main(){inta,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}

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

54.对下列二叉树进行中序遍历的结果是()

A.ABCDEFGHB.ABDGEHCFC.GDBEHACFD.GDHEBFCA

55.以下正确的程序段是

A.charstr1[]="12345",str2[]="abcdef";

B.charstr[10],*st="abcde";strcat(str,st);

C.charstr[10]=""。*st="abcde";strcat(str,st);

D.char*st1="12345",*st2="abcde";strcat(st1,st2);

56.函数调用strcat(strcpy(str1,str2),str3)的功能是()。

A.将字符串str1复制到字符串str2中后再连接到字符串str3之后

B.将字符串str1连接到字符串str2之后再复制到字符串str3之后

C.将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后

D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中

57.下列程序的执行结果是______。#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

58.有以下函数定义:

voidfun(intn,doublex){……}

若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

59.在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为______。

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

60.在执行完下列的C语句段之后,则B的值是()。chara='A';intb;B=((34&&56)&&(a<'b'));

A.0B.1C.TRUED.FALSE

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

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

A.C程序对预处理命令行的处理是在程序执行的过程中进行的

B.预处理命令行的最后不能以分号表示结束

C.#defineMAX是合法的宏定义命令行

D.在程序中凡是以“#”开始的语句行都是预处理命令行

63.

64.执行语句printf(

温馨提示

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

评论

0/150

提交评论