2021-2022年宁夏回族自治区石嘴山市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第1页
2021-2022年宁夏回族自治区石嘴山市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第2页
2021-2022年宁夏回族自治区石嘴山市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第3页
2021-2022年宁夏回族自治区石嘴山市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第4页
2021-2022年宁夏回族自治区石嘴山市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年宁夏回族自治区石嘴山市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序:main{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,12,},{13,14,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j<i;j++)printf("%4c",);for(j=________;J<4;j++)printf("%4d",num[i][j]);printf("\n");}}若要按以下形式输出数组右上半三角1234678111216则在程序下划线处应填入的是()。A.i-1B.iC.i+1D.4一i

2.深度为5的二叉树至多有C个结点。

A.16B.32C.31D.10

3.有三个关系R,S和T如下:

其中关系T由关系R和s通过某种操作得到,该操作为()。

A.选择B.交C.投影D.并

4.若有说明语句: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);

5.若已知一个栈的进栈序列是1,2,3…n,其输出序列是P1,P2,P3,…PN,若P1=n,则Pi(1<i<p)为()。

A.IB.n-iC.n-i+1D.不确定

6.设有函数说明语句:intfun(int,int);以及函数指针定义语句:int(*f)(int,int);若要使函数指针指向函数fun的入口地址,以下选项中正确的是()。

A.f=fun();B.*f=fun;C.f=fun;D.*f=fun();

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

A.C语言函数中定义的自动变量,系统不自动赋确定的初值

B.在C语言的同一函数中,各复合语句内可以定义变量,其作用域仅限于本复合语句内

C.C语言函数中定义的赋有初值的静态变量,每调用一次函数为其赋一次初值

D.C语言函数的形参不可以说明为static型变量

8.

9.有以下程序

prt(int*m,intn)

{

inti;

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

m[i]++;

}

main()

{

inta[]={1,2,3,4,5},i;

prt(a,5);

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

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

}

程序运行后的输出结果是A.A.1,2,3,4,5,

B.3,4,5,6,7,

C.2,3,4,5,6,

D.2,3,4,5,1,

10.计算机能够直接识别和执行的语言是

A.汇编语言B.自然语言C.机器语言D.高级语言

11.若有定义“doublea;floatb;shortc;”,若想把1.2赋给变量a,3.4赋给变量b,5678赋给变量c,程序运行时键盘输入:1.23.45678<回车>则以下正确的读入语句是()。A.scanf("%If%If%d",&a,&b,&c);

B.scanf("%If%If%hd",&a,&b,&c);

C.scanf("%If%f%hd",&a,&b,&c);

D.scanf("%f%f%d",&a,&b,&c);

12.若有以下程序:main(){intk=2,i=2,m;m=(k+=i*=k);printf('%d,%d\n",m,i);}执行后的输出结果是()。

A.8,6B.8,3C.6,4D.7,4

13.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为()

A.100B.40C.55D.80

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

A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B.数组名代表的是数组所占存储区的首地址,其值不可改变

C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

D.可以通过赋初值的方式确定数组元素的个数

15.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为()。

A.顺序表B.用头指针表示的循环单链表C.用尾指针表示的循环单链表D.单链表

16.对线性表进行折半查找时,要求线性表必须()。A.A.以顺序方式存储

B.以顺序方式存储,且结点按关键字有序排列

C.以链式方式存储

D.以链式方式存储,且结点按关键字有序排列

17.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

18.有以下程序:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下选项中表达式值为11的是()。

A.++p->xB.pt->xC.*pt->yD.(pt++)->x

19.判断一个栈ST(最多元素为Maxsize)为满的条件是()。

A.ST->top!==-1

B.ST->top==-1

C.ST->top!==Maxsize-1

D.ST->top==Maxsize-1

20.

二、2.填空题(20题)21.以下程序用以删除字符串中所有的空格,请填空。

#include<stdio.h>

main()

{chars[100]={"OurteacherteachClanguage!"};inti,j;

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

if(s[i]!=''){()}

s[j]='\0';

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

}

22.对数组中的元素值进行排序。请填空。

#include<stdio.h>

main()

{inta[]={2,4,15,3,17,5,8,23,9,7,11,13,}i,j,k;

for(k=0;k<12;k++)

for(i=k;i<12;i++)

if(a[i]>【】)

{j=a[i];

a[i]=【】;

【】=j;}

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

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

printf("\n");

}

23.若线性表的长度经常发生变化,那么该线性表应采用的存储结构是【】。

24.阅读下面语句,则程序的执行结果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

elseprintf("%d,%d\n",b,a);}

25.数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,所以,基于逻辑结构的应用程序不必修改,称为【】。

26.用树型结构表示实体类型及实体间联系的数据模型称为【】。

27.以下程序的功能是将字符串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);

}

28.算法的复杂度主要包括时间复杂度和______复杂度。

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

structSIRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

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

【】t[20]

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

main()

{inta=5,b=5,y,z;

y=b-->++a?++b:a;

z=++a>b?a:y;

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

}

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

main()

{inti,a[10];

a[0]=a[1]=1;

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

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

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

{if(i%2==0)printf("\n");

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

}

}

32.执行下列程序的输出结果是【】。

main()

{

floata=1,b;

b=++a*++a;

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

}

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

main()

{

charstr1[]="Howdoyoudo",*p1=str1;

strcpy(str1+strlen(str1)/2,"esshe");

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

}

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

voidfun()

{

staticinta=0;

a+=2;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<4,cc++)fun();

printf("\n");

}

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

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

36.若有以下程序:

intf(intx,inty)

{

return(y-x)*x;

}

main()

{

inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

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

}

执行后输出的结果是【】。

37.已知字符A的ACSII码值为65,以下语句的输出结果是______。

charch='B';

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

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

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

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

}

39.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值。请填空。

intadd(intx,inty,【】,)

{【】=x+y;}

40.数据库的逻辑模型设计阶段的任务是将______转换成关系模式。

三、1.选择题(20题)41.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。

A.-3B.9C.-12D.6

42.有以下程序段

charch;intk;

ch=′a′;k=12;

printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);

已知字符a的ASCII码值为97,则执行上述程序段后输出结果是

A.因变量类型与格式描述符的类型不匹配输出无定值

B.输出项与格式描述符个数不符,输出为零值或不定值

C.a,97,12k=12

D.a,97,k=12

43.下列叙述中正确的是A.C语言中既有逻辑类型也有集合类型

B.C语言中没有逻辑类型但有集合类型

C.C语言中有逻辑类型但没有集合类型

D.C语言中既没有逻辑类型也没有集合类型

44.下列程序的输出结果是()。#include<stdio.h>voidmain(){inta=0,b=1,c=2;if(++a>0‖++b>0)++c;printf("%d,%d,%d",a,b,c);}

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

45.结构化程序由三种基本结构组成,三种基本的结构组成的算法

A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成些简单的仟务

46.若ch为char型变量,k为int型变量(已知字符a的ASCII码是97),则执行下列语句后输出的结果为()。

ch='b';

k=10;

printf("%x,%o,",ch,ch,k);

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

A.因变量类型与格式描述符的类型不匹配,输出无定值

B.输出项与格式描述符个数不符,输出为0值或不定值

C.62,142,k=%d

D.62,142,k=%10

47.以下程序(程序左边的数字为附加的行号)______。1#include<str.h>2#include<stdio.h>3main()4{chars[]="string";5puts(s);6strcpy(s,"hello");7printf("%3s\n",s);}

A.没有错B.第1行有错C.第6行有错D.第7行有错

48.以下描述中正确的是()。

A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B.do-while循环由do开始,用while结束,在while(表达式.后面不能写分号

C.在do-while循环体中,是先执行一次循环,再进行判断

D.do-while循环中,根据情况可以省略while

49.下面程序段的运行结果是()。char*p="abcdefgh";p+=3;printf("%d\n",stfien(strcpy(p,"ABCD")));

A.8B.12C.4D.7

50.下列合法的标识符是()。

A.123B.#256C.a.55D.abhj1_2_3

51.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的A.正当性B.可行性C.确定性D.有穷性

52.在设计程序时,应采纳的原则之一是()。

A.不限制goto语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解

53.以下程序的运行结果是

intk=0;

voidfun(intm)

{m+=k;k+=m;printf("m=%dk=%d",m,k++);}

main()

{inti=4;

fun(i++);

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

}

A.m=4k=5i=5k=5

B.m=4k=4i=5k=5

C.m=4k=4i=4k=5

D.m=4k=5i=4k=5

54.以下程序的输出结果是voidfun(int*s){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}

A.34756B.23345C.35745D.12345

55.若变量a是int类型,并执行了语句:a='A'+1.6;,则正确的叙述是

A.a的值是字符CB.a的值是浮点型C.不允许字符型和浮点型相加D.a的值是字符‘A’的ASCII值加上1

56.有以下程序段intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;}while(t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是

A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数

57.有以下程序intfl(intx.ihty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:X;}main(){inta=4,b=3.c=5,d,e,f;d=fl{a,B);d=f1(d,C):e=f2{a,B);e=f2(e.C);f=a+b+c-d-e;printf("%d,%d,%d\n",d,f,e);}执行后输出的结果是

A.3,4,5B.13,4C.5,4,3D.3,5,4

58.下列可用于C语言用户标识符的一组是

A.void,define,WORD

B.a3_b3,_123,Car

C.For,-abc,IFCase

D.2a,DO,sizeof

59.有以下程序#include<string.h>main(){char*p=“abcde、Ofghjik\0”;printf(“%d\n”,strlen(p));}程序运行后的输出结果

A.12B.15C.6D.5

60.对于下面的语句,叙述正确的是______。charc1[]="abcd";charc2[]={'a','b','c','d'};

A.数组c1和数组c2等价

B.数组c1占用空间大于数组c2占用空间

C.数组c1占用空间小于数组c2占用空间

D.数组c1和数组c2的长度相同

四、选择题(20题)61.

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

A.栈是“先进先出”的线性表

B.队列是“先进后出”的线性表

C.循环队列是非线性结构

D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

63.以下选项中,能用作数据常量的是()。

A.115LB.0118C.1.5el.5D.0115

64.栈和队列的共同特点是()。

A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点

65.以下说法中正确的是()。

A.C语言程序总是从第一个的函数开始执行

B.在C语言程序中,要调用的函数必须在main函数中定义

C.C语言程序总是从main函数开始执行

D.C语言程序中的main函数必须放在程序的开始部分

66.在数据管理技术发展的三个阶段中,数据共享最好的是()。

A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同

67.以下数据结构中不属于线性数据结构的是______。

A.队列B.线性表C.二叉树D.栈

68.

69.有下列程序:

main()

{inti,j,x=0;

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

{x++;

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

{if(j%2)continue;

x++:

}

x++:

}

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

}

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

A.x=4B.x=8C.x=6D.x=12

70.

下列程序的运行结果是()。

#include<stdio.h>

voidmain

{ints=0,k;

for(k=7;k>1;k--)

{switch(k)

{case1:

case4:

case7:

s++:

break;

case2:

case3:

case6:break;

case0:

case5:

s+=2:

break;

}}

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

}

A.s=3B.s=4C.s=5D.无输出结果

71.

72.

73.下列哪个属性是用来定义内联样式的?()

A.fontB.classC.stylesD.style.

74.

设有以下定义和语句:

charstr[2O]="Program",*P:

p=str:

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

A.*p与stf[0]的值相等

B.str与P的类型完全相同

C.str数组长度和P所指向的字符串长度相等

D.数组str中存放的内容和指针变量P中存放的内容相同

75.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

76.

有以下结构体说明和变量的定义,且指针P指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是()。

structnode

{chardata;

structnode*next:

}a,b,*p=&a,*q=&b;

A.a.next=q;B.P.next=&b;C.p->next=&b;D.(*p).next=q;

77.

78.

79.

80.以下选项中叙述错误的是()。

A.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值

B.在同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内

C.C程序函数中定义的自动变量,系统不自动赋确定的初值

D.C程序函数的性能不可以说明为static型变量

五、程序改错题(1题)81.下列给定程序中函数fun的功能是。用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1、1、2、3、5、8、l3、21、……

例如,若给n输入7,则该项的斐波拉契数值为l3。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构。

六、程序设计题(1题)82.规定输入的字符串中只包含字母和。号。请编写函数fun,其功能是:将字符串尾部的。号全部删除,前面和中间的*号不动。

参考答案

1.B本题中要求输出右上半角的数,对角线上的数的下标相同,所以j=i。

2.C

3.D\n两个相同结构关系的并是由属于这两个关系的元组组成的集合。

\n

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

5.C

6.CC语言中,函数名也是一个指针,是函数的人口地址。使函数指针f指向函数fun的入口地址,直接将函数名fun赋给指针f即可。故本题答案为C选项。

7.CA选项描述正确,自动变量未被赋初值,为随机值;B选项描述正确,除在函数开始位置定义变量外,在复合语句内也可以定义变量;C选项描述错误,函数内的静态变量只在第1次调用时赋值,以后调用保留上次的值;D选项描述正确,形参属于局部变量,占用动态存储区,而static型变量占用静态存储区。故本题答案为C选项。

8.B

9.C用数组名作为函数实参时,不是把数组的值传递给形参,而是把实参数组的起始地址传递给形参数组,这样两个数组就共同占用同一段内存单元。本题通过“prt(a,5);”将数组a的首地址传递给了指针变量m,使指针变量m指向数组a的首地址,那么,对指针变量所指向的存储单元的内容的改变就是对数组a中的元素的改变。题中函数prt的作用是将指针变量m所指向的存储单元中的元素值各加上1,故数组a中的值也随之变化,所以。输出的数组元素的值为2,3,4,5,6,。

10.C

11.Cscanf函数用于输入数据。第1个参数表示输入格式控制。本题变量a是double类型,使用格式控制符%If;变量b是float类型,使用%If;变量c是short类型,使用%hd,选项C正确。本题答案为C选项。

12.C解析:本题考查的知识点是运算符的优先级.在复合赋值语句中,应该由右向左依次赋值,在表达式中,右端由i*=k得i=2*2为4,k=k+i,即k值为6,m=k故m=6.所以4个选项中C正确。

13.C

14.C解析:在C语言中,除字符数组外,一个数组不能通过数组名对数姐进行整体引用,因此选项A是对的。数组名中存放的是一个地址常量,它代表整个数组的首地址,因此选项B是对的。C语言程序在运行过程中,系统不自动检验数组元素的下标是否越界,因此选项C是错误的。C语官规定可以通过赋初值来定义数组的大小,这时数组说明符的一对方括号中可以不指定数组的大小,因此选项D也是正确的。所以,4个选项中选项C符合题意。

15.C

16.B

17.D解析:文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在3个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。注意:文件系统和数据库系统各自的特点,人工管理阶段及数据库系统三代的特点。

18.A题目中定义了一个结构体数组c并初始化,指针pt指向c的第1个元素。则“++pt->x”为11,“pt->x”为10,“*pt->y”为1,“(pt++)->x”为20。故本题答案为A选项。

19.D

20.A

21.s[j]=s[i];j++;s[j]=s[i];j++;解析:本题中相当于字符串s中存储着含有空格的字符,当发现空格的时候就用这个空格字符后面的字符前移覆盖这个空格字符,依次类推向后继续。因此,应填s[j]=s[i];j++;两条语句。

22.a[k]a[k]a[k]

23.链式存储结构链式存储结构

24.101,0解析:与运算两边的语句必须同时为真时,结果才为真,当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。

25.物理独立性物理独立性解析:逻辑独立性是指,由于数据的局部逻辑结构与总体逻辑结构之间也由系统提供映像,使得当总体逻辑结构改变时,其局部逻辑结构叮以不变,从而根据局部逻辑结构编写的应用程序也可以不必修改。物理独立性是指,由于数据的存储结构与逻辑结构之间山系统提供映像,使得当数据的存储结构改变时,其逻辑结构可以不变,所以,基于逻辑结构的应用程序不必修改。

26.层次模型用树型结构表示实体类型及实体间联系的数据模型称为层次模型,用有向图结构表示实体类型及实体间联系的数据模型称为网状模型,用二维表格结构表示实体及其联系的数据模型称为关系模型。

27.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]。

28.空间空间解析:算法的复杂度主要包括时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量。一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

29.structSTRUstructSTRU解析:结构体类型是构造数据类型,是用户自己定义的一种类型。

结构体类型的定义:

struct结构体类型名

{

成员项表;

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

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

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

30.7467

31.11<CR>23<CR>5(<CR代表换行)11<CR>23<CR>5(<CR,代表换行)解析:本题通过语句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”将数组中前面两项的和赋值给数组当前元素,得到a的值应为(1,1,2,3,5)。语句if(i%2==0)pfintf('\\n')是要将数组中的元素以每行2个的形式输出。

32.66解析:++的优先级高于*,先作自加运算,b=++a*++a=2.0*3.0=6.0。b按实型输出6.000000。

33.HowdoessheHowdoesshe解析:strcpy(str1,s1);字符串拷贝函数,作用是将字符串s1拷贝到字符数组strl中去。strlen(str):测试字符串str的长度,函数的值为字符串中实际长度,不包括\'\\0\'在内。本题中strlen(str1)的值为13,则strcpy(strl+strlen(strl)/2,'esshe');相当于strcpy(strl+6,'esshe');,因此可得答案为Howdoesshe

34.246246解析:static声明的外部变量只限于被本文件引用,而不能被其他文件引用。用static来声明一个变量的作用有:①对局部变量用static声明,则为该变量分配的空间在整个程序执行期间始终存在;②全部变量用static声明,则该变量的作用域只限于本文件模块(即被声明的文件中)。

35.3691236912解析:本题考查最基本的for循环:for(cc=1;cc<5;cc++)规定循环次数为4次,每次a+=3即每次a的值增3,但因为fun函数中变量a为static类型,所以每次调用完于函数之后,变量a所做的改变都要保存。

36.99解析:在主函数中函数f(f(3,4),f(3,5))的返回值赋给do函数的第一个参数为f(3,4)的返回值,函数f(3,4)返回值为(4-3)*3=3,f(3,5)返回值为(5-3)*3=6,那么函数f(f(3,4),f(3,5))等价于函数f(3,6)其返回值为(6-3)*3=9。因此d被赋值为9,所以输出9。

37.B66B66解析:printf函数的功能是按照指定的格式,在标准输出设备上输出数据,它有两种参数:格式控制参数和输出项参数。本题中,printf('%c%d\\n',ch,ch)表示以字符格式和十进制整数格式输出ch,B的ACSII码值为66,即在计算机中B的十进制整数格式是66。所以,输出为B66。

38.22132,2,1,3解析:本题考查++,--运算符和条件运算符的使用。

“表达式1?表达式2:表达式3”的功能是:表达式1的值若非0,则计算表达式2的值,且表达式2的值为最终结果;若表达式1的值为0,则计算表达式3的值,且为最终结果。

本题中,x=1,y=2时,x<y成立,输出y的值2;y=2,z=3时,z<y不成立,执行y++,输出2后y值增1,所以最后一个输出x的值不变为1,y的值为增加后的3。

39.int*p*p或p[0]int*p\r\n*p或p[0]

40.E-R图E-R图解析:数据库逻辑设计的任务是将概念模型进一步转化成相应的数据模型。而E-R图是主要的概念模型,因此数据库的逻辑设计的主要工作是将E-R图转换成关系模式。

41.C解析:本题中首先定义一个整型变量a并给它赋初值为3,在表达式中,从右开始执行,即先执行“a-=a*a;”等价于a=a-a*a即a=3-3*3=-6,此时a的值为-6,接着执行“a+=a-;”相当于执行a=a+a即a=-6+(-6)=-12,此时a的值为-12。所以,4个选项中选项C符合题意。

42.D解析:考查printf函数的相关知识。如果要一次进行多个变量的定义,则在它们之间要用逗号隔开,因此选项A)和C)错误。在选项C)中,变量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量b,所以正确答案为B)。输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。所以选项D)为正确答案。

43.D解析:在C语言中没有逻辑类型,逻辑类型用整型来表示,故选项A和选项C不正确,C语言中没有集合类型,故选项B不正确。所以,D选项为所选。

44.C解析:本题考查if语句。先判断if语句的条件是否成立,++a=1>0,此条件成立,又因为是进行逻辑或运算,在已知其中一个运算对象为真的情况下,不必判断另外一个运算符的真假,即不进行++b操作,就可以直接得出整个表达式的值为逻辑1,执行下列的++c。

45.A解析:本题考核的知识点是C程序的三种基本结构。C程序由三种基本的结构组成,分别为顺序结构、选择结构和循环结构,这三种结构可以组成任何复杂的C程序,即可以完成任何复杂的任务,故选项B、选项C和选项D都不正确。所以,4个选项中选项A符合题意。

46.C解析:第1个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个printf函数,有两个%说明,第1个%后面的字符要原样输出。

47.B解析:字符串复制函数strcpy包含在头文件string.h中,因此,程序中的第1行文件包含命令是错误的。

48.C解析:do-while语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。

49.C解析:p+=3使指针p指向字符'd',函数strcpy的功能是把后面的字符串复制到p指针指向的空间;strlen函数的功能是求字符串的长度,并返回字符个数,不计最后的'\\0'。本题结果为4,即字符串“ABCD”的长度。

50.DC语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。“#”、“.”不允许出现在标识符中。

51.C解析:本题考查一个算法应当具有5个特性,即有穷性、确定性、可行性、有零个或多个输入以及有一个或多个输出。算法的确定性是指:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。并且在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的执行结果。

52.D解析:滥用goto语句将使程序流程无规律,可读性差,因此选项A)不选;注解行有利于对程序的理解,不应减少或取消,选项B)也不选;程序的长短要依照实际情况而论,而不是越短越好,选项C)也不选。

53.B解析:由于在main()函数中,变量i=4,所以就调用fun(4),则输出“m=4k=4”。然后变量k增1等于5,变量i增1等于5,所以main()函数的“printf('i=%dk=%d\\n',i,k);”语句输出“i=5k=5”。

54.C解析:本题考查了通过数组首地址引用数组元素的方法。第一次执行fun(a)后,a[0]=3,a[1]=5。第二次执行fun(a)时,因为static变量j保存着上次执行时的值为2,所以a[2]=7,最后数组a={3,5,7,4,5}。故正确答案为选项C)。

55.D解析:本题考核的知识点是不同变量的类型的混合运算。在C语言中规定允许不同类型的量进行运算,但在运算时需转换成高级的类型进行运算。在表达式中有字符型和实型参加运算时,统一转换为实型再运算,当运算结果存入变量时再转换为该变量的类型。所以,4个选项中D为所选。

56.D解析:本题考查的是do…while循环结构.do…while循环与while循环的区别就是,前者是先执行循环体,后判断循环变量,故至少会执行一遍循环体;后者先判断再执行,可能循环体一次也不会执行。本题首先让t=1,然后在循环体中每次自减2,所以判断循环条件的时候,t会等于-1、-3、-5……,故只有n等于任意的负奇数才有可能终止循环.选项D正确。

57.C解析:本题考核的知识点是函数的定义与函数调用。函数f1()的作用是返回形参x和y的较大值,函数f2()的作用是返回形参x和y的较小值,在main()函数中通过调用两次f1()函数,求得a、b、c的最大值并存放在变量d中,通过调用两次f2()函数,求得a、b、c的最小值并存放到变量e中.由程序可知d值为5,f的值为4,e的值为3,因此最后输出的d,f、e的值为5、4,3。所以,C选项为所选。

58.B解析:C语言规定标识符只能由字母、数字和下画线3种字符组成,且第一个字符必须为字母或下画线,排除选项C)和D);C语言中还规定标识符不能为C语言的关键字,而选项A)中void为关键字,故排除选项A)。

59.D解析:本题首先定义了一个字符型指针变量p,并用一个字符串给它赋值,然后调用printf()函数输出p所指向的字符串的长度。字符串的结束标记为“\\0”,其长度为“\\0”前的字符个数,故长度为5。

60.B解析:给字符数组按字符串方式初始化,则在字符串末尾有一个字符串结束标志,占一个字节的存储空间,如逐个元素赋值,则不加字符串结束标志。

61.C

62.D栈是先进后出的线性表,所以A错误;队列是先进先出的线性表,所以B错误;循环队列是线性结构的线性表,所以C错误。故答案为D选项。

63.AA选项中l15L表示ll5是长整型数据,合法。B选项是八进制常量的表示方法,但是在八进制中不能含有数字8,所以B错误。c选项中e后面应该是整数不能是小数l.5,所以c错误。D选项中八进制常量应该是数字…0开始,而不是字母…O开始。

64.C解析:考查栈和队列概念的掌握。栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种'后进先出'的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种'先进先出'的线性表。模块之间的耦合程度反映了

温馨提示

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

评论

0/150

提交评论