2021年甘肃省嘉峪关市全国计算机等级考试C语言程序设计测试卷(含答案)_第1页
2021年甘肃省嘉峪关市全国计算机等级考试C语言程序设计测试卷(含答案)_第2页
2021年甘肃省嘉峪关市全国计算机等级考试C语言程序设计测试卷(含答案)_第3页
2021年甘肃省嘉峪关市全国计算机等级考试C语言程序设计测试卷(含答案)_第4页
2021年甘肃省嘉峪关市全国计算机等级考试C语言程序设计测试卷(含答案)_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

2021年甘肃省嘉峪关市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若有定义inta=5,b=7;,则表达式a%=(b%2)运算后,a的值为()。

A.0B.1C.11D.3

2.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和边表接点的个数分别为()。

A.n,eB.e,nC.2n,eD.n,2e

3.有以下程序执行后的输出结果是()。A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-5

4.设有定义语句:charc1=92,c2=92;则以下表达式中值为零的是()。

A.c1∧c2B.c1&c2C.~c2D.c1|c2

5.以下不完整的程序拟实现调用getmax函数,找出4个变量中最大的一个:#include<stdio.h>intgetmax(intx,inty){returnx>yx:y;}voidmain(){inta,b,c,d,mx;scanf(“%d%d%d%d”,&a,&b,&c,&d);printf(“max=%d\n”,________);}以下选项若填入下划线处,不能实现上述功能的是()。

A.getmax(getmax(getmax(a,b),c),d)

B.getmax(getmax(a,b),getmax(c,d))

C.getmax(a,getmax(b,getmax(c,d)))

D.mx=(getmax(a,b),getmax(c,d))

6.设有定义“intx=2;”,以下表达式中,值不为6的是()。

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

7.需求分析阶段的任务是确定()

A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能

8.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是()。

A.数据库系统B.文件系统C.人工管理D.数据项管理

9.以下不属于C语言整数的是()。

A.12fB.25uC.-32D.+20L

10.下列程序的输出结果是

#include"stdio.h"

#defineN3

#defineM3

voidfun(inta[M][N])

{printf("%d\n",*(a[1]+2));}

main()

{inta[M][N];

inti,j;

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

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

a[i][j]=i+j-(i-j);

fun(a);}A.A.3B.4C.5D.6

11.以下选项中表示一个合法的常量是(说明:符号口表示空格)()。

A.9口9口9B.0XabC.123E0.2D.2.7e

12.在关系数据模型中,通常可以把()称为属性,其值称为属性值。

A.记录B.基本表C.模式D.字段

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

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

14.以下非法的赋值语句是

A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;

15.有以下程序:

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

A.02B.13C.57D.12

16.若整型变量a、b、c、d中的值依次为2、2、3、4,则条件表达式a<b?a:c<d?c:d的值是()。A.1B.2C.3D.4

17.设有以下说明语句structnum{inta;floatb;}numl;则下面的叙述不正确的是______。

A.struct是结构体类型的关键字

B.structnum是用户定义的结构体类型

C.numl是用户定义的结构体类型名

D.a和b都是结构体成员名

18.若在线性表中采用折半查找法查找元素,该线性表应该()A.元素按值有序B.构采用顺序存储结C.元素按值有序且采用顺序存储结构D.元素按值有序且采用链式存储结构

19.设有以下语句charchl,ch2;scanf("%c%C",&chl,&ch2);若要为变量chl和ch2分别输入字符A和B,正确的输入形式应该是()。

A.A和B之间用逗号间隔B.A和B之间不能有任何间隔符C.A和B之间可以用回车间隔D.A和B之间用空格间隔

20.若运行以下程序时,从键盘输入ADescriptor<CR>(<CR>表示回车),则下面程序的运行结果是

#include<stdio.h>

main()

{charc;

intv0=1,v1=0,v2=0;

do{switch(c=getchar())

{case′a′:case′A′:

case′e′:case′E′:

case′i′:case′I′:

case′o′:case′O′:

case′u′:case′U′:v1+=1;

default:v0+=1;v2+=1;}}while(c!='\n');

printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}

A.v0=7,v1=4,v2=7

B.v0=8,v1=4,v2=8

C.v0=11,v1=4,v2=11

D.v0=13,v1=4,v2=12

二、2.填空题(20题)21.以下程序的输出结果是【】。

main()

{

intarr[]={30,25,20,15,10,5},*p=arr;

p++;

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

}

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

voidfun(int*n)

{while((*n))

printf("%d",(*n)--);

}

main()

{inta=10;

fun(&a);

}

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

24.【】是数据库设计的核心。

25.以下程序输出矩阵中值为。的元素的行下标和列下标。行下标和列下标分别放在同一下标的r和c数组元素中。程序通过调用随机函数给矩阵赋值。

#defineN5

#include<stdlib.h>

main()

{inta[N][N],i,j,c[N*N],r[N*N],n;

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

for(j=0;j<N;j++)a[i][j]=rand()%5;

n=gindex(【】);

printf("\n\nTheresult:\nn=%d\n",n);

for(i=0;i<n;i++)printf("%4d%4d\n",r[i],c[i]);

}

intgindex(int(*p)[N],int*c,int*r)

{inti,j,k;

【】;

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

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

if(【】==0)

{r[k]=i;c[k]=j;【】;}

return【】;

}

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

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

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

printf("\n");

}

27.若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是【】。

chara[10],b;scanf("a=%sb=%c",a,&b);

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

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{

inti=2,j=3;

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

}

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

30.若有定义doublea[5];,则a数组元素下标的上限为______。

31.以下程序的输出结果是()。

#inciude<stdio.h>

main()

{chars[]="ABCabc";

s[5]='\0';

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

}

32.以下程序的功能是:通过函数func输入字符并统计输入字符的个数。输入时用字符作为输入结束标志。请填空。#include<stdio.h>long();/*函数说明语句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}

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

structnode

}intinfo;

【】link;

};

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

#defineN5

main()

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

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

{temp=a[i];

a[i]=a[N-i-1];

a[N-i-1)=temp;

}

printf("\n");

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

}

35.下列程序的功能是输入一个整数,判断其是否是素数,若为素数则输出1,否则输出0。请填空。

#include<stdio.h>

main()

{inti,x,y=1;

scanf("%d",&x);

for(i=2;i<=x/2;i++)

if【】{y=0;break;}

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

}

36.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。

37.下述函数用于统计一行字符中的单词个数,单词之间用空格分隔。

word_num(str

charstr[];

{inti,num=0,word=0;

for(i=0;str[i]!=【】;i++)

if(【】=")word=0

elseif(word=0)

{

word=1;

【】;

}

return(num);

}

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

charstr口="ABCD",*p=str;

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

39.要求使下列程序输出5个整数,请填空。

for(i=0;i<=______;printf("%d\n",i+=2));

40.下面程序的功能是求整数m、n的最大公约数,请填空。

main()

{intm,n,r;

scanf("%d,%d",&m,&n);

if(【】){r=m;m=n;n=r;)

while(【】)

{r=m%n;m=n;n=r;}

printf("%d",m);

}

三、1.选择题(20题)41.算法的时间复杂度是指______。

A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数

42.若有定义:intaa[8];则以下表达式中不能代表数组元素aa[1]的地址的是()

A.&aa[0]+1B.&aa[1]C.&aa[0]++D.aa+1

43.若变量已正确定义,下列正确的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

44.有以下程序:main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若运行时从键盘上输入:6,5,65,66<回车>,则输出结果是______。

A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6

45.用C语言编写的代码程序

A.可立即执行B.是一个源程序C.经过编译即可执行D.经过编译解释即可执行

46.设x=011050,则x=x&01252的值是()。

A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

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

A.一个C语言程序只能实现一种算法

B.c程序可以由多个程序文件组成

C.C程序可以由一个或多个函数组成

D.一个c函数可以单独作为一个C程序文件存在

48.指出下面不了确的赋值语句()。

A.a++;B.a==b;C.a+=b;D.a=1,b=1;

49.若有以下定义和语句:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是______。

A.*pB.a[10]C.*aD.a[p-a]

50.在数据库的两级映射中,从概念模式到内模式的映射一般由______实现。

A.数据库系统B.数据库管理系统C.数据库管理员D.数据库操作系统

51.C语言允许函数类型缺省定义,此时函数值隐含的类型是()。

A.floatB.intC.longD.double

52.若有“doublea;”,则正确的输入语句是()。

A.scanf("%1f",a);

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

C.scanf("%1f",&a)

D.scanf("%le",&a);

53.以下程序的输出结果是#include<stdio.h>main(){inta=15/b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0:m++;break;}}printf("%d\n",m);}

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

54.若有定义:char*st="howareyou";下列程序段中正确的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

55.按照“先进后出”原则组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

56.以下叙述正确的是______。

A.可以把define和if定义为用户标识符

B.可以把define定义为用户标识符,但不能把if定义为用户标识符

C.可以把if定义为用户标识符,但不能把define定义为用户标识符

D.define和if都不能定义为用户标识符

57.下列关于字符串的说法中错误的是

A.在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符'\0'作为字符串结束标志

B.'\0'作为标志占用存储空间,计入串的实际长度

C.在表示字符串常量的时候不需要人为在其末尾加入'\0'

D.在C语言中,字符串常量隐含处理成以'\0'结尾

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

A.二进制文件打开后可以先读文件的末尾,而顺序文件不可以

B.在程序结束时,应当用fclose函数关闭已打开的文件

C.在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据

D.不可以用FILE定义指向二进制文件的文件指针

59.下列描述中正确的是()。

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

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

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

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

60.若有如下程序:sub(inta,intb,int*z){*z=a+b;return;}main(){inta=1,b=2,c=3,d,e;sub(a,b,&D);sub(c,d,&e);printf("%d",e);}则程序运行后的输出结果是

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

四、选择题(20题)61.按照c语言规定的用户标识符命名规则,不能出现在标识符中的是()。A.连接符B.大写字母C.数字字符D.下划线

62.设以下变量均为int类型,表达式的值不为7的是A.(x=y=6,x+y,x+1)

B.(x=6,x+1,y=6,x+y)

C.(x=y=6,x+y,y+1)

D.(y=6,y+1,x=y,x+1)

63.有以下程序:main(){chars[]="\n123\\";printf("%d,%d\n",strlen(s),sizeof(s));}执行后输出结果是()。

A.赋初值的字符串有错B.6,7C.5,6D.6,6

64.28.以下叙述中错误的是

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

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

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

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

65.有以下程序:

66.

67.以下关于字符串的叙述中正确的是()。

68.

有以下程序,其中函数f的功能是将多个字符串按字典顺序排序()。

#include<string.h>

voidf(char*p[],intn)

{char*t;inti,j;

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

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

if(strcmp(p[i],p[j]>0){t=p[i];p[i]=p[j];p[j]

=t;}

}

main

{char*P[5]={"abe","aabdfg","abbd","dcd-

be","cd"};

f(p,5);

printf("%d\n",strlen(p[1]));

}

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

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

69.

70.

71.

72.

73.以下选项中,合法的一组c语言数值常量是()。

A.12.0Xa234.5e0

B.028.5e…30xf

C.1774el.50abe

D.0x8A10,0003.e5

74.有以下程序:

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

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

75.以下程序的输出结果是()。main{inta[3][3]=“l,2),{3,4),{5,6)},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(”%d\n”,s);}A.18B.19C.20D.21

76.以下叙述中正确的是

A.自定义的函数中一定要有return语句

B.自定义的函数中不可以有多个return语句

C.自定义的函数中可以没有return语句,此时函数应被定义为void类型

D.函数的return语句一定要带有表达式

77.有下列程序

voidfunc1(inti);

voidfunc2(inti);

charst[]="hello,friend!";

voidfunc1(inti)

{printf("%c",st[i]);

if(i<3){i+=2;func2(i);}

}

voidfunc2(inti)

{printf("%c",st[i]);

if(i<3){i+=2;func1(i);}

}

main()

{inti=0;func1(i);

printf("\n");

}

执行后的输出结果是

A.helloB.hel

C.hloD.hlm

78.有以下程序:

#include<stdio.h>

main()

{inta=7;

while(a--);

print[("%d\n",a);

}

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

A.-l

B.0

C.1

D.7

79.(11)算法的时间复杂度是指()

A.执行算法程序所需要的时间

B.算法程序的长度

C.算法执行过程中所需要的基本运算次数

D.算法程序中的指令条数

80.以下程序运行后的输出结果是()。

A.zB.0C.元素Ch[5]地址D.字符y的地址

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:先将字符串s中的字符按顺序存放到t中,然后把S中的字符按正序连接到t的后面。例如,当s中的字符串为WXYZ时,则t中的字符串应为WXYZWXYZ。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>voidproc(char*s,char*t){inti,s1;s1=strlen(s);for(i=0;i<s1;i++)//****found****t[i]=s[s1];for(i=0;i<s1;i++)t[s1+i]一s[i];t[2*s1]=\O0;}voidmain{chars[100],t[100];system("CLS");print{("\nPleaseenterstrings:");scanf("%s",s);proc(s,t);printf("Theresultis:%s\n",t);}

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

参考答案

1.A解析:本题考查'%'运算符的使用。运算符'%'要求两个运算对象都为整型,其结果是整数除法的余数。本题中表达式ao%=(b%2)等价于a=a%o(b%2)=5%(7%2)=5%1=0。

2.A

3.B

4.A解析:按位异或“^”运算,是当对应位上的二进制数值相同时结果为0,否则为1。因为c1,c2的值相同,所以异或的结果为0,选项A)正确。按位与“&”运算符只有当所有对应位上的数都不相同时结果才为0,所以c1&c2的值不可能为0,选项B)错误。“~”是按位取反,由于十进制数92转化成二进制数并不是全为1,所以即使取反也不能得到全为。的答案,所以错误。“|”是按位或运算,由于十进制数92转化为二进制数也不是全为0,所以按位或运算后也不会全为0。

5.Dgetmax函数接收两个整型变量x、y,使用条件运算符返回x和y中的较大值。main函数首先输入a、b、c、d4个整数值,然后通过调用getmax函数,输出它们的最大值。假设x、y是整数,选项A中,首先执行“getmax(a,b)”,返回a、b中的较大值X,再执行“getmax(x,c)”,返回x、c中的较大值y,最后执行“getmax(y,d)”,返回y、d中的较大值,满足题意,正确;选项B中,首先执行“getmax(a,b)”,返回a、b的较大值X,再执行“getmax(c,d)”,返回c、d中的较大值y,最后执行“getmax(x,y)”,返回x、y中的较大值,正确;选项C中,首先执行“getmax(c,d)”,返回c、d的较大值X,再执行“getmax(b,x)”,返回b、x中的较大值y,最后执行“getmax(a,y)”,返回a、y中的较大值,正确;选项D中,首先执行“getmax(a,b)”,返回a、b的较大值X,再执行“getmax(c,d)”,返回c、d中的较大值y,最后执行逗号表达式“(x,y)”,返回值为7,不满足题意。故本题答案为D选项。

6.AA选项中先计算逗号表达式的第1个表达式“2*x”,然后计算第2个表达式“x+=2”,即“x=x+2=4”,整个逗号表达式为第2个表达式的值4。所以A选项正确。B选项中首先计算逗号表达式的第1个表达式“x++”,此时x为3;再计算第2个表达式“2*x=2*3=6”,所以逗号表达式为第2个表达式的值6。C选项中的表达式可以表示为“x=x*(1+x)=2*(1+2)=6”。D选项中的表达式可以表示为“x=x*(x+1)=2*3=6”。故本题答案为A选项。

7.D解析:结构化分析方法,数据流图,数据字典,软件需求规格说明书

评析,需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织,部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能.选项A)软件开发方法是在总体设计阶段完成的任务;选项B)软件开发工具是在实现阶段需完成的任务:选项C)软件开发费用是在可行性研究阶段需完成的任务。

8.A在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是数据库系统这一阶段。数据库系统阶段用数据模型来表示复杂的数据,有较高的数据独立性。数据库系统为用户提供了方便的用户接口,用户既可使用查询语言或终端命令操作数据库,也可以用程序方式来操作。数据库管理系统提供了数据控制功能。

9.AC语言中整型常量,从表示形式来看,有十进制、八进制或十六进制;从符号位来看,有有符号整数和无符号整数两类。选项A的“12f”是float类型的实数,不是整数;选项B的“25u”属于无符号整数;选项C的“-32”是十进制形式的有符号整数;选项D的“+20L”是十进制形式的长整数。故本题答案为A选项。

10.B

11.B当用指数形式表示浮点数据时,E的前后都要有数据,并且E的后面数要为整数。

12.D解析:数据库表中字段转化为属性,把记录的类型转化为关系模式。

13.C解析:栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”(或“先进后出”)的线性表;而队列只允许在表的一端进行插入操作,在另一端:进行删除操作,是一种“先进先出”(或“后进后出”)的线性表。因此栈和队列的共同点是只允许在端点处插入和删除元素。

14.C解析:本题考查的知识点是赋值语句的基本知识。在表达式的运算中,双目赋值运算符的格式为“变量二表达式”,单目运算符一般形式为“运算符表达式”或“表达式运算符”。常量和表达式是不能被赋值的。选项A为复合表达式,首先计算(i=2,++i)的值,然后赋值给n,故选项A正确;选项B为简单自加运算,故选项B正确;选项C在表达式++(i+1);中,(i+1)不是变量,该表达式的值为常量,而在++运算中,其运算对象必须为变量,故选项C错误;选项D中为复合赋值表达式,正确.所以应当选择C。

15.D本题考查逻辑运算符的”短路”现象,由于k的值为0,表达式首先去求k++的值,因为表达式k++的值为0,系统完全可以确定逻辑表达式的运算结果总是为0,因此将跳过n++>2,不再对它进行求值,即k的值加1,n的值不变。

16.C本题考查三目运算符a<b?a:c<d?c:d也可写成a<b?a:(c<d?c:d),所以根据优先级,先算括号内的,c小于d为真取C的值,再看a小于b为假,所以取C的值。

17.C

18.C

19.Bscanf输入函数中,格式控制J必须严格按照函数中的要求进行输入,在scanf("%c%c",&chl,&ch2)的格式控制语句中没有任何字符进行间隔,所以在输入时也不能使用任何字符进行间隔,所以答案选择B。

20.D解析:本题考查switch语句的掌握。必须撑握以下内容:首先应该明白switch语句的语法格式:

switch语句的语法格式为:

switch(表达式)

{

case常量表达式1:语句组1;

case常量表达式2:语句组2;

case常量表达式n:语句组n;

default:语句组n+1;

}

另外,以下几点关于switch语句的重点:

①系统在执行时计算开关表达式的值;②根据所得的值在各个case标号表达式中寻找匹配,直到发现与表达式匹配的标号(本例中匹配的是case\'B\':);\ue008③找\ue009到匹配后执行后面相应的语句表,顺序往下执行;④如果无相匹配的标号,若存在default标号,则执行该语句标号后面的语句表n+1;当不存在default标号时,不执行switch中的任何一个语句表。

一般而言,在多分支结构中总会出现'意外'的情况,这时均可归入default程序段,作统一的处理。default标号是可选性的,不必每次都有,视需要而定。switch语句中还可以包含switch语句,形成switch的嵌套。

21.1010解析:整型指针最初被赋的值是数组arr的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为100。

22.1.09877e+010

23.完整性控制完整性控制

24.数据模型数据模型

25.acrk=0p[i][j]k++k

26.2468

27.a=123b=5

28.1616解析:首先用j和MCRA(i)替换MCRB(n,m)中的参数n和m,变成2*MCRA(j)+MCRA(i),再用j和i替换MCRA(m)中的参数m,变成2*2*j+2*i=2*2*3+2*2=16。

29.软件开发

30.44解析:一维数组元素的定义形式为:数组名[N],则该数组中元素的下限是0,上限是N-1。

31.ABCabABCab解析:本题中字符数组的初值是“ABCabc”,s[5]='c',然后通过s[5]='\\0'重新给s[5]赋值,在C语言中'\\0'是字符串结束标志,执行s[5]='\\0',其实是将s[5]的值去掉只保留前面的字符。

32.tunc()m++tunc()m++解析:第一空白处,在C语言中如果子函数在主函数之后定义,就要对其进行说明,说明的形式为:“函数类型名函数名”。所以此处填写func()。第二空白处,整型变量m表示输入字符的个数,所以每输入一个字符,变量m的值就加1。所以此处填写m++。

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

34.54321

35.(x%i==0)(x%i==0)解析:为判数x是否是素数,预置变量y的值为1(x可能是素数),然后用2至x/2的整数i测试对x的整除性,若x能被其中的某个整数整除,则x是合数,置y的值为0(即x不是素数),结束循环测试;若循环中i都不能整除x,则x为素数。一般可用求余运算x%i是否等于0来判定i能否整除x,所以程序中的空格处可填(x%i==0)。

36.结构结构解析:路径测试是白盒测试方法中的—种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。

37.\0'或0或NULLstr[i]num++或num=num+1或num+=1\\0'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或num+=1解析:观察题目要求,可以知道以下几点:

①for循环的结束条件应当是:str[i]已是字符串的最后一个字符;

②str[i]代表字符串str中的第i+1个字符;

③整型变量num的值是要记录的单词的个数。

C语言中规定字符串的最后一个字符是一个隐含的字符串结束符“\\0”,所以在题中第一个空中应填写“\\0”;题中第二个空应填写“str[i]”,以判断当前位置的字符是否为空格;题中第三个空中应当填写“num++”,通过变量num的加1累加得到字符串中的单词个数。

38.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d,格式输出的,即输出其相应ASCII码值68。

39.88解析:本题考查基本的for循环条件,i+=2表示i每次递增2,从0开始,输出5个整数则需要的条件是i<=8。

40.m<n或n>mr或r!=0m<n或n>m\r\nr或r!=0解析:本题使用的是“辗转相除”法求两个数的最大公约数,即以两个数中较大的除以较小的,如果余数不为0,则将较小的数和余数做同样处理,直到被除断为止,此时较小的数就是两个数的最大公约数。本题第一空要求填写一个if语句的判断条件,如果满足此条件则交换m和n的值,再看后面while循环的循环体,使用m%n求余,则此if语句的作用应该是保证m是两个数中较大的那个,故第一空填m<n或n>m。接下来的while循环实现整个辗转相除的过程,其结束条件应该是余数r为0,所以while的循环条件应该填r或r!=0。

41.C解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算的工具以及程序员的水平无关。选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误,因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。选项D错误,因为根据一个算法所编制出的程序之中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。所以,本题正确答案为C。

42.C

43.D解析:本题考查两个知识点:①C语言用'\\n'这个字符常量表示换行;②函数getchar()的作用是从终端输入一个字符,当遇到换行时结束输入。

44.A解析:char型数据类型以%d的形式输入时,输入的是ASCII值。65是字符A的ASCII码值,66是字符B的ASCII值。

45.B解析:C语言一种高级语言,C语言源程序经过C语言编译程序编译之后,生成一个后缀为。OBJ的二进制文件(称为目标文件),最后还要由称为“连接程序”(Link)的软件,把此。OBJ文件与C语言提供的各种库函数连接在一起,生成一个后缀.EXE的可执行文件。显然C语言不能立即执行,故选项A错误;根据以上定义,选项C和选项D错误,所以,4个选项中选项B符合题意。

46.A解析:本题主要考查按位与运算,x=011050的二进制形式为0001001000101000,01252的二进制形式为0000001010101010,两者相与得00000010001010000。

47.A答案A

解析:一个C程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C语言程序可以实现多种算法。

48.B解析:选项A中a++相当于a+1,是赋值语句;选项C和选项D也是赋值语句。只有选项B不是,因为选项B中“==”符号是等于的意思,并不是赋值运算符,所以,4个选项中B符合题意。

49.B解析:程序中定义了数组a[10],则其元素的下标范围为0~9,而B选项中的a[10]所表示的元素已经超出a数组元素的范围,故应该选择B。

50.B解析:从概念模式到内模式的映射一般由数据库管理系统(DBMS)实现。

51.B解析:在C语言中,对于自定义函数要遵循“先定义,后使用”的规则,如定义时,不指定函数类型,C编译系统都默认函数的返回值是int型。

52.D解析:函数scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。本题中定义变量a为双精度型变量,双精度变量的格式符为“le”:变量的地址用取地址符“&”加变量名表示,如变量a的地址为“&a”。

53.A解析:switch语句的条件是“a%3=15%3=0”,所以执行case0后面的语句,m++;m=1,然后就执行break,跳出switch语句,所以最后输出的m的值为1。注意:switch嵌套语句的使用。

54.A解析:本题综合考查字符数组的赋值和strcpy函数的用法。C语言不允许用赋值表达式对字符数组赋值,如下面的语句就是非法的:strl=“China”,如果想把“China”这5个字符放到数组strl中,除了逐个地输入外,还能使用strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如:strcpy(strl,“China”);或strcpy(strl,str2);注意,不能企图用以下语句来实行赋值(将str2的值传给strl):strl=str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

strcpy函数的结构是:strcpy(字符数组1,字符串2)

其中,需要注意的是,字符数组1的长度不应小于字符串2的长度,“字符数组1”必须写成数组名形式,如(strl),“字符串2”可以是字符数组名,也可以是字符串常量,不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

55.BB.【解析】栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元索是最后被插入的元素,也是最后被删除的元素。栈是按先进后出的原则组织数据的。

【知识拓展】“栈”的形式如手枪的弹匣,最后压入的子弹总是最先被弹出,而最先压人的子弹最后才被弹出,也就是“先进后出”。

56.B解析:if是C语言中的保留字,所以不能作为用户标识符;define是C语言中的预编译命令,由于C语言中的预编译命令都是以#开头,所以define可以作为用户标识符。

57.B解析:'\\0'作为标志占用存储空间,但是不计入串的实际长度。当给一个字符型指针赋值时,赋给这个指针的是这个字符串的地址。

58.D解析:顺序文件只能从头读写,二进制文件可以随机读写,选项A正确:文件在使用后应关闭,当程序结束时,应当把打开的文件关闭,选项B正确:用fread()函数可以一次性地读取同类型的很多数据,选项C正确;在C语言中指向各种文件的文件指针都是通过FILE来定义的,故选项D是错误的。所以4个选项中选D

59.CC。【解析】软件工程是指将工程化的思想应用于软件的开发、应用和维护的过程,包括软件开发技术和软件工程管理。

60.D解析:第一次调用函数sub返回后,d的值为2+1=3;第二次调用函数sub返回后,e的值为3+3=6。

61.AC语言中标识符由字母、下划线或数字组成,且开头必须是字母或下划线。因此A选项中的连接符不合法。

62.B本题考查逗号表达式的用法。C语言中逗号“,”也是一种运算符,称为逗号运算符,其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为:表达式1,表达式2。其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。逗号表达式的一般形式可以扩展为:表达式1,表达式2,表达式3,…,表达式n。它的值为表达式n的值。

63.C解析:本题在定义字符数组时没有定义数组长度,但用字符常量给数组赋了初值,这时初值的个数即为数组的长度,故数组长度为6(包括'\\0')。字符串的长度为有效字符的个数5。strlen(s)返回值为串中字符的个数(不计最后的'\\0'),则输出值为5。sizeof(s)计算数组所占的字节数,包含'\\0',则输出值为6。因此,C选项正确。

64.C选项A“对于float类型数组,不可以直接用数组名完成对数组进行整体输入或输出”,是正确的。C语言中规定,只有字符型的数组才可以用数组名完成对数组进行整体输入或输出,主要是因为没有字符串型的变量,通常用一个字符数组来存放字符串。采用字符串方式后,便可用数组名对数组进行整体输入和输出。

选项B“数组名代表的是数组所占存储区的首地址,其值是常量,是不可改变的”,是正确的。数组名本身是没有方括号和下标的,它实际上是表示数组起始的地址,该地址在数组初始化时由系统分配。

选项C“当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出‘下标越界’的出错信息”,是错误的。在某些编程语言中,下标的取值是不允许超出数组定义中所设的界限的。但是在C和C++中,编译器不对下标的范围进行检查。不检查下标范围的目的有两个,一个是提高运行效率,不检查下标,程序编译耗费时间少。另一个是能够方便指针的使用,数组名并没有包含该数组长度的信息,只包含地址信息,可以看成是一个指针,若检查下标,将限制数组名的使用功能。

选项D“可以通过赋初值的方式确定数组元素的个数”是正确的。C语言规定,如果对数组中所有的元素赋初值,可以省略定义元素的个数。

65.A#include<stdio.h>

intmain()

所以输出为*#*#*#$和一个换行符*/,因此正确答案为A。

66.B

67.A空格是一种字符,所以空串肯定比空格打头的字符串小。

68.B

\n函数voidf的功能是将字符指针数组*p[]中的每个字符串按照从小到大的顺序排序。在主函数main中,调用f(P,5)后,字符指针数组*p[5]中的字符串按照字典顺序从小到大排列为如下形式,即*p[5]={'aab-dfg','abbd','abc','cd','dcdbe'),因此P[1]='abdb',strlen

温馨提示

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

评论

0/150

提交评论