2021-2022年辽宁省鞍山市全国计算机等级考试C语言程序设计_第1页
2021-2022年辽宁省鞍山市全国计算机等级考试C语言程序设计_第2页
2021-2022年辽宁省鞍山市全国计算机等级考试C语言程序设计_第3页
2021-2022年辽宁省鞍山市全国计算机等级考试C语言程序设计_第4页
2021-2022年辽宁省鞍山市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年辽宁省鞍山市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

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

A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

B.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

C.用C语言编写的程序称为源程序,它以ASCII形式存放在一个文本文件中

D.C语言源程序经编译后生成扩展名为.obj的目标文件

2.当接受用户输入的含有空格的字符串时,应使用()函数。

A.gets()B.getchar()C.scanf()D.printf()

3.若程序中有宏定义行“#defineN100”,则下列叙述中正确的是()。

A.宏定义行中定义了标识符N的值为整数100

B.在编译程序对C语言源程序进行预处理时用100替换标识符N

C.上述宏定义行实现将100赋给标识符N

D.在运行时用100替换标识符N

4.第

17

若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是

A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)

5.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“THIS\0”,*b=“OK\0\0”;printf(“%d,%d,%d,%d”,strlen(a),sizeof(a),strlen(b),sizeof(b));}程序运行后的输出结果是()。

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

6.

7.在图采用邻接表存储时,求最小生成树的Prim算法的时间复杂度为()。

A.O(n)B.O(n+e)C.O(n2)D.O(n3)

8.判断字符串s1是否大于字符串s2,应该使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

9.有以下程序:#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

10.以下程序的输出结果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}

A.20B.31C.321D.210

11.以下程序执行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不确定D.0

12.如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量().

A.为全局变量,在本程序文件范围内有效

B.为局部变量,只在该函数内有效

C.为局部变量,只在该复合语句中有效

D.定义无效,为非法变量

13.若有说明charc[7]={'s','t','r','i','n','g'};则对元素的非法引用是()。

A.c[0]B.c[9-6]C.c[4*2]D.c[2*3]

14.

15.有如下程序段

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

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

}

程序运行后输出的结果是A.A.63

B.36

C.编译出错

D.00

16.若有定义int(*pt)[3];,则下列说法正确的是A.定义了基类型为int的三个指针变量

B.定义了基类型为int的具有三个元素的指针数组pt

C.定义了一个名为*pt、具有三个元素的整型数组

D.定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组

17.可以判断一个有向图中是否含有回路的方法为()。

A.广度优先遍历B.深度优先遍历C.拓扑排序D.求最短路径

18.以下程序的输出结果是()。main{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;for(k=1;k<3;k++)printf("%s\n",w[k]);A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL

19.设串s1='ABCDEFG',s2='PQRST',函数StrCat(x,y)返回x和y串的连接串,StrSub(s,i,j)返回串s的从序号i的字符开始的j个字符组成的子串,StrLen(s)返回串s长度,则StrCat(StrSub(s1,2,StrLen(s2)),StrSub(s1,StrLen(s2),2))的结果串()。

A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF

20.设有定义:structcomplex{intreal,unreal;}data1={1,8},data2;则下列赋值语句中错误的是()。

A.data2=(2,6);

B.data2=data1;

C.data2.real=data1.real;

D.data2.real=data1.unreal;

二、2.填空题(20题)21.下面invert函数的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

voidinvert(charstr[])

{inti,j,【】;

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;

}

}

22.以下程序中函数fun()的功能是构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单向链表中所有结点中的字符串。请填空完成函数disp。

#include<atdio.h>

typedefstructnode/*链表结点结构*/

{charsub[3];

structnode*next;

}Node

Node~un(chars)/*建立链表*/

{......}

voiddisp(Node*h)

{Node*Ps

p=h->next;

while(【】)

{printf("%s\n",p->suh);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);prinff("\n");

23.若有如下程序:

voidsub()

{staticintx=6;

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

main()

{intm;

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

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

24.fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{

introw,col,max,min;

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

{

for(max=a[row][0],col=1;col<N;col++)

if(【】)max=a[row][col];

if(row==0)min=max;

elseif(【】)min=max;

}

returnmin;

}

25.关系表达式x<y<z,用C语言的表达式为【】。

26.开发软件所需要的高成本和产品的低质量之间有着尖锐的矛盾,这种现象被人们称之为【】。

27.当先后输入1、3、4、12、23时,屏幕上出现【】;再输入12时,则屏幕上出现【】。

#include<stdio.h>

#defineN5

main()

{inti,j,number,top,bott,min,loca,a[N],flag;

charc;

printf("Pleaseinput5numbers(a[i]>a[i-1])\n");

scanf("%d",&a[0]);

i=1;

while(i<N)

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

if(a[i]>=a[i-1))i++;

}

printf("\n");

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

printf("\n");

flag=1;

while(flag)

{scanf("%d",&number);

loca=0;

top=0;

bott=N-1;

if((number<a[0])||(number>a[N-1]))loca=-1;

while((loca==0)&&(top<=bott))

{min=(bott+top)/2;

if(number==a[min])

{loca=min;

printf("%disthe%dthnumber\n",number,loca+1);

}

elseif(number<a[min])bott=min-1;

elsetop=min+1;

}

if(loca==0||loca==-1)printf("%disnotinthelist.\n",number);

c=getchar();

if(c=='N'||c=='n')flag=0;

}

}

28.strcat函数的作用是【】。

29.以下程序的输出结果为【】。

#defineJFT(x)x*x

main()

{inta,k=3;

a=++JFT(k+1);

printf("%d",a);

}

30.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。

31.若a是int型变量,则下列表达式的值为______。

(a=2*3,a*2),a+4

32.下列语句的输出结果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

33.若下面程序的输出结果是4,请填空。

main()

{inti,j,k;

k=0;i=j=【】;

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

}

34.以下程序调用随机函数得到N个20以内的整数放在s数组中。函数fun的功能是找出s数组中的最大数(不止一个)所在下标传回主函数进行输出,并把最大值作为函数值返回,请填空。

#defineN30

man()

{ints[N],d[N],i,k,m;

for(i=0,i<N;i++){s[i]=rand()%20;printf("%3d",s[i]);}

m=fun(【】);

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

printf(”Theindex;\n");

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

printf("\n\n");

}

fun(int*w,int*d,int*k)

{inti,j,m=0,v;

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

if(w[i]>w[m])【】;

v=w[m];

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

if(w[i]==v)【】;

*k=【】;

return【】;

}

35.有以下程序

#include<stdio.h>

main()

{charch1,ch2;intn1,n2;

ch1=getchar();ch2=getchar(

n1=ch1-'0';n2-n1*10+(ch2-'0');

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

}

程序运行时输入:12<回车>,执行后输出结果是______。

36.下面程序的输出结果是【】。

main()

{intarr[10],i,k=0;

for(i=0;i<10;i++)arr[i]=i;

for(i=0;i<4;i++)k+=arr[i]=i;

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

}

37.数据元素之间______的整体称为逻辑结构。

38.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。

39.用树形结构表示实体之间联系的模型是()。

40.以下程序的运行结果为【】。

main()

{inti,j,a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},b[4][3];

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

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

b[j][i]=a[i][j];

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

{for(j=0;j<3;j++)

printf("%-3d",b[i][j]);

printf("\n");

}

}

三、1.选择题(20题)41.若有以下定义的语句

structstudent

{intage;

intnum;};

structstudentstu[3]={{1001,20},{1002,19},{1003,21}};

main()

{structstudent*p;

p=stu;

…}

则以下不正确的引用是

A.(p++)->numB.p++C.(*p).numD.P=&stu.age.

42.设x和y均为int型变量,且x=10,y=3,则以下语句的输出结果是()printf("%d,%d\n",x--,--y);

A.10,3B.9,3C.9,2D.10,2

43.下列说法不正确的是()。

A.C程序是以函数为基本单位的,整个程序由函数组成

B.C语言程序的一条语句可以写在不同的行上

C.C程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写

D.C程序的每个语句都以分号结束

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

A.一个逻辑数据结构只能有一种存储结构

B.数据的逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

45.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_______。

A.地址传递B.单向值传递C.由实参传给形,再由形参传回实参D.传递方式由用户指定

46.以下程序的输出结果是#include<stdio.h>in[fun(intn,int*s){intn,f2;if(n==0‖n==1)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;}}voidmain(){intx;fun(6,&x);pfintf("\n%d",x);}

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

47.若有下列语句:chara[]="xyz";charb[]=}'x','y','z'};则下列叙述正确的是______。

A.数组a和数组b不等价

B.数组a和数组b的长度相同

C.数组a占用空间大小等于数组b占用空间大小

D.数组a占用空间大小大于数组b占用空间大小

48.下列不是合法的C语言语句是()。

A.a=5B.{inti;i++;}C.;D.{;}

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

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

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

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

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

50.如下程序的输出结果是

#include<stdio.h>

main()

{charch[2][5]={"6937","8254"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

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

for(j=0;p[i][j]>′\0′;j+=2)

s=10*s+p[i][j]-′0′;

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

A.69825B.63825C.6385D.693825

51.将E-R图转换到关系模式时,实体与实体间的联系可以表示成()。

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

52.以下程序的输出结果是______。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

53.有以下程序:main(){intk=5,n=0;while(k>0);{switch(k){default;break;case1:n+=k;case2;case3:n+=k;}k--;}printf("%d\n",n);}程序运行后的输出结果是______。

A.0B.4C.6D.7

54.若已定义x和y为double类型,则表达式x=1,y=x+5/2的值是______。

A.3B.4C.3D.3.5

55.有以下程序:main(){inta[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,)},i,j,k,t;for(i=0;i<4;i++)for(j=0;j<3;j++)for(k=j+1;k<4;k++)if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/for(i=0;i<4;i++)printf("%d,",a[i][i]);}程序运行后的输出结果是()。

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

56.有以下程序#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen("D1v.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

57.数据管理技术随着计算机技术的发展而发展。数据库阶段具有许多特点,但下面列出的特点中,______不是数据库阶段的特点。

A.数据结构化B.数据面向应用程序C.数据共享性高D.数据具有较高的独立性

58.若有如下程序:sub(int*t,inta[3][4]){intm,n;for(m=0;m<3;m++)for(n=0;n<4;n++){*t=a[m][n];t++;}}main(){int*t,s[3][4)={{1,2,3),{4,5,6),{7,8,9}};t=(int*)malloc(50);sub(t,s);printf("%d,%d\n",t[4],t[7]);}则程序运行后的输出结果是()。

A.4,7B.4,0C.5,8D.程序错误

59.以下数组定义中错误的是()。

A.intx[][3]={0};

B.intx[2][3]={{1,2},{3,4},{5,6}};

C.intx[][3]={{1,2,3},{4,5,6}};

D.intx[2][3]=(1,2,3,4,5,6};

60.以下关于函数的叙述中正确的是______。A.每个函数都可以被其他函数调用(包括main函数)

B.每个函数都可以被单独编译

C.每个函数都可以单独运行

D.在一个函数内部可以定义另一个函数

四、选择题(20题)61.

下面for语句的循环次数为()。

for(x=1,y=0;(y!=19)&&(x<6);x++);

A.是无限循环B.循环次数小定C.最多执行6次D.最多执行5次

62.

63.

有以下程序

#include<stdio.h>

intfun(chars[])

{intn=0;

while(*s<=9&&*s>=0){n=10*n+*s-o;s++;)

return(n);

}

main

{chars[10]={6,1,*,4,*,9,*,0,*);

printf("%d",fun(s));

}

程序运行的结果是()。

A.9B.61490C.61D.5

64.下列关于数据库设计的叙述中,正确的是()。

A.在需求分析阶段建立数据字典

B.在概念设计阶段建立数据字典

C.在逻辑设计阶段建立数据字典

D.在物理设计阶段建立数据字典

65.有以下程序:

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

A.5B.24C.32D.40

66.下列关于C语言文件的叙述中正确的是()。

A.文件由一系列数据依次排列组成,只能构成二进制文件

B.文件由结构序列组成,可以构成二进制文件或文本文件

C.文件由数据序列组成,可以构成二进制文件或文本文件

D.文件由字符序列组成,其类型只能是文本文件

67.

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

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

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

则输出结果是()。

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

69.有以下程序

#defineN15

fun(inta[],intn,intm)

{inti,j;

for(i=m;i>=n;i--)

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

}

main()

{inti,a[N]={1,2,3,4,5,6,7,8,9,10};

fun(a,3,7);

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

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

}

程序的运行结果是A.A.45678

B.44567

C.45567

D.45677

70.下面四个选项中,均是不合法的用户标识符的选项是()。

A.

B.

C.

D.

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

A.在C语言程序中,main函数必须放在其他函数的最前面

B.每个后缀为C的C语言源程序都可以单独进行编译

C.在C语言程序中,只有main函数才可单独进行编译

D.每个后缀为.C的C语言源程序都应该包含一个main函数

72.

73.若有定义语句:inta[21[3],*P[3];则以下语句中正确的是()。

A.p:a;B.p[0]=a;C.p[O]=&a[1][2];D.1a[1]=&a;

74.

75.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系

76.以下选项中,能用做用户标识符的是()。

A.voidB.8_8C._0_D.unsigned

77.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}输出结果是()。A.28B.27C.42D.4l

78.有以下程序

A.357B.753C.369D.751

79.有以下函数:

函数的功能是()。

A.将Y所指字符串赋给x所指存储空间

B.查找x和y所指字符串中是否有

C.统计x和y所指字符串中最前面连续相同的字符个数

D.统计x和Y所指字符串中相同的字符个数

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:对M名学生的学习成绩,按从低到高的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

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

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

试题程序:

六、程序设计题(1题)82.编写函数fun(),其功能是:求出1~1000中能被7或11整除,但不能同时被7和ll整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.AC语言中的非执行语句不会被编译,不会被转换成二进制的机器指令,所以A选项错误。由C语言构成的指令序列称为C语言源程序,C语言源程序经过C语言编译程序编译之后,生成一个扩展名为.obj的二进制文件(称为目标文件);最后要由“连接程序”把此目标文件与C语言提供的各种库函数连接起来生成一个扩展名为.exe的可执行文件。故本题答案为A选项。

2.A

3.B宏定义在编译程序时做了一个简单的替换,所以B选项正确。故本题答案为B选项。

4.B解析:条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式17表达式2:表达式3其求解顺序是:先求解表达式1,若为非O(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。并且注意++、--的用法。

5.Astrlen函数求得参数中字符串的长度(不包括字符串结束标识“\\0”)sizeof函数求得特定类型参数所占存储空间的长度。题干中a是数组名,由于定义时省略维数大小,因此数组大小是初始化的字符个数,即a的数组大小为6。综上,strlen(a)只计算字符“T”“H”“I”“S”,结果为4;sizeof(a)求得数组a的大小,结果为6;指针b指向一个字符串“OK\\0\\0”,所以strlen(b)只计算字符“O”“K”,结果为2;sizeof(b)求得指针占用存储空间的大小,结果为4。故本题答案为A选项。

6.D

7.B

8.C解析:本题考查字符串比较函数strcmp()。调用形式:strcmp(s1,s2),其中s1、s2分别是字符串存储区的首地址。函数功能:比较字符串str1和str2,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数(注意:不能使用关系运算符比较两个字符串的大小)。

9.A根据题意,当s=1时,输出65;当s=2时,输出6;当S=3时,则输出64;当S=4时,输出5;当s=5时,输出6;当s=0时,程序直接退出。所以最后答案为6566456,A选项正确。

10.A解析:n--是先使用后自减,--n是先自减后使用。n=4时,执行n--后,n变为3,执行--n后,n变为2,所以,第一次输出时,n为2;同上过程,第二次输出时,n为0。

11.Csum+=i等价于sun+i,在本题中sum没有赋初值,而题中只输出sum的值,因此整个结果为不确定值。

12.C

13.C

14.B

15.B在本题中,程序首先定义了一个无返回值的函数fun,该函数带有两个整型的指针形参变量,在函数体中,首先定义一个整型指针变量k,然后试图利用k来交换a和b的结果。但处理语句k=a;很明显是对地址进行赋值操作。在C语言中,指针变量作为函数参数时,可以改变被指向的变量的值,但不能改变指针变量本身的值,即我们可以改变实参指向的变量的值,不能使实参指向其他的变量。因此,本函数并不能交换形参所指向变量的结果。

在主函数中,首先定义了两个整型变量a和b,并分别被初始化为3和6,然后定义两个指针变量x和y,分别指向a和b,接着调用fun函数,传递的实参为指针变量x和y,根据前面对fun函数的分析可知,调用该函数后并不能实现a和b数组的交换,因此,执行输出语句后,输出的结果是36。本题正确答案选B。

16.D解析:定义了一个指向一维数组的指针,该一维数组具有三个int型元素,按照C语言中二维数组的定义知,二维数组先按照行排列,再按照列排列,故选D。

17.C

18.D当k=1时,循环成立,输出w[l]的数组即EFGH,接着执行k++后k为2;当k=2时,循环成立,输出w[2]的数组即IJKL,接着执行k++后,k为3;当k=3时,循环不成立,退出。

19.D

20.AA选项中的语句可以在声明变量的同时为data2赋值,赋值语句应写作“data2={2,6};”。故本题答案为A选项。

21.k-1k\r\n-1解析:本题通过定义一中间值k,实现字符串str内容的交换。

22.p!=NULL或P或p!=0或p!='0'p->next或(*p).nextp!=NULL或P或p!=0或p!='0'\r\np->next或(*p).next解析:程序中定义了一个结构体类型名Node,其中定义了一个指向结点类型的指针next。接下来用Node定义了头结点指针变量h和指向第一个结点的指针变量p,在满足p未指向最后一个结点的空指针时(即为NULL),输出p所指向结点的字符串,所以第一处应填p!=NULL,然后将p指向下一个非空结点,所以第二处应填P->next或与其等效的形式,反复执行直到所有的结点都输出。

23.310

24.a[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)max<min或min>max或max<=min或min>=maxa[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)\r\nmax<min或min>max或max<=min或min>=max解析:本题有两层for循环,主函数中定义了整型变量row、col、max和min,其中row用来存放外循环中的循环次数,col用来存放内循环中的次数,max记录每行中的最大值,min记录所有行中最大值中的最小值。在内循环中,首先给max赋初值为每行的第0列元素值,然后从第一列开始依次与max进行比较。如果大于max则将其值赋给max,当每一行循环结束,max记录了每一行的最大值。所以第一个空应该填a[row][col]>max或a[row][col]>=max。退出内循环,在第一次退出内循环时,将min赋初值为第0行的max,然后在每次退出内循环时,将min和每行的max比较,如果大于max,则将max值赋min,所以第二个空应该填max>min或mm>max,当退出外循环时,min为所有行中的最大值的最小值。

25.(x<y)&&(y<z)(x<y)&&(y<z)解析:x<y<z的意思是y大于x并且y小于z。在C语言中,表达“并且”用逻辑与运算符“&&”。

26.软件危机软件危机

27.134122312isthe4thnumber.

28.连接两个字符数组中的字符连接两个字符数组中的字符解析:strcat函数的作用是连接两个字符数组中的字符串。

29.99解析:本题中首先将宏替换掉,则表达式为a=++k+1*k+1=4+1*4+1=9,故最后输出a的值为9。

30.完整性控制完整性控制

31.1010解析:此题考查逗号表达式。逗号表达式的值是最后一个表达式的值,所以本题的返回值是a+4。前面已经给a赋值6,所以追回值a+4=6+4=10。

32.aaaaAAAAAaaaaAAAAA解析:函数strcat(sp,'AAAAA')的作用是将字符中“AAAAA”连接到字符串sp的末尾,并自动覆盖字符数组sp末尾的\'\\0\'。

33.-2-2解析:题目中定义并初始化了变量k为0,最后输出k的值,要求为4,而在此期间只有k+=-(i+j);这条语句改变了k的值,即要求表达式-(i+j)的值为4。所以,答案应该为-2,因为只有i=j=-2时,表达式-(i+j)的值才为4。

34.sd&km=id[j++]=ijv

35.1212解析:本题考核的知识点是字符类型数据的表示方法和存储形式。字符类型的数据在内存中以相应的ASCII码存放,在C语言中,字符数据可以等价为与其相应的ASCII码的整数,还可以作为整数参加运算。在本题中,n1=ch1-'0'='1'-'0'=49-48=1n2=n1*10+(ch2-'0')=1*10+('2'-'0')=10+2=12,所以,最后输出为12。

36.66解析:本题第1个for循环是为数组arr元素赋初值。第2个for循环是分别用i=0,1,2,3给数组元素arr[0]、arr[1]、arr[2]、arr[3]赋值,再累加到变量k中,k=0+1+2+3=6。

37.逻辑关系逻辑关系

38.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。

39.层次模型层次模型解析:层次模型是最早发展起来的数据库模型。层次模型的基本结构是树形结构。

40.159261037114812159\r\n2610\r\n3711\r\n4812解析:程序的功能是将一个二维数组的行和列元素互换,存到另一个二维数组中。

41.D解析:考查对结构体成员的引用方法。结构体成员的引用可以用'结构体变量名.成员名'或者'结构体变量指针->成员名'两种方式来引用。

42.D

43.C解析:本题涉及C语言基本的3个知识点:①C语言的源程序是由函数构成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主函数;②C语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以写在不同的行上,或者一行也可以写多条语句;③注释行虽然对程序的运行不起作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释行还是很有必要的。

44.D解析:数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和在此集合中定义的若干关系来表示。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接等存储结构。但是不同的存储结构的数据的处理效率不同。

45.B解析:C语言函数中的参数传递方式有传值与传址两种方式,传值方式是指将实参的值复制一份传递给形参,而传址方式是指将实参的变量地址传递给形参,也就是实参的引用。

46.B

47.D解析:数组a的存储空间占4个字节(结束符'\\0'占一字节),数组a的存储空间占3个字节。

48.A解析:选项A)是一个表达式,它后面没有分号结尾(C语言中规定语句必须以分号结束),所以它不是语句;选项B)用一个花括号把几条语句括起来了,这是一个复合语句;选项C)中只有一个分号,是一个空语句;选项D)是个复合语句,也是一个空语句。

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

50.C解析:考查通过指针引用字符串数组中的元素。通过行指针p来实现数组元素的引用。用格式说明符%s进行整串输入与输出。

51.B解析:将E-R图转换成指定RDBMS中的关系模式是数据库逻辑设计的主要工作。从E-R图到关系模式的转换是比较直接的,实体和联系都可以表示成关系。

52.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并输出。

53.D解析:在switch语句中,若case语句后没有break语句,则执行完本层case后会继续执行后面case中的操作。k的初值为5,while条件成立,进入switch(5),执行default语句,退出switch,执行k--后得4,再进入while循环,执行switch(4),退出switch,再执行k--后得3,继续while循环,执行switch(3),n=n+k=3,再执行k--后得2,进入while循环,执行case2,再执行n=n+k=5,然后执行k--后得1,最后一次进入while循环,执行case1,n=n+k=6,然后继续执行case2和case3后的语句,n=n+k=7,且执行k--后得0,此时while条件不满足,退出循环,输出n的值为7。

54.C解析:本题注意数据类型的转换以及“/”的使用方法。

55.A解析:本题首先定义了一个4行4列的二维数组,并用了三层for循环来进行由小到大的排序。外层循环变量i表示数组的列.第二层循环变量j表示数组的行,第三层循环用于求第i列第j行的最小值,其中通过if语句对相关数值进行比较和交换。最后通过for循环对排序后数组对角线上的元素输出。

56.A

57.B解析:数据的结构化是数据库阶段的重要特征之一。在数据库阶段,数据不再面向应用,而是面向整个系统,数据的共享性高、冗余小、易于扩展。由于数据库三级模式间的两级映像,所以数据具有较高的独立性。

58.B解析:本题定义了一个sub()函数,其作用为将一个二维数组按行复制到t所指的连续内存空间内。主程序中首先使用malloc()函数为t申请了50个字节的内存空间,然后调用sub()函数,将二维数组s的内容复制到t申请的内存空间内,最后输出t的第5个元素(t[4])和第8个元素(t[7]),即为3行4列二维数组中的s[1][0]和s[1][3]。s[1][0]是初始化列表中第二个大括号中的第一个值4,而s[1][3]应该是初始化列表中第二个大括号中的第4个值,但没有这么多初始值,C语言在这种情况下会自动将该元素设置为0,即s[3][4]={{1,2,3},{4,5,6},{7,8,9}}等价于s[3][4]={{1,2,3,0},{4,5,6,0),{7,8,9,0}}。所以最后输出结果是4,0,应该选择B。

59.B解析:选项B的第1维长度为2,而初始化列表外花括号中包含了3个内花括号,所以该选项的定义错误,故应该选择B。

60.B解析:本题考查函数的一些概念.main()函数是一个程序的主函数,它由系统调用,所以选项A不正确。一个C语言源程序文件可以只包含一个函数,每个源文件都可以被单独编译成。obj文件,最后链接成可执行文件。因此每个函数都可以被单独编译,选项B正确。一个C程序必须从主函数main()开始运行,其他函数只能是直接或间接被main()函数调用才能得以运行,因此选项C错误。C语言不支持函数的嵌套定义,所有函数只能是全局函数,所以选项D错误。故应该选择B。

61.D

\n本题考查for循环的使用。根据条件考虑x的取值变化,x从1取到5,可以循环5次,但并不知道y是如何变化的,有可能出现y=19提前跳出循环的情况,所以是最多执行5次。

\n

62.C

63.C

\n在fun函数中,while循环的功能是逐个取字符数组s的字符判断其是否是数字。若是则将这些数字组成一个数保存到变量n中,并返回变量n的值。

\n

64.A数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。故答案为A选项。

65.C本题的含义是在1—40的蔓敦的范围中,只有当i的值能被5整除,且i+2的值能被3薹纛时,打印i的值,满跫这个条件的只有32,选择c选项。

66.C文件由数据序列组成,可以构成二进制文件或文本文件。故本题答案为C选项。

67.A

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

\n

69.B题目中的程序包括主程序main和fun函数。主程序中定义了一个数组a,并赋给了初值。通过调用fun函数,对数组a中的值进行更改操作,最后要求的结果是输出数组a中a[3]~a[7]的值。解决本题的关键在于清楚地理解fun函数的功能。fun函数有3个形参,包括1个整型数组a[],2个整型变量n和m。fun函数的功能是将数组a[i+1]的值等于a[i]的值,i的初始值大小为m,依次减1,直到数值等于n。主函数调用fun函数时,输入的实参为(a,3,7),即fun函数要将数组a[i+1]的值等于a[i]的值,i的取值范围从7到3,如a[8]=a[7]。fun函数执行完毕,数组a中的值变为1,2,3,4,4,5,6,7,9,10。输出a[3]~a[7]的值为4,4,5,6,7。

70.AC语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项A)中got0和

71.BC语言是一种成功的系统描述语言,具有良好的移植性,每个后缀为.C的C语言源程序都可以单独进行编译。

72.A

73.CA选项错误,因为P是指向一个指针数组,作为数组名,不能指向别的地方。B选项错误,因为P[0]是一个int指针,也就是int-;而a是一个指向指针的指针in‘}}。c选项正确,因为p[O]是一个int},a[1][2]是int,&a[1][2]是int+,类型吻合。D选项错误,因为a作为数组名,不能取地址。即使能取,P[1]是int·,&a是int+t;,类型不对。因此C选项正确。

74.C

75.C(10)C)解析:DB即数据库(Database),是统一管理的相关数据的集合;DBMS即数据库管理系统(DatabaseManagementSystem),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法;DBS即数据库系统(DatabaseSystem)由如下5部分组成,数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。

76.C标识符由字母、数字和下划线组成。开头必须是字母或下划线且区分大小写。在C语言中,预先定义了一些标识符,以作专门用途,称为关键字,标识符不能与关键字相同。选项A和D是关键字,选项B是数字开头的,所以都不正确。

77.C只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择C选项。

78.A二维数组定义行数可以省略,列数不能省略,所以答案选择A)。

79.C本题中由循环条件可知遇到‘\0’或x与y所指的字符的值不等中的一个条件时就结束,所以功能是统计x和Y所指字符串中最前面连续相同的字符个数。

80.C81.(1)错误:*t=calloe(m,sizeof(STU));

正确:(structss*)calloc(m,sizeof(STU));

(2)错误:for(i=j=0;i<M;j++)

正确:for(i=j=0;i<M;i++)

(3)错误:t[k].s=b[j].s;

正确:t[k]=b[j];

【解析】由函数proc()可知,变量t是指向动态存储空间的变量,因此不能间接访问运算符,而函数calloc的返回值类型为void*,要进行显式类型转换,因此“*t=calloc(m,si-zeof(STU));”应改为“(structss*)calloc(m,sizeof(STU));”。

由程序可知,变量i为控制学生个数的变量,因此“for(i=j=

82.

【解析】根据题意,所写函数要用for循环实现对整数1~1000的遍历;通过if语句找出能被7或11整除,但不能同时被7和11整除的所有整数,因为同时被7和11整除的整数一定能被77整除,且不能被77整除的数不一定就是能被7或11整除,可得出表达式“(i%7==0||i%11==O)&&i%77!=0”;再按题目要求,将找出来的整数放在a所指的数组中,通过n返回这些数的个数即可。

2021-2022年辽宁省鞍山市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

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

A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

B.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

C.用C语言编写的程序称为源程序,它以ASCII形式存放在一个文本文件中

D.C语言源程序经编译后生成扩展名为.obj的目标文件

2.当接受用户输入的含有空格的字符串时,应使用()函数。

A.gets()B.getchar()C.scanf()D.printf()

3.若程序中有宏定义行“#defineN100”,则下列叙述中正确的是()。

A.宏定义行中定义了标识符N的值为整数100

B.在编译程序对C语言源程序进行预处理时用100替换标识符N

C.上述宏定义行实现将100赋给标识符N

D.在运行时用100替换标识符N

4.第

17

若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是

A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)

5.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“THIS\0”,*b=“OK\0\0”;printf(“%d,%d,%d,%d”,strlen(a),sizeof(a),strlen(b),sizeof(b));}程序运行后的输出结果是()。

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

6.

7.在图采用邻接表存储时,求最小生成树的Prim算法的时间复杂度为()。

A.O(n)B.O(n+e)C.O(n2)D.O(n3)

8.判断字符串s1是否大于字符串s2,应该使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

9.有以下程序:#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

10.以下程序的输出结果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}

A.20B.31C.321D.210

11.以下程序执行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不确定D.0

12.如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量().

A.为全局变量,在本程序文件范围内有效

B.为局部变量,只在该函数内有效

C.为局部变量,只在该复合语句中有效

D.定义无效,为非法变量

13.若有说明charc[7]={'s','t','r','i','n','g'};则对元素的非法引用是()。

A.c[0]B.c[9-6]C.c[4*2]D.c[2*3]

14.

15.有如下程序段

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

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

}

程序运行后输出的结果是A.A.63

B.36

C.编译出错

D.00

16.若有定义int(*pt)[3];,则下列说法正确的是A.定义了基类型为int的三个指针变量

B.定义了基类型为int的具有三个元素的指针数组pt

C.定义了一个名为*pt、具有三个元素的整型数组

D.定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组

17.可以判断一个有向图中是否含有回路的方法为()。

A.广度优先遍历B.深度优先遍历C.拓扑排序D.求最短路径

18.以下程序的输出结果是()。main{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;for(k=1;k<3;k++)printf("%s\n",w[k]);A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL

19.设串s1='ABCDEFG',s2='PQRST',函数StrCat(x,y)返回x和y串的连接串,StrSub(s,i,j)返回串s的从序号i的字符开始的j个字符组成的子串,StrLen(s)返回串s长度,则StrCat(StrSub(s1,2,StrLen(s2)),StrSub(s1,StrLen(s2),2))的结果串()。

A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF

20.设有定义:structcomplex{intreal,unreal;}data1={1,8},data2;则下列赋值语句中错误的是()。

A.data2=(2,6);

B.data2=data1;

C.data2.real=data1.real;

D.data2.real=data1.unreal;

二、2.填空题(20题)21.下面invert函数的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

voidinvert(charstr[])

{inti,j,【】;

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;

}

}

22.以下程序中函数fun()的功能是构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单向链表中所有结点中的字符串。请填空完成函数disp。

#include<atdio.h>

typedefstructnode/*链表结点结构*/

{charsub[3];

structnode*next;

}Node

Node~un(chars)/*建立链表*/

{......}

voiddisp(Node*h)

{Node*Ps

p=h->next;

while(【】)

{printf("%s\n",p->suh);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);prinff("\n");

23.若有如下程序:

voidsub()

{staticintx=6;

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

main()

{intm;

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

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

24.fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{

introw,col,max,min;

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

{

for(max=a[row][0],col=1;col<N;col++)

if(【】)max=a[row][col];

if(row==0)min=max;

elseif(【】)min=max;

}

returnmin;

}

25.关系表达式x<y<z,用C语言的表达式为【】。

26.开发软件所需要的高成本和产品的低质量之间有着尖锐的矛盾,这种现象被人们称之为【】。

27.当先后输入1、3、4、12、23时,屏幕上出现【】;再输入12时,则屏幕上出现【】。

#include<stdio.h>

#defineN5

main()

{inti,j,number,top,bott,min,loca,a[N],flag;

charc;

printf("Pleaseinput5numbers(a[i]>a[i-1])\n");

scanf("%d",&a[0]);

i=1;

while(i<N)

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

if(a[i]>=a[i-1))i++;

}

printf("\n");

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

printf("\n");

flag=1;

while(flag)

{scanf("%d",&number);

loca=0;

top=0;

bott=N-1;

if((number<a[0])||(number>a[N-1]))loca=-1;

while((loca==0)&&(top<=bott))

{min=(bott+top)/2;

if(number==a[min])

{loca=min;

printf("%disthe%dthnumber\n",number,loca+1);

}

elseif(number<a[min])bott=min-1;

elsetop=min+1;

}

if(loca==0||loca==-1)printf("%disnotinthelist.\n",number);

c=getchar();

if(c=='N'||c=='n')flag=0;

}

}

28.strcat函数的作用是【】。

29.以下程序的输出结果为【】。

#defineJFT(x)x*x

main()

{inta,k=3;

a=++JFT(k+1);

printf("%d",a);

}

30.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。

31.若a是int型变量,则下列表达式的值为______。

(a=2*3,a*2),a+4

32.下列语句的输出结果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

33.若下面程序的输出结果是4,请填空。

main()

{inti,j,k;

k=0;i=j=【】;

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

}

34.以下程序调用随机函数得到N个20以内的整数放在s数组中。函数fun的功能是找出s数组中的最大数(不止一个)所在下标传回主函数进行输出,并把最大值作为函数值返回,请填空。

#defineN30

man()

{ints[N],d[N],i,k,m;

for(i=0,i<N;i++){s[i]=rand()%20;printf("%3d",s[i]);}

m=fun(【】);

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

printf(”Theindex;\n");

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

printf("\n\n");

}

fun(int*w,int*d,int*k)

{inti,j,m=0,v;

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

if(w[i]>w[m])【】;

v=w[m];

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

if(w[i]==v)【】;

*k=【】;

return【】;

}

35.有以下程序

#include<stdio.h>

main()

{charch1,ch2;intn1,n2;

ch1=getchar();ch2=getchar(

n1=ch1-'0';n2-n1*10+(ch2-'0');

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

}

程序运行时输入:12<回车>,执行后输出结果是______。

36.下面程序的输出结果是【】。

main()

{intarr[10],i,k=0;

for(i=0;i<10;i++)arr[i]=i;

for(i=0;i<4;i++)k+=arr[i]=i;

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

}

37.数据元素之间______的整体称为逻辑结构。

38.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。

39.用树形结构表示实体之间联系的模型是()。

40.以下程序的运行结果为【】。

main()

{inti,j,a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},b[4][3];

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

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

b[j][i]=a[i][j];

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

{for(j=0;j<3;j++)

printf("%-3d",b[i][j]);

printf("\n");

}

}

三、1.选择题(20题)41.若有以下定义的语句

structstudent

{intage;

intnum;};

structstudentstu[3]={{1001,20},{1002,19},{1003,21}};

main()

{structstudent*p;

p=stu;

…}

则以下不正确的引用是

A.(p++)->numB.p++C.(*p).numD.P=&stu.age.

42.设x和y均为int型变量,且x=10,y=3,则以下语句的输出结果是()printf("%d,%d\n",x--,--y);

A.10,3B.9,3C.9,2D.10,2

43.下列说法不正确的是()。

A.C程序是以函数为基本单位的,整个程序由函数组成

B.C语言程序的一条语句可以写在不同的行上

C.C程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写

D.C程序的每个语句都以分号结束

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

A.一个逻辑数据结构只能有一种存储结构

B.数据的逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

45.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_______。

A.地址传递B.单向值传递C.由实参传给形,再由形参传回实参D.传递方式由用户指定

46.以下程序的输出结果是#include<stdio.h>in[fun(intn,int*s){intn,f2;if(n==0‖n==1)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;}}voidmain(){intx;fun(6,&x);pfintf("\n%d",x);}

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

47.若有下列语句:chara[]="xyz";charb[]=}'x','y','z'};则下列叙述正确的是______。

A.数组a和数组b不等价

B.数组a和数组b的长度相同

C.数组a占用空间大小等于数组b占用空间大小

D.数组a占用空间大小大于数组b占用空间大小

48.下列不是合法的C语言语句是()。

A.a=5B.{inti;i++;}C.;D.{;}

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

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

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

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

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

50.如下程序的输出结果是

#include<stdio.h>

main()

{charch[2][5]={"6937","8254"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

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

for(j=0;p[i][j]>′\0′;j+=2)

s=10*s+p[i][j]-′0′;

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

A.69825B.63825C.6385D.693825

51.将E-R图转换到关系模式时,实体与实体间的联系可以表示成()。

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

52.以下程序的输出结果是______。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

53.有以下程序:main(){intk=5,n=0;while(k>0);{switch(k){default;break;case1:n+=k;case2;case3:n+=k;}k--;}printf("%d\n",n);}程序运行后的输出结果是____

温馨提示

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

评论

0/150

提交评论