2021年山西省晋中市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021年山西省晋中市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021年山西省晋中市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021年山西省晋中市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021年山西省晋中市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

2021年山西省晋中市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列选项中,不能用作标识符的是A._1234_B._1_2C.int_2_D.2_int_

2.下面关于哈希(Hash,杂凑)查找的说法正确的是()

A.哈希函数构造的越复杂越好,因为这样随机性好,冲突小

B.除留余数法是所有哈希函数中最好的

C.不存在特别好与坏的哈希函数,要视情况而定

D.若需在哈希表中删去一个元素,不管用任何方法解决冲突都只要简单地将该元素删去即可

3.表达式a+=a-=a=9的值是()。

A.9B.-9C.18D.0

4.有以下程序:#include<stdio.h>voidsub(doublea,double*pb);intmain(){doublex,y;scanf(“%lf%lf”,&x,&y);sub(x,&y);printf(“x=%fy=%f\n”,x,y);}voidsub(doublea,double*pb){a=a-*pb;*pb=*pb-a;}程序运行时输入10.23.5并按<Enter>键,则输出结果为()。

A.x=10.200000y=-3.200000

B.x=6.700000y=-13.700000

C.x=7.000000y=-3.500000

D.x=13.400000y=-7.000000

5.以下关于链式存储结构说法错误的是()

A.比顺序存储结构的存储密度小

B.每个节点是由数据域和指针域组成

C.查找结点时链式存储比顺序存储快

D.逻辑上不相邻的节点物理上可能相邻

6.下列选项中,不是一个算法的基本特征的是()。

A.完整性B.可行性C.有穷性D.拥有足够的情报

7.以下程序intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的输出是________。

A.23B.26C.33D.36

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

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

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

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

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

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

A.正确B.错误

10.从一个长度为100的顺序表中删除第30个元素时需向前移动()个元素

A.70B.71C.69D.30

11.结构化程序设计的3种结构是()。

A.顺序结构、选择结构、转移结构

B.分支结构、等价结构、循环结构

C.多分支结构、赋值结构、等价结构

D.顺序结构、选择结构、循环结构

12.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fp=fopen(“myfile.dat”,“a+”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}程序的运行结果是()。

A.abcB.28cC.abc28D.因类型不一致而出错

13.

14.一个栈的进栈序列是a,b,c,d,e,则栈的不可能的输出序列是()。

A.edcbaB.decbaC.dceabD.abcde

15.在一个元素个数为N的数组里,找到升序排在N/5位置的元素的最优算法时间复杂度是()A.O(n)B.O(nlogn)C.O(n(logn)2)D.O(n3/2)

16.执行完下列语句段后,i值为()。A.A.2B.4C.8D.无限递归

17.下列运算符中优先级最低的算符是()。

A.||B.!=C.<;=D.十

18.

19.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置()(脚注(10)表示用10进制表示)。

A.688B.678C.692D.696

20.以下程序的输出结果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020

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

main()

{inti;

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

f(i);}

f(j)

{intj;

staticinta=1000;

autointk=1;

++k;

printf("%d+%d+%d=%d\n",a,k,j,a+k+j);

a+=10;}

22.若有如下结构体说明:

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。

【】t[20]

23.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。

24.函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,当s<t时返回负值。请填空。

my_cmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}return【】;

}

25.语句:x++;++x;x=1/x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。

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

main()

{char*p[]={"BOOL","OPK","H","SP"};

inti;

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

27.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。

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

strcen(chara[],charb[])

{intnum=0,n=0;

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

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

return(num);

}

29.在面向对象方法中,类之间共享属性和操作的机制称为______。

30.有以下程序,其功能是:以二进制“写”方式打开文件d1.dat,写入1~100这100个整数后关闭文件。再以二进制“读”方式打开文件d1.dat,将这100个整数读入到另一个数组b中,并打印输出。请填空。

#include<stdio.h>

main()

{FILE*fp;

inti,a[100],b[100];

fp=fopen("d1.dat","wb");

for(i=0;i<100;i++)a[i]=i+1;

fwrite(a,sizeof(int),100,fp);

fclose(fp);

fp=fopen("d1.dat",【】);

fread(b,sizeof(int),100,fp);

fclose(fp);

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

}

31.若a=10,b=20,则表达式!(a<b)的值是【】。

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

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

33.下面程序的运行结果是______。

voidswap(int*a,int*B)

{

int*t;

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

}

main()

{

intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}

34.以下scanf函数调用语句中对结构体变量成员的引用不正确的是{charname[20];}pup[5],*p;

35.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:

abcl23edf456gh,执行程序后输出:123456。请填空。

#include<stdio.h>

#include<ctype,h>

main()

{chars[80],d[80];inti,j;

gets(s);

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

if(【】){d[j]=s[i];j++;}

d[j]='\0';

puts(d);

}

36.以下程序中select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。

#defineN3

#defineM3

select{inta[N][M],int*n;

{inti,j,row=l,eolum=l;

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

forj=0;j<M;j++)

if(a[i][j]>a[row][colum]){row=i;colum=j:}

*n=______;

return______;

}

main()

{inta[N][M]={9,11,23.6,1,15,9,17,20},max,nj

max=select(a,&n);

printf("max=%d,line=%d\n",max.n;

}

37.数据库系统的三级模式分别为______模式、内部级模式与外部级模式。

38.下列程序的运行结果是______。

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

39.树中度为零的结点称为______。

40.数据结构分为逻辑结构与存储结构,线性链表属于【】。

三、1.选择题(20题)41.设有以下函数f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}如果在下面的程序中调用该函数,则输出结果是______。main(){inta=2,i;for(i=0;i<3;i++)printf("%d\n"f(a));}

A.789B.7911C.71013D.777

42.若有定义:“inta[2][3];”,则对a数组的第i行第j列元素的正确引用为()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

43.设有定义:intn1=0,n2,*P=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是()。

A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;

44.以下程序的输出结果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}

A.20B.21C.22D.23

45.下述程序的输出结果是#include<stdio.h>voidmain(){inta[5]={2,4,6,8,10};int*p=a,**q=&p;printf("%d,",*(p++));pfintf("%d",**q);}

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

46.下面程序的输出结果是_______。#include<stdio.h>main(){char*p[]={"DOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}

A.SOB.SPC.SPOPKD.SHOB

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

A.接口复杂的模块,其耦合程度一定低

B.耦合程度弱的模块,其内聚程度一定低

C.耦合程度弱的模块,其内聚程度一定高

D.上述3种说法都不对

48.下列程序的输出结果是()。voidf(int*x,int*y){intt;t=*x,*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i+)printf("%d,",a[i]);}

A.8,2,3,4,5,6,7,1

B.5,6,7,8,1,2,3,4

C.1,2,3,4,5,6,7,8

D.8,7,6,5,4,3,2,1

49.下列叙述中错误的是()。

A.一种数据的逻辑结构可以有多种存储结构

B.数据的存储结构与数据的处理效率无关

C.数据的存储结构与数据的处理效率密切相关

D.数据的存储结构在计算机中所占的空间不一定是连续的

50.阅读以下程序及对程序功能的描述,其中正确的是

#include<stdio.h>

main()

{FILE*in,*out;

charch,infile[10],outfile[10];

printf("Entertheinfilename:\n");

scanf("%s",infile);

printf("Entertheoutfilename:\n");

scanf("%s",outfile);

if((in=fopen(infile,"r"))==NULL)

{printf("cannotopeninfile\n");

exit(0);}

if((out=fopen(outfile,"w"))==NULL)

{printf("cannotopenoutfile\n");

exit(0);}

while(!feof(in))fputc(fgetc(in),out);

fclose(in);fclose(out);}

A.程序完成将磁盘文件的信息在屏幕上显示的功能

B.程序完成将两个磁盘文件合二为一的功能

C.程序完成将一个磁盘文件复制到另一个磁盘文件中

D.程序完成将两个磁盘文件合并并在屏幕上输出

51.下面函数的功能是______。exchange(int*ptr1,*ptr2){int*ptr;ptr=-ptr1;ptr1=ptr2;ptr2=ptr;}

A.交换*ptr1和*ptr2的值

B.无法改变*ptr1和*ptr2的值

C.可能造成系统故障,因为使用了空指针

D.交换*ptr1和*pb2的地址

52.在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为A.63B.64C.6D.7

53.变量a所占的内存字节数是______。unionU{charst[4];inti;long1;};structA{intc;unionUu;}a;

A.4B.5C.6D.8

54.请选出可用作C语言用户标识符的是()。

A.void,define,WORD

B.a3_b3,_123,IF

C.FOR,-abc,Case

D.2a,Do,$izeof

55.下列叙述中,正确的是

A.用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系

B.用E-R图只能表示实体集之间一对一的联系

C.用E-R图只能表示实体集之间一对多的联系

D.用E-R图表示的概念数据模型只能转换为关系数据模型

56.当a=1、b=3、c=5、d=4时,执行下面一段程序:if(a<B)if(c<D)x=1;elseif(a<C)if(b<D)x=2;elsex=3;elesx=6;elsex=7;程序执行后,x的值为()

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

57.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()

58.下面程序的输出结果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}

A.121,0,4B.2,2,2C.0,2,4D.0,2,2

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

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

60.有以下程序:#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中将无确定值

四、选择题(20题)61.在软件开发中,需求分析阶段产生的主要文档是()。A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书

62.对于循环队列,下列叙述中正确的是()。

A.队头指针是固定不变的

B.队头指针一定大于队尾指针

C.队头指针一定小于队尾指针

D.队头指针可以大于队尾指针,也可以小于队尾指针

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

A.

B.

C.

D.

64.对于长度为n的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是

A.插入排序为n/2B.插入排序为nC.快速排序为nD.快速排序为n(n-1)/2

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

A.intnum[0..2008];

B.intlllllll[];

C.intN:2008:

D.#defineN2008intnum[N1;intnum[N];

66.

67.

68.结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法

A.对象B.数据结构C.数据流D.目标

69.

70.设有定义:intx,Y,z;,且各变量已赋正整数值,则以下能正确表示代数式‘的C语言表达式是()。

A.…1.…0/x。/y,/z

B.1/x*Y*z

C.1/(x*Y*z)

D.1/x/y/(double)z

71.设有:

inta=1,b=2,c=3,d=4,m=2,n=2;

执行(m=a>b)&&(n=c>d)后,n的值是

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

72.程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为指针指向链表的第一个结点。

若有以下程序段:

该程序段实现的功能是()。

A.删除尾结点B.尾结点成为首结点C.删除首结点D.首结点成为尾结点

73.设有定义:intx=3;,以下表达式中,值不为l2的是()。

A.x*=x+1B.x++,3*xC.x*=(1+x)D.2*x.x+=6

74.

75.有以下程序程序的运行结果是()。

A.20B.10C.0D.出错

76.一间工厂可有多个工人,则实体工厂和工人之间的联系是

A.一对一B.一对多C.多对一D.多对多

77.有以下程序:

若要按以下形式输出数组右上半三角:

则在程序下划线处应填人的语句是()。

A.i-1B.i+1C.iD.4-i

78.数据库管理系统中负责数据模式定义和数据的物理存取构建的语言是()。

A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言

79.设“intx=2,y=1;”,则表达式(!x||Y--)的值是()。

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

80.以下只有在使用时才为该类型变量分配内存的存储类型说明是()。

A.auto和static

B.auto和register

C.register和static

D.extern和register

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头2个元素进行排序,然后把第3个字符插入到前2个字符中,插入后前3个字符依然有序;再把第4个字符插人到前3个字符中,待排序的字符串已在主函数中赋予。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.从键盘上输出10个整数存入一维数组中,按由大到小的顺序输出。

参考答案

1.D解析:本题考核的知识点是用户的标识符。在C语言中,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或者下划线,如:acd,d_ad、_adf124,_124等都是合法的标识符号.而2asdf、_sd/=都不是合法的标识符.在C语言中大写字母和小写字母被认为是两个不同的字符,如:ACD和acd是两个不同的标识符号。选项D中用下划线作为第一个字符,这是不合法的,故选项D不正确,所以,4个选项中选项D符合题意。

2.C

3.D解析:+=、-=、=等符号优先级相同结合性是由右至左,所以选D。

4.Asub函数接收两个参数:double类型变量a,double指针变量pb。首先将a与pb指向的变量值相减,结果存放在a中;然后再将pb指向的变量值与a的新值相减,结果存放在pb指向的内存空间中。sub函数不会修改实参x的值,但会修改实参y的值。当输入10.23.5时,实参x的值为10.2,y的值为3.5,执行sub函数后,x的值不变,y的值变成-3.2。故本题答案为A选项。

5.C

6.A解析:作为一个算法,一般应该具有下列4个特征:(1)可行性,即考虑到实际的条件能够达到一个满意的结果;(2)确定性,算法中的每一个步骤都必须是有明确定义的,(3)有穷性,一个算法必须在有限的时间内做完;(4)拥有足够的情报。

7.A解析:观察题目,可以发现,*p=&aa[0][0]语句实际是将数组aa的首地址赋给了指针变量p,将i的值带入for循环中,i=0时,aa[0][1]=3,*p=2;*p输出的是指针所指向的数组值,此时p所指向的是aa[O][0],输出2,而i=1时执行了++p操作使指针向后移动指向了aa[0][1],所以在输出*p时应为3。

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

9.B

10.A

11.D结构化程序设计的基本要点:①采用自顶向下、逐步求精的程序设计方法;②任何程序都可由顺序、选择和循环3种基本控制结构构造。

12.Cfprintf函数将内容写入硬盘的文件,fputs函数将字符串写入文件,最终文件的内容为abc28。故本题答案为C选项。

13.B

14.C

15.A

16.B

17.AC语言中规定运算符的优先顺序:一元算术运算符一>二元算术运算符一>关系运算符一>逻辑运算符一>赋值运算符,A项中为逻辑运算符,B项和c项都为关系运算符,D项为一元运算符。因此最低的是A项。

18.B

19.C

20.B从题目中可知,\O、\t、\\分别为一个字符,而sizeof是求字节个数的函数,其中包括\O占的字节,strlen函数是求数组长度的函数;其以\0结束,因此strlen的值为5,sizeof的值为20。

21.100+2+1=103110+2+2=114120+2+3=125130+2+4=136140+2+5=147100+2+1=103\r\n110+2+2=114\r\n120+2+3=125\r\n130+2+4=136\r\n140+2+5=147解析:静态局部变量的生存期为整个程序的运行期间,而作用域为定义该变量的函数或局部范围。自动变量的建立和撤销都是由系统自动进行的,所以称为自动变量。自动变量的作用域和生存期都为定义它的局部范围内。对同一函数的两次调用之间,自动变量的值是不保留的。而静态变量则保留。注意:局部变量和全局变量的定义及其作用范围。

22.strudctSTRUstrudctSTRU解析:结构件类型是构造数据类型,是用户自己定义的一种类型。

结构体类型的定义:

struct结构体类型名

{

成员项表;

};

定义结构体变量的的形式为:

struct结构体类型名变量1,变量2,...?

其中变量包括;一般变量、指针变量、数组变量等。

23.88解析:fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0次方,结果为8.000000。

24.*s-*t*s-*t解析:两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回0值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回。所以在空框处应填入*s-*t,保证在e>t时返回正值,当s<t时返回负值。

25.x+=1x+=1解析:本题考查'++'、'--'运算符。'++'、'--'只能作用于变量,不能用于表达式或常量;前缀形式是在使用变量之前先将其值增1或减1,后缀形式是先使用变量原来的值,使用完后再使其增1或减1。

26.SOSO解析:考查用指针引用字符串数组中元素的方法。题中需要注意两个问题:一是for循环的修正表达式共执行两次'i--'操作;二是*p[i]是对某个字符的引用。

27.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本题考查基本逻辑表达,“整数x的绝对值大于5”时值为“假”,即整数x的绝对值小于等于5,也就是整数x要大于等于-5且要小于等于5。这里“且”用“与(&&)”表示,所以C语言表达式为:(x>-5)&&(x<5)。

28.\0'n++\\0'\r\nn++解析:第1个循环是求字符串a的长度,并存储在变量num中,循环条件要控制是否取到字符串末尾的'\\0'。第2个循环通过两个变量num和n的改变,将b字符串连接到a字符串后面,并将新的字符串长度记录到num中。

29.继承继承

30.rb或"r+b"或"rb+"rb或'r+b'或'rb+'解析:根据题目要求,在下划线位置应该填入一个能实现二进制读的使用文件方式的参数即可。所以,可以填'rb'或'r+b'或'rb+'。

31.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。

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

33.3535解析:在主函数中通过定义和赋初值使p和q分别指向了x和y,执行函数调用“swap(p,q)”,把p和q中的地址值传给了形参指针变量a和b,a和b分别指向7实参x和y。在函数swap()中交换了指针变量a和b的值,并没有交换a和b指向的实参的值,所以函数调用返回后x和y依旧是原来的值。

34.D

35.s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]解析:字符数组的初始化,字符串的输入和输出的应用。C语言没有字符串变量,字符串不是存放在一个变量中而是存放在一个字符型数组中,因此为了存放字符串,常常在程序中定义字符型数组;字符串存放在字符数组中,但字符数组与字符串可以不等长,C语言规定以“\\0”字符作为字符串结束标志。

本题中,chars[80],d[80];定义了两个字符型数组,可以放入80个字符。gets函数是c语言提供的一个专门用于读字符串的函数,它读入全部字符(包括空格),直到遇到回车为止。本题中,读入字符串s后,开始比较s中的每个字符是否为数字字符,因为字符数据在内存中以相应的ASCII码存放,所以只需比较相应的ASCII码值是否在48('0'的ASCII代码)与57('9'的ASCII代码)之间,或者直接与'0','9'进行比较,如果是数字字符则将此字符存入d数组中,不是则继续进行下一字符的比较,直至s结束(即'0'的出现)。将“'\\0'”字符作为字符串d结束标志,最后调用puts函数输出d。所以在空格处应填入比较语句s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或&&48<=s[i]或57>=s[i]。

36.rowa[row][colum]row\r\na[row][colum]解析:通过对题意的分析,在select()函数中,变量row的作用是用来记录最大元素的行下标,column的作用是用来记录最大元素的列下标。程序中通过一个循环求得数组元素中最大值的行列下标,分别存放在变量row和colmnn中,根据题意,应该把行下标赋值给形参指针变量n指向的变量,把最大值a[row][columa]作为函数值返回。

37.概念(或概念级)概念(或概念级)

38.b=14b=14解析:分析程序可知,n的初始值为1,因此,while(n<=3)循环3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。当n=4时,判断条件不满足,退出循环。

39.叶子结点叶子结点解析:树中度为零的结点,也就是没有后件的结点,称为叶子结点。

40.存储结构

41.A解析:本题考查静态变量的问题。函数f中c是静态变量存放在静态存储区,在程序的整个运行期间都不释放占据的存储单元。函数f被调用3次,调用过程如下。

第1次调用;a=2、b=0、c=3,执行b++和c++后b=1、c=4,f(a)=a+b+c=2+1+4=7

第2次调用:a=2、b=0、c=4.执行b++和c++后b=1、c=5,f(a)=a+b+c=2+1+5=8

第3次调用:a=2、b=0、c=5,执行b++和c++后b=1、c=6,f(a)=a+b+c=2+1+6=9

所以输出结果为选项A。

42.A解析:本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有下列5种:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

43.A解析:根据题意,p和q为整型指针,分别指向整型变量n2和n1,选项B是将q赋给p,即p指向n1,选项C是将n1的地址赋给n2,选项D是将n2的值赋给p,均与n2=n1不等价。只有选项A中,*p即n2,*q即n1,*p=*q即等价于n2=n1。

44.B解析:第1个循环对数组a进行赋值:第2个循环对数组p进行赋值;第3个循环对k进行累加,k的初值等于5,第1次循环,k=k+p[0]*2=5+0*2=5,第2次循环,k=k+p[1]*2=5+2*2=9,第3次循环,k=k+p[2]*2=9+6*2=21并输出。

45.D

46.A解析:p[0]存放的是“BOOL\\0”的首地址;p[1]存放的是“OPK\\0”的首址等。在printf语句中输出的*p[i]表示p[i]字符串的第一个字符。在for循环中,i的初值为3,那么输出的第一个字符为“S”,接着两次i-,则输出的值为*p[1],即字符“0”,所以本题的输出为SO。

47.C解析:影响模块之间耦合的主要因素有两个:模块之间的连接形式,模块接口的复杂性。一般来说,接口复杂的模块,其耦合程度要比接口简单的的模块强,所以选项A的说法错误;耦合程度弱的模块,其内聚程度一定高,选项B错误;选项C正确。

48.D解析:函数f()的功能是对两个数据互换。在主函数中指针变量p和q分别指向数组a[8)的首和尾,在while循环中实现从首尾开始数组元素的互换操作。

49.BB。【解析】数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构。顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的。数据的存储结构与数据的处理效率密切相关。

50.C解析:本题中,最主要的是掌握几个有关文件的函数的应用。

函数名:fopen

功能:打开一个文件

调用方式FILE*fp;fp=fopen(文件名,使用文件方式);

函数名:feof

功能:检查文件是否结束

调用方式:feof(FILE*fp);

函数名:fputc

功能:把一个字符写到磁盘文件上去

调用方式:fputc(ch,fp)(ch是要输出的字符,fp是从指定的文件读入一个字符,该文件必须是以读或读写方式打开的调用方式:ch=fgetc(fp)(ch是字符变量,fp是文件指针变量);

函数名:fclose

功能:关闭一个文件

调用方式:fclose(文件指针)。

51.B解析:函数中将指针变量ptr1和ptr2中的值交换,而不是交换指针ptr1和ptr2所指变量中的值。

52.B解析:在长度为64的有序线性表中,其中的64个数据元素是按照从大到小或从小到大的顺序排列有序的。在这样的线性表中进行顺序查找,最坏的情况就是查找的数据元素不性表中或位于线性表的最后。按照线性表的顺序查找算法,首先用被查找的数据和线性表的第一个数据元素进行比较,若相等,则查找成功,否则,继续进行比较,即和线性表的第二个数据元素进行比较。同样,若相等,则查找成功,否则,继续进行比较。依次类推,直到性表中查找到该数据或查找到线性表的最后一个元素,算法才结束。因此,在长度为64的有序线性表十进行顺序查找,最坏的情况下需要比较64次。因此,本题的正确答案为选项B。

53.C解析:结构体变量所占内存长度是各成员占内存长度之和,而共用体变量所占的内存长度等于最长的成员的长度。本题结构体变量a中成员c为整型占2个字节,共用体变量u最大长度为4个字节,故选C。

54.B解析:C语言规定用户标识符由字母、数字和下划线组成,且第一个字符必须是字母或下划线,可见选项C),D)是错误的;此外,C语言不允许用户将关键字作为标识符,而选项A)中的void是C语言的关键字。

55.A解析:两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。

56.B

57.Bscanf(\u3000)语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf(\u3000)函数不能输入空格;getehar(\u3000)函数用于输入字符,其调用形式为:ch=getelaar(\u3000),getehar(\u3000)函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读入才开始执行。gets(\u3000)函数的凋用形式为:gets(str_adr),其中stradr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。9ets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc(\u3000)函数的调用形式为:ch=getc(pf)其中pf是文件指针。函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。

58.B解析:sizeof函数是取变量所占的存储空间的字节数,标识a代表常量121;constb=12;,其中数据类型可以缺省,默认为整型;enumc{a1,a2};定义了—个枚举类型enumc,a1,a2为枚举元素,在C编译时,对枚举元素按常量处理,它们的值按定义顺序依次为0,1。因此它们的字节数均为2,2,2。

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

60.A解析:本题考查的是getchar()函数。getchar()函数执行时将从键盘缓冲区中读取用户的输入,而不管输入的是否可打印字符,所以当输入a<回车>后,键盘缓冲区被输入的实际上是两个字符:'a'和'\\n'。故选项A的说法是正确的。

61.D需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择D。

62.D循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。

63.B解析:选项A中定义的是5个数组元素,但赋值的时候赋的是6个元素,所以出错;选项C不符合数组定义形式,数组名后应加上“[]”;选项D的类型说明符错误,如果用char定义就对了;选项B中的0,1,2,3,4,5分别表示对应字符的\u3000ASCII码,所以选项B是正确的。

64.D插入排序是指将无序子序列中的一个或几个记录插入到有序序列中,从而增加记录的有序子序列的长度。在最坏的情况下,当插入第一个元素时,需要比较的次数为0,插入第二个元素时,需要比较一次,插入第n个元素时,需要比较n-1次。那么直到将n个元素都插入序列中,需要比较次数的总和为0+1+2+…+n-1。因此,在最坏情况下,插入排序需要比较的次数为n(n-1)/2。

快速排序的基本思想是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可以分别对这两部分记录继续进行排序,以达到整个序列有序。它在最坏情况下,需要比较的次数也为n(n-1)/2。因此,本题的正确答案选D。

65.DC语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;c选项错误,N为变量,不能用来定义数组大小。因此D选项正确。

66.A

67.A

68.CC。【解析】结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

69.B

70.A代数表达式1/(X·Y·z)是小数,转为cf语言的表达式必须是小数。A选项由于l.0为浮点数,计算结1果自动转换为浮点数,故A选项正确。选项B,C,D的表达式均为0。答案为A选项。

71.B本题考查逻辑与运算符“&&”的使用。对于逻辑与运算符&&来说,对象的结合方式为从左往右,只有&&左边的值为真,才继续右边的运算。题目中&&左边的表达式为m=a>b,“>”运算符优先级高于“=”,故先判断a>b,因为a=1,b=2,所以a>b为假,于是m=0。“&&”左边的值为假,所以不进行右边的运算。n的值没有发生改变,n=2。

72.D本题考查链表的操作,本题中首先是s指向了它的下个结点,题目中说明了s总是指向链表的第一个结点,然后while循环找到链表的最后一个元素,然后最后一个元素指向了之前链表的头结点,之前头结点指向了空结点,所以本题实现的功能是使首结点成为尾结点。选项D正确。

73.D本题考查逗号运算符的运算方式,逗号运算符的作用是将若干表达式连接起来,它的优先级别在所有运算符中是最低的,结合方向为”自左至右”。A)选项和c)选项的结果是一样的,可展开为:x=x*(x+1)=3*4=12;B)选项中先执行x++,因为++运算符有自加功能,逗号之前执行后x的值为4,逗号后的值就是整个表达式的值,即12;D)选项逗号之前并未给x赋值,所以表达式的值就是x+=6的值,即9。因此,本题答案为D)。

74.A

75.Amalloc(sizeof(int))的作用是开辟一个长度为sizeofl:int)的存储空间,并通过强制类型转换(int*)将此存储空间的地址赋给了一个整型的指针变量P。然后执行语句*p=n,使得*p的值为10,并通过ieturn返回此值,ePa的值为l0。然后在主函数中输出a+fun(10)=10+10=20。故本题答案为A)。

76.B常见的实体之间的联系有一对一、一对多、多对一、多对多。如果对于实体集A中的每一个实体(工厂),实体集B中有n个实体(工人)(n≥0)与之联系,反之,对于实体集B中的每一个实体(工人),实体集A中至多只有一个实体(工厂)与之联系,则称实体集A与实体集B有一对多联系。

77.C此题中嵌套了两个for语句,第一个用来输出空格,第二个用来输出数字。如此类型的输出某种格式的考题,一般是采用多重循环来解决,需要考生找出输出数据的特点,并用相应的数学公式表示出来。

78.A\n数据定义语言负责数据模式定义和数据的物理存取构建;数据操纵语言负责数据的操纵;数据控制语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。无数据管理语言的说法。

\n

79.B因X为2,所以!X时表达式值为0,因Y为1,y--表达式的值为1然后自减1,y为0,所以!x||y--时表达式的值为1。

80.B在用静态static与外部extern定义变量时,系统立刻给其分配内存,而定义自动类auto与强制放入寄存器register类型变量时,只有当使用时才分配内存。

81.错误:c=arr[i];

正确:ch=arrEi];

【解析】由函数定义可知,函数proc只定义了变量ch,没有定义变量c。因此,“c=”r[i];”应改为“ch=arr[i];”。

82.\n#include'stdio.h'

\nmain

\n{inti,j,a[10];

\nfor(i=1;i<=10;i++)

\nscanf('%d',&a[i]);

\nfor(i=0;i<9=;i++)

\nfor(j=9;j>i;j--)

\nif(a[j-1]{t=a[j-1];

\na[j-1]=a[j];

\na[j]=t;}

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

\nprintf('%d',a[i]);

\n}

\n2021年山西省晋中市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列选项中,不能用作标识符的是A._1234_B._1_2C.int_2_D.2_int_

2.下面关于哈希(Hash,杂凑)查找的说法正确的是()

A.哈希函数构造的越复杂越好,因为这样随机性好,冲突小

B.除留余数法是所有哈希函数中最好的

C.不存在特别好与坏的哈希函数,要视情况而定

D.若需在哈希表中删去一个元素,不管用任何方法解决冲突都只要简单地将该元素删去即可

3.表达式a+=a-=a=9的值是()。

A.9B.-9C.18D.0

4.有以下程序:#include<stdio.h>voidsub(doublea,double*pb);intmain(){doublex,y;scanf(“%lf%lf”,&x,&y);sub(x,&y);printf(“x=%fy=%f\n”,x,y);}voidsub(doublea,double*pb){a=a-*pb;*pb=*pb-a;}程序运行时输入10.23.5并按<Enter>键,则输出结果为()。

A.x=10.200000y=-3.200000

B.x=6.700000y=-13.700000

C.x=7.000000y=-3.500000

D.x=13.400000y=-7.000000

5.以下关于链式存储结构说法错误的是()

A.比顺序存储结构的存储密度小

B.每个节点是由数据域和指针域组成

C.查找结点时链式存储比顺序存储快

D.逻辑上不相邻的节点物理上可能相邻

6.下列选项中,不是一个算法的基本特征的是()。

A.完整性B.可行性C.有穷性D.拥有足够的情报

7.以下程序intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的输出是________。

A.23B.26C.33D.36

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

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

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

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

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

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

A.正确B.错误

10.从一个长度为100的顺序表中删除第30个元素时需向前移动()个元素

A.70B.71C.69D.30

11.结构化程序设计的3种结构是()。

A.顺序结构、选择结构、转移结构

B.分支结构、等价结构、循环结构

C.多分支结构、赋值结构、等价结构

D.顺序结构、选择结构、循环结构

12.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fp=fopen(“myfile.dat”,“a+”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}程序的运行结果是()。

A.abcB.28cC.abc28D.因类型不一致而出错

13.

14.一个栈的进栈序列是a,b,c,d,e,则栈的不可能的输出序列是()。

A.edcbaB.decbaC.dceabD.abcde

15.在一个元素个数为N的数组里,找到升序排在N/5位置的元素的最优算法时间复杂度是()A.O(n)B.O(nlogn)C.O(n(logn)2)D.O(n3/2)

16.执行完下列语句段后,i值为()。A.A.2B.4C.8D.无限递归

17.下列运算符中优先级最低的算符是()。

A.||B.!=C.<;=D.十

18.

19.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置()(脚注(10)表示用10进制表示)。

A.688B.678C.692D.696

20.以下程序的输出结果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020

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

main()

{inti;

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

f(i);}

f(j)

{intj;

staticinta=1000;

autointk=1;

++k;

printf("%d+%d+%d=%d\n",a,k,j,a+k+j);

a+=10;}

22.若有如下结构体说明:

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。

【】t[20]

23.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。

24.函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,当s<t时返回负值。请填空。

my_cmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}return【】;

}

25.语句:x++;++x;x=1/x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。

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

main()

{char*p[]={"BOOL","OPK","H","SP"};

inti;

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

27.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。

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

strcen(chara[],charb[])

{intnum=0,n=0;

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

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

return(num);

}

29.在面向对象方法中,类之间共享属性和操作的机制称为______。

30.有以下程序,其功能是:以二进制“写”方式打开文件d1.dat,写入1~100这100个整数后关闭文件。再以二进制“读”方式打开文件d1.dat,将这100个整数读入到另一个数组b中,并打印输出。请填空。

#include<stdio.h>

main()

{FILE*fp;

inti,a[100],b[100];

fp=fopen("d1.dat","wb");

for(i=0;i<100;i++)a[i]=i+1;

fwrite(a,sizeof(int),100,fp);

fclose(fp);

fp=fopen("d1.dat",【】);

fread(b,sizeof(int),100,fp);

fclose(fp);

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

}

31.若a=10,b=20,则表达式!(a<b)的值是【】。

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

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

33.下面程序的运行结果是______。

voidswap(int*a,int*B)

{

int*t;

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

}

main()

{

intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}

34.以下scanf函数调用语句中对结构体变量成员的引用不正确的是{charname[20];}pup[5],*p;

35.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:

abcl23edf456gh,执行程序后输出:123456。请填空。

#include<stdio.h>

#include<ctype,h>

main()

{chars[80],d[80];inti,j;

gets(s);

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

if(【】){d[j]=s[i];j++;}

d[j]='\0';

puts(d);

}

36.以下程序中select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。

#defineN3

#defineM3

select{inta[N][M],int*n;

{inti,j,row=l,eolum=l;

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

forj=0;j<M;j++)

if(a[i][j]>a[row][colum]){row=i;colum=j:}

*n=______;

return______;

}

main()

{inta[N][M]={9,11,23.6,1,15,9,17,20},max,nj

max=select(a,&n);

printf("max=%d,line=%d\n",max.n;

}

37.数据库系统的三级模式分别为______模式、内部级模式与外部级模式。

38.下列程序的运行结果是______。

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

39.树中度为零的结点称为______。

40.数据结构分为逻辑结构与存储结构,线性链表属于【】。

三、1.选择题(20题)41.设有以下函数f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}如果在下面的程序中调用该函数,则输出结果是______。main(){inta=2,i;for(i=0;i<3;i++)printf("%d\n"f(a));}

A.789B.7911C.71013D.777

42.若有定义:“inta[2][3];”,则对a数组的第i行第j列元素的正确引用为()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

43.设有定义:intn1=0,n2,*P=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是()。

A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;

44.以下程序的输出结果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}

A.20B.21C.22D.23

45.下述程序的输出结果是#include<stdio.h>voidmain(){inta[5]={2,4,6,8,10};int*p=a,**q=&p;printf("%d,",*(p++));pfintf("%d",**q);}

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

46.下面程序的输出结果是_______。#include<stdio.h>main(){char*p[]={"DOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}

A.SOB.SPC.SPOPKD.SHOB

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

A.接口复杂的模块,其耦合程度一定低

B.耦合程度弱的模块,其内聚程度一定低

C.耦合程度弱的模块,其内聚程度一定高

D.上述3种说法都不对

48.下列程序的输出结果是()。voidf(int*x,int*y){intt;t=*x,*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i+)printf("%d,",a[i]);}

A.8,2,3,4,5,6,7,1

B.5,6,7,8,1,2,3,4

C.1,2,3,4,5,6,7,8

D.8,7,6,5,4,3,2,1

49.下列叙述中错误的是()。

A.一种数据的逻辑结构可以有多种存储结构

B.数据的存储结构与数据的处理效率无关

C.数据的存储结构与数据的处理效率密切相关

D.数据的存储结构在计算机中所占的空间不一定是连续的

50.阅读以下程序及对程序功能的描述,其中正确的是

#include<stdio.h>

main()

{FILE*in,*out;

charch,infile[10],outfile[10];

printf("Entertheinfilename:\n");

scanf("%s",infile);

printf("Entertheoutfilename:\n");

scanf("%s",outfile);

if((in=fopen(infile,"r"))==NULL)

{printf("cannotopeninfile\n");

exit(0);}

if((out=fopen(outfile,"w"))==NULL)

{printf("cannotopenoutfile\n");

exit(0);}

while(!feof(in))fputc(fgetc(in),out);

fclose(in);fclose(out);}

A.程序完成将磁盘文件的信息在屏幕上显示的功能

B.程序完成将两个磁盘文件合二为一的功能

C.程序完成将一个磁盘文件复制到另一个磁盘文件中

D.程序完成将两个磁盘文件合并并在屏幕上输出

51.下面函数的功能是______。exchange(int*ptr1,*ptr2){int*ptr;ptr=-ptr1;ptr1=ptr2;ptr2=ptr;}

A.交换*ptr1和*ptr2的值

B.无法改变*ptr1和*ptr2的值

C.可能造成系统故障,因为使用了空指针

D.交换*ptr1和*pb2的地址

52.在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为A.63B.64C.6D.7

53.变量a所占的内存字节数是______。unionU{charst[4];inti;long1;};structA{intc;unionUu;}a;

A.4B.5C.6D.8

54.请选出可用作C语言用户标识符的是()。

A.void,define,WORD

B.a3_b3,_123,IF

C.FOR,-abc,Case

D.2a,Do,$izeof

55.下列叙述中,正确的是

A.用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系

B.用E-R图只能表示实体集之间一对一的联系

C.用E-R图只能表示实体集之间一对多的联系

D.用E-R图表示的概念数据模型只能转换为关系数据模型

56.当a=1、b=3、c=5、d=4时,执行下面一段程序:if(a<B)if(c<D)x=1;elseif(a<C)if(b<D)x=2;elsex=3;elesx=6;elsex=7;程序执行后,x的值为()

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

57.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()

58.下面程序的输出结果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}

A.121,0,4B.2,2,2C.0,2,4D.0,2,2

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

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

60.有以下程序:#include<stdio.h>ma

温馨提示

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

评论

0/150

提交评论