2021年四川省成都市全国计算机等级考试C语言程序设计真题(含答案)_第1页
2021年四川省成都市全国计算机等级考试C语言程序设计真题(含答案)_第2页
2021年四川省成都市全国计算机等级考试C语言程序设计真题(含答案)_第3页
2021年四川省成都市全国计算机等级考试C语言程序设计真题(含答案)_第4页
2021年四川省成都市全国计算机等级考试C语言程序设计真题(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2021年四川省成都市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.为了使模块尽可能独立,要求_____。A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强

B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱

C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱

D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强

2.若变量已正确定义,有下列程序段:inta=3,b=5,c=7;if(a>B)a=b;c=a;if(c!=A)c=b;printf("%d,%d,%d\n",a,b,C);其输出结果是()。A.程序段有语法错B.3,5,3C.3,5,5D.3,5,7

3.下面判断正确的是

A.char*a="china";等价于char*a;*a="china";

B.charstr[5]={"china"};等价于charstr[]={"china"};

C.char*s="china";等价于char*s;s="china";

D.charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";

4.以下选项中关于C语言常量的叙述错误的是()。

A.所谓常量,是指在程序运行过程中,其值不能被改变的量

B.常量分为整型常量、实型常量、字符常量和字符串常量

C.常量可分为数值型常量和非数值常量

D.经常被使用的变量可以定义成常量

5.以下程序的输出结果是()main(){staticchara[10]={"Chinese"};printf("%d",strlen(a));}

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

6.

7.设有以下程序段:要求输入字符串给结构体变量rec的title成员,错误的输入语句是()A.seanf(”%s”Ptrtitle);

B.scanf(”%s”,rec.title);

C.scanf(’’%s”,(*pu).title);

D.scanf(”%s”,ptr->title);

8.假设整型数i的地址为0x12345678,指针ip地址为0x21850043,则执行以下后,k的值为()。A.0x12345678B.0x21850043C.100D.不确定

9.设有以下函数:voidfun(intn,char*s){…}则下面对函数指针的定义和赋值均正确的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

10.设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为

A.intB.floatC.doubleD.不确定

11.以下不能将s所指字符串正确复制到t所指存储空间的是()A.do{*t++=*s++;}while(*s);

B.for(=0;t[的]=s@];i++);

C.while(*t=*s){t++;s++}

D.for(i=0.j=0;t[i++]=sj++];);.

12.以下选项中,当x为大于l的奇数时,值为0的表达式是

A.x%2==1B.x/2C.x%2!=0D.x%2==0

13.以下有4组用户标识符,其中合法的一组是()。

A.FOr-subCase

B.4dDOSize

C.f2_G3IFabc

D.WORDvoiddefine

14.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;++)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

15.

16.数据的逻辑关系是指数据元素的()。

A.关联B.结构C.数据项D.存储方式

17.有以下程序:#include<stdio.h>main(){char*s=“01234”;while(*(++s)!=‘\0’){switch(*s-‘0’){case0:case1:putchar(*s+1);break;case2:putchar(*s+1);break;case3:putchar(*s+1);default:putchar(*s+1);break;}}}程序运行后的输出结果是()。

A.22345B.2345C.12345D.23445

18.请问对一个排好序的数组进行查找,时间复杂度为()

A.O(n)B.O(lgn)C.O(nlgn)D.O(1)

19.对于关键字值序列(12,13,11,18,60,15,7,18,25,100)

A.100B.12C.60D.15

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

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

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

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

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

二、2.填空题(20题)21.存储300个16×16点阵的汉字信息需要【】字节。

22.设有如下变量说明,则a+(int)((int)b+c)>>(int)(b-c)的值为【】。

inta=5;floatb=7.2,c=3.6;

23.有以下程序:

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+t(i);

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

}

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

24.以下程序运行时,若从键盘输入:102030<回车>,输出的结果是【】。

#include<stdio.h>

main()

{inti=0,j=0,k=0;

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

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

}

25.有以下定义和语句,则sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

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

27.栈的3种基本运算是:入栈、退栈和______。

28.下面程序的运行结果是:【】。

typedefunionstudent

{charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{STUa[5];

Printf(“%d\n”,sizeof(a));

}

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

#defineMCNA(m)2*m

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

#definef(x)(x*x)

main()

{inti=2,j=3;

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

}

30.下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空。

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

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

#include<stdio.h>

main()

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

inti;

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

printf("\n");

}

32.若输入字符串:abcde<回车>,则以下while循环体将执行【】次。

while((ch=getchar())=='e')printf("*");

33.以下程序运行后的输出结果是______。

main()

{

charc1,c2;

for{c1='0',c2='9';c1<c2;c1++,C2--)

printf("%c%c",c1,c2);

printf("\n");

}

34.面向对象的模型中,最基本概念是对象和【】。

35.软件定义时期主要包括______和需求分析两个阶段。

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

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

#include<stdio.h>

main()

{inti;

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

printf("\n");

}

38.下面程序执行后输出的结果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

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

}

39.有以下程序:

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;

*q=*(p+5);

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

}

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

40.下面程序的运行结果是【】。

#defineN10

#defines(x)x*x

#definef(x)(x*x)

main()

{inti1,i2;

i1=1000/s(N);i2=1000/f(N);

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

}

三、1.选择题(20题)41.设有如下的变量定义,以下符合C语言语法的表达式是______。inti=8,k,a,b;unsignedlongw=5;doublex=1,42,y=5.2;

A.a+=a-=(b=4)*(a=3);B.x%(-3);C.a=a*3=2;D.y=float(i);

42.下列程序的输出结果是______。main(){chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);}

A.非法B.a[4]的地址C.5D.3

43.在软件测试设计中,软件测试的主要目的是

A.实验性运行软件B.证明软件正确C.找出软件中全部错误D.尽可能多地发现软件中的错误

44.有以下程序:#include<stdio.h>inta=2;intf(int*a){return(*a)++;}main(){ints=0;{inta=5;s+=f(&a);}s+=f(&a);printf("%d\n",s)}执行后的输出结果是()。

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

45.有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是

A.编译出错B.9C.21D.9

46.数据库设计的根本目标是要解决()。

A.数据共享问题B.数据安全问题C.大量数据存储问题D.简化数据维护

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

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

48.若有以下定义:

structlink

{intdata;

structlink*next;

}a,b,c,*p,*q;

且变量a和b之间已有如下图所示的链表结构:

指针p指向变量a,q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句组是:

A.a.next=c;c.next=b;

B.p.next=q;q.next=p.next;

C.p->next=&c;q->next=p->next;

D.(*p).next=q;(*q).next=&b;

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

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

50.下列正确的实型常量是()。

A.E3.4B.-12345C.2.2eO.8D.4

51.设栈S的初始状态为空,栈的容量为5,若入栈元素的顺序是e1、e2、e3、e4、e5,则出栈元素的顺序不可能是______。

A.e1、e2、e3、e4、e5

B.e5、e4、e3、e2、e1

C.e2、e4、e3、e5、e1

D.e3、e4、e1、e2、e5

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

A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.在C的函数中,最好使用全局变量

C.外部变量可以在函数之间传递数据

D.自动变量实质上是一个函数内部的局部变量

53.有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}执行后输出结果是()。

A.7,8,8B.7,8,7C.8,7,7D.8,7,8

54.有以下程序intfun(intn){if(n==1)return1;elsererurn(n+fun(n+1));}main(){intx;scanf("%d",&x);x=fun(x);printf("%d\n",x);}执行程序时,给变量x输入10,程序的输出结果是

A.55B.54C.65D.45

55.若已定义以下语句,其中0≤i≤9,则对a数组元素不正确的引用为______。inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

56.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序运行后的输出结果是______。

A.运行后报错B.66C.611D.510

57.以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转存到链表的各个结点中,请从与下划线处号码对应的一组选项中选择出正确的选项。

#include<stdlib.h>

structnode

{chardata;structnode*next;};

(48)CreatList(char*s)

{structnode*h,*p,*q;

h=(structnode*)malloc(sizeof(Structnode));

p=q=h;

while(*s!=‘\0’)

{p=(structnode*)malloc(sizeof(structnode));

p->data=(49);

q->next=p;

q=(50);

s++;

}

p->next=0;

returnh;

}

main()

{charstr[]="linklist";

structnode*head;

head=CreatList(str);

}

A.char*B.stmctnodeC.strumnode*D.char

58.以下程序的输出结果是______。main(){chara[]="programming",b[]="language";char*p1,*p2;inti;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf("%c",*(p1+i));}

A.gmB.rgC.orD.ga

59.十进制数555的十六进制数表示形式为______。

A.220B.22AC.22BD.22C

60.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的

A.安全性B.一致性C.可理解性D.合理性

四、选择题(20题)61.

62.有以下函数该函数的功能是()。

A.计算s所指字符串占用内存字节的个数

B.比较两个字符串的大小

C.计算s所指字符串的长度

D.将s所指字符串复制到字符串t中

63.

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

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

65.已知大写:字母A的ASCIl码是65,小写字母a的ASCIl码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是()。

66.在下列语句中,其含义为“q是一个函数指针,该指针指向整型数据”的定义语句是()。

A.int**q;B.int(*q);C.int*q;D.int*q;

67.

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

A.220.000000B.10020.000000C.240.000000D.10040.000000

69.数据库设计包括两个方面的设计内容,它们是()

A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计

70.

设变量均已正确定义,

值10和20,为变量cl和c2赋字符X和Y。以下所示的输入形式中正确的是(注:口代表空格字符.()。

A.

B.

C.

D.

71.

72.下面程序的输出结果是()。

#include"string.h"

fun(char*w,intn)

{chart,*s1,*s2;

s1=w;s2=w+n-1;

while(s1<s2)

{t=*s1++;

*s1=*s2--;

*s2=t;

}

}

main()

{staticcharp[]="1234567";

fun(p,strlen(p));

printf("%s",p);

}

A.7654321B.1717171

C.7171717D.1711717

73.设有定义:“char*c;”,以下选项中能够使字符型指针c正确指向一个字符串的()。

A.charstr[]="string";c=str;

B.scanf(%s,c):

C.c=getchar();

D.*c="strin9";

74.已知inta,b;doublec;,则以下语句中错误的函数调用是

A.scanf("%d,%x,%lf",&a,&b,&c);B.scanf("%d,%d,%le",&a,&b,&c);

C.scanf("%o,%x,%o",&a,&b,&c);D.scanf("%d,%o,%e",&a,&b,&c);

75.有以下函数:

函数的功能是()。

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

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

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

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

76.有以下程序:

程序的运行结果是()。

A.xy,aaaaCeB.aaaaCC,xyC.bCC,aabCCD.aabCC,bCC

77.

78.

79.

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:根据整型参数m,计算如下公式的值:y=1/(100100)+1/(200200)+1/(300300)+…+1/(mm)例如,若m=4000,则应输出0.000162。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.输出1—100之间不能被12整除的数。

参考答案

1.B解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。本题答案为B。

2.B解析:本题考查的是程序结构设计中if语句的应用,当if判断条件成立时就执行其后的相关语句,否则不执行,本题中第一个if条件不成立,故不执行“a=b”,接着执行“c=a”,此时第二个if条件也不成立,故不执行其后语句,最终c的值为3。

3.C解析:选项A)char*a;*a=“china”应改为a=china;,选项B)应该是charstr[6];D)项表述方法有错误。

4.D此题考查的是常量和变量的定义,常量不是经常使用的变量,而是一个确定的数值,所以答案选择D。

5.A

6.A

7.A符号“_>”是指针特用的,符号“.”用于指定元素的成员。ptr是指针,只能用符号“一>”,因此选项A错误。+P是指定元素(Fee)可以使用“.”运算,因此选项D正确。选项B,Fee.title代表数组title,同理选项C正确。答案为A选项。

8.C

9.A函数指针的定义格式为函数类型(*指针变量名)(形参列表);函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。所以选项A正确。

10.C解析:根据混合运算规则,如果有一个数据是float型或double型,则其他数据类型先转化为double型,运算的结果最终也是double型。

11.A[解析]do{*t++=*s++;}while(*s);不能因为当*s=^0'时,while(*s)跳出循环,这样字符串结束标志“0没有复制给*t,造成*t不完整。\u3000\u3000注意,*t++=*s++是先执行t=*s,然后才进行t=t+1.s=s+1.B),C),D)三项都能将“0复制过去。

12.D解析:因为x的值为大于1的奇数,所以x除以2的余数等于1,因此,选项A)、C)中表达式的结果为真,不为0;对于选项B)来说,x除以2的商不会等于0;选项D)中表达式的结果为假,即等于0。

13.C解析:选项A中for和case为C语言中的保留字,不能作为用户标志符,故A错误。选项B中的4d其开头的第一个为数字,而在C语言中规定,第一个字符必须为字母或者下划线,故B错误;选项D中void为C语言中的保留字,不能作为用户标志符,故D错误。所以,4个选项中选项C符合题意。

14.C解析:该题稍微难一点。主要要搞清楚以下几点:①定义了一个指针数组char*p[2]后,程序中第一个循环for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p[1]元素指向二维数组ch的第二行字符串,这样,就使指针数组p和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:ch[i][j]或p[i][j]。②对二维数组ch的初始化,使其第一行ch[0]中存入了字符串“693

15.B

16.A

17.D程序首先定义一个字符指针s,指向一个常量字符串“01234”;接着while循环的循环条件每次将s指向下一个字符,然后判断s指向的字符是否为空字符“\\0”,若不是,则执行循环体,将当前字符与‘0’”的ASCII差值作为switch语句的常量表达式,执行对应的case语句。指针s指向空字符“\\0”时,则终止循环,程序结束。从常量字符串“01234”可知,循环过程中s指向的各个字符分别是1、2、3、4。当*s是字符“1”时,*s-‘0’的值为1,执行case1语句,输出*s+1,即字符“2”;当*s是字符“2”时,*s-‘0’的值为2,执行case2语句,输出*s+1,即字符“3”;当*s是字符“3”时,*s-‘0’的值为3,执行case3和default语句,两次输出*s+1,即字符“4”;当*s是字符“4”时,*s-‘0’的值为4,执行default语句,输出*s+1,即字符“5”。综上,程序输出结果为23445。故本题答案为D选项。

18.B

19.C

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

21.800800解析:一个16x16点阵的字形码需要16x16/8=32字节的存储空间,所以300个汉字信息需要9600个字节。

22.11解析:在表达式a+(int)((int)b+c)>>(int)(b-c)中圆括号最优先,其次为类型转换(int)、加法+、减法-、右移运算>>。所以先看两个圆括号((int)b+c)和(b-c),前者b先被转换为int型7,然后与c相加得10.6,后者结果是3.6,现在表达式为a+(iot)10.6>>(int)3.6。C语言中,float型转换为int型是截尾取整,所以表达式进一步简化为5+10>>3=>15>>3。由于15的二进制为000011112(下标),所以15>>3的结栗是000000012(下标),即1。

23.33解析:i=1时,f(1)=1,j=j+f(1)=0+1=1;i=2时,f(2)=f(1)+1=1+1=2:j=j+f(2)=1+3=3;此时循环结束,程序运行后的输出结果是3。

24.1030010300解析:输入语句使i=10,j=30,k没有被重新赋值,仍为初值0。

25.10410\r\n4解析:结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。int占2个字节,float占4个字节,共用体变量所占的内存长度等于最长的成员的长度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

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

27.读栈顶元素读栈顶元素解析:栈的基本运算有3种:入栈、退栈和读取栈顶元素。其中,入栈是指在栈顶插入一个新的元素;退栈是指取出栈顶元素并赋值给一个变量;读栈顶元素是将栈顶元素赋值给一个指定的变量,不删除栈顶元素。

28.8080解析:数组a是共用体变量,共用体类型变量所占的内存长度为最大成员的长度,即单精度数组的长度,为4×4=16,因此,数组a所占的内存长度为5×16=80,所以最后输出的s的值为80。

29.1616解析:本题定义了两个宏MCRA(m)和MCRB(n,m),展开宏MCRB(n,m),得到:MCRB(j,MCRA(i)=2*MCRA(j)+MCRA(i)=2×2×j+2×i=4×3+2×2=12+4=16,因此printf函数的输出结果为16。

30.c>='a'&&c<='z'c>='a'&&c<='z'解析:小写字母在内存中以ASCII的形式存入,且从a到z依次递增,所以可以直接用c>='a'&&c<='z'判断是不是小写字母;c!='\\n'判断是用换行符结束循环。

31.SO

32.0

33.918273645918273645解析:题目中为for循环定义了两个字符型循环变量c1和c2,循环开始时分别初始化为字符'0'和'9',然后每次循环结束给c1增1、c2减1,循环条件为c1<c2,即让c1的值依次为'0'、'1'、'2'…,c2的值依次为'9'、'8'、'7'…,直到两个数相遇时结束循环。又因为该循环的循环体每次按字符形式输出c1和c2的值.所以最终的输出结果为:0918273645。

34.类类解析:面向对象模型中,最基本的概念是对象和类。对象是现实世界中实体的模型化:将属性集和方法集相同的所有对象组合在一起,可以构成一个类。

35.可行性研究可行性研究解析:软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用及维护等,还可以将软件生命周期分为三个阶段:①软件定义阶段:可行性研究和需求分析;②软件开发阶段:设计、实现和测试;③软件运行维护阶段:交付使用和维护。

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

37.ACEACE解析:题目中for循环的循环变量i从字符'a'变到字符'e',但由于每次循环后都连续执行了两次i++,所以for循环将执行3次,循环变量i的值依次为'a'、'c'、'e'。循环体中是一条输出语句,按字符输出表达式i-'a'+'A'。因为大小写字母的ASCII码是连续的,例如'b'+1='c'、'W'-1='V',而且小写字母的ASCII码比大写字母的大。所以,同一个字母的大小写字符之差是一个固定值。由此可见,将一个字符从小写转换为大写,只需将其减去这个固定值,而将大写转为小写可以加上这个固定值。固定值可以通过任一字符的小写减去大写来得到。所以本题的i-'a'+'A'=i-('a'-'A'),即让i减去了此固定值,从而使整个表达式的值为i所代表的小写字母的大写形式。故本题的输出结果是ACE。

38.22解析:本题变量m既是外部变量(值是13),又是fun函数的局部变量(值为3)。函数fun(x*y-m)的值为7*5-3=32,在main函数中,fun(a,b)/m中的m应取外部变量的值13,因此输出2。

39.运行后报错运行后报错解析:指针q没有指向确定的存储单元,故不能赋值。

40.100010100010解析:先将程序中的宏替换掉,两处的宏替换后分别为i1=1000/10*10和i2=1000/(10*10),即i1=1000,i2=10,所以最后输出的i1和i2的值分别为1000和10。

41.A

42.C解析:本题中char*p=a+5;即相当于p=&a[5],而--p,是先要减1,则printf语句要输出的值就是a[4]。

43.D解析:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。

44.C解析:在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用这些变量。对于main函数中的{inta=5;s+=f(&a);},a只在花括号内有效。在函数之外定义的变量称为外部变量,外部变量是全局变量,它的有效范围是从定义该变量的位置开始到本源文件结束。程序开头的定义inta=2;使a成为全局变量,main函数中第二个s+=f(&a);语句中的a就是这个全局变量。

45.B解析:本题考查函数的综合知识。首先,我们可以利用强制转换类型转换运算符将一个表达式转换成所需类型。如:(double)a是将a转换成double类型;(int)(x+y)是将x+y的值转换成整型。

本题可按部就班地逐步运算:

fun((int)fun(a+c,b),a-c)

fun((int)fun(10,5),2-8)

fun((int)15.000000,-6)

fun(15,-6)

9

46.A解析:由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享本身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。因此,数据库设计的根本目标是要解决数据共享问题。

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

48.D解析:本题考查链表的数据结构,必须利用指针变量才能实现,即一个结点中应包含一个指针变量,用它存放下一结点的地址。

49.B解析:C语言以定,实参变量对形参变量的数据传递是“单向值传递”,只由实参传绐形参。在内存中,实参单元与形参单元是不同的单元。调用结束后,实参单元仍保留并维持原值。

50.B解析:实型常量有两种书写形式:①小数形式,它由符号、整数部分、小数点及小数部分组成;②指数形式,由十进制小数形式加上指数部分组成,其形式为十进制小数e指数或十进制小数E指数。注:e或E后面的指数必须是整数,并且在e或E的前面必须有数字。本题中,选项A)中E的前面没有数字,因此错误。选项C)中0.8不是整数,因此错误。选项D)中4是整型常量而不是实型常量。

51.D解析:栈是仅在表头和表尾进行插入和删除元素操作的线性表,其特点是“先进后出”。本题中,进栈的过程中可以出栈。选项D中,如果第一个出栈的元素为e3,由于入栈顺序是e1、e2、e3,那么e3出栈后,栈中元素必定有e1和e2,因为e1先入栈,故e1应在e2后出栈,所以选项D是不可能的出栈顺序。

52.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。

53.B解析:本题定义了一个返回值为指针的函数f(),此函数有两个指针型的形参x和y,该函数的功能,是返回x和y指向的变量中值较小的那个指针变量。主函数中定义了两个指针变量p和q,并让它们指向变量a和b,调用函数f(),返回指向的变量值较小的指针变量,r的值为指针变量p的值(变量a的地址),因此最后输出的*p、*q和*r的值是7,8和7。所以,B选项为所选。

54.A解析:本程序考查的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为1+2+3+4+5+6+7+8+9+10=55。

55.D

56.A解析:本题考核的知识点是通过指针引用数组的元素的方法.本题中首先定义了一个一维数组a并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。所以,4个选项中选项A符合题意。

57.C

58.D

59.C解析:本题考查不同进制数间的转换,(555)10=(1000101011)2=(22B)16。

60.C解析:结构化程序设计方法设计出的程序具有明显的优点。其一,程序易于理解、使用和维护;其二,提交了编程工作的效率,降低了软件开发成本。其中,人们更重视前者。

61.B

62.C首先char*s接受一个字符型数组的首地址并将这个首地址赋给另一个字符型指针char*t,while(*t++)不断循环,直到*t为‘\\o’,再将t一1,这时字符指针t指向字符串的最后一个字符,又因为s指向字符数组的首地址即字符串的首地址,所以return(t--s)便是返回字符数组中字符串的长度。故本题答案为C)。

63.C

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

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

65.A大写字母转换为对应小写字母,即加上32,A)选项不是累加32,所以选择A)

66.B本题考查指针函数。其定义的基本格式为:

温馨提示

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

评论

0/150

提交评论