2021-2022年江苏省苏州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第1页
2021-2022年江苏省苏州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第2页
2021-2022年江苏省苏州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第3页
2021-2022年江苏省苏州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第4页
2021-2022年江苏省苏州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年江苏省苏州市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有定义语句:charc1=92,c2=92;则以下表达式中值为零的是()。

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

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

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

3.

4.执行下列程序后,输出的结果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/S(k+m):printf("%d",a);}A.1B.4C.9D.0

5.若有说明chars1[30]="abc",s2[]="defghi";,则在使用函数strcat(s1,s2)后,结果是()。

A.s1的内容更新为abcdefghi

B.s1的内容更新为defghi\0

C.s1的内容更新为defghiabc\0

D.s1的内容更新为abcdefghi\0

6.在黑盒测试方法中,设计测试用例的主要根据是A.程序外部功能B.程序内部逻辑C.程序数据结构D.程序流程图

7.

8.采用深度优先搜索或拓扑排序算法可以判断出一个有向图中是否有环(回路)()

A.对B.错

9.下列叙述中正确的是()。A.一个逻辑数据结构只能有一种存储结构

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

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

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

10.若有定义floata[15],*p=a;,且数组a的首地址为300H,则p+13所指向的数组元素的地址为()。

A.334HB.30DHC.352HD.31AH

11.无向图中一个顶点的度是指图中与该顶点相邻接的顶点数。若无向图G中的顶点数为n,边数为e,则所有顶点的度数之和为()

A.n*eB.n+eC.2nD.2e

12.数据处理的最小单位是()。

A.数据B.数据元素C.数据项D.数据结构

13.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。

A.外模式B.内模式C.概念模式D.逻辑模式

14.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储()。

A.数据的处理方法B.数据元素的类型C.数据元素之间的关系D.数据的存储方法

15.有以下程序:intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=i;i<3;i++)j+=f(i);printf("%d\n",j);}程序运行后的输出结果是()。

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

16.有下列程序:main(){char*P[]={"3697","2584");inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!=\0){if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0;j+=2;}}printf("%d\n",num);}程序执行后的输出结果是()。A.35B.37C.39D.3975

17.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和______。A.编码设计B.测试阶段C.运行阶段D.物理设计

18.下面哪些使用的不是贪心算法()

A.单源最短路径中的Dijkstra算法

B.最小生成树的Prim算法

C.最小生成树的Kruskal算法

D.计算每对顶点最短路径的Floyd-Warshall算法

19.以下符号中不能作为标识符的是()。

A._256B.r32C.intD.e231

20.在执行()操作时,需要使用队列做辅助存储空间。

A.查找哈希(Hash)表B.深度优先搜索网C.前序(根)遍历二叉树D.广度优先搜索网

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

main()

{staticchara[]="language",b[]="program";

char*ptrl=a,*ptr2=b;

intk

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

if(*(ptrl+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

22.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

23.以下程序的功能是:从键盘输入一字符串,要求将每个单词中的第一个字母改成小写(如果原来已是小写字母,则不变),然后输出转换结果,补足所缺语句。

main()

{charstr[200];inti=0;

while((______=getchar())!='\n');

str[i-1)='\0';

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

if((str[i-1]==''‖i==0)&&str[i]>='A'&&str[i]<='Z')

str[i]+=______;

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

}

24.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\myfile.txt中有定义。)

______

main()

{printf("\n");

try_me();

printf("\n");}

25.按照逻辑结构分类,数据结构可分为线性结构和非线性结构,二叉树属于______。

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

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

27.若按功能划分,软件测试的方法通常分为白盒测试方法和【】测试方法。

28.当运行以下程序时,输入abed,程序的输出结果是:【】。

insert(charstr[])

{inti

i=strlen(str);

while(i>0)

{str[2*i]=str[i];str[2*-1]='*';i--;}

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

}

main()

{charstr[40];

scanf("%s",sB);insert(str);

}

29.若给fun函数的形参s传送字符串“∪∪6354'abc"(其中∪表示空格字符),则函数的返回值是【】。

longfun(chars[])

{longn;intsign;

for(;isspace(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*s-'0');

returnsign*n;

}

30.下面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;

}

}

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

strcen(chara[],charb[])

{intnum=0,n=0;

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

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

return(num);

}

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

strcen(chara[],charb[])

{intnum=0,n=0;

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

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

return(num);

}

33.下面程序的功能是从键盘输入一行字符,统计有多少个单词,单词间用空格分隔。补充所缺语句。

#include<stdio.h>

main()

{charss[80],c1,c2='';

inti=0,num=0;

gets(s);

while(s[i]!='\0')

{c1=s[i];

if(i==0)c2='';

elsec2=s[i-1];

if(【】)num++;

i++;

}

printf("Thereare%dwords,\n",num);

}

34.函数de1ete(s,i,n)的作用是从字符串s中删除从笫i个字符开始的n个字符,请填空。

voidde1ete(chars[],inti,intn)

{intj,k,length=O;

whi1e(s[length])

【】

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

whi1e(k<length)

s[j++]=s[k++];

s[j]='\0;}

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

#include<stdio.h>

#include<string.h>

char*ss(char*s)

char*p,t;

p=s+1:t=*s:

whilet*p){*(,p-1)=*p;p++;}

*(p-1)=t;

returns:}

main()

{char*p,str[10]="abedefgh";

p=ss(str);printf("%s\n".p):}

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

37.已有定义:double*p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元______。

38.面向对象的模型中,最基本的概念是对象和______。

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

main()

{intm=011,n=11;

printf("%d%d\ff",++m,n++);

}

40.()是指用户的应用程序与数据库的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变了,用户程序也可以不变。

三、1.选择题(20题)41.以下程序运行后,输出结果为______。main(){inta[2][3]={1,3,5,7,9,11},*s[2],**pp,*p;s[0]=a[0],s[1]=a[1];pp=s;p=(int*)malloc(sizeof(int));**pp=s[1][1];p=*pp;printf("%d\n",*p);}

A.1B.7C.9D.11

42.在C语言中,合法的字符常量是______。

A.'\081B.'\x43'C.'ab'D.\0

43.下面程序的输出结果是()。#include"stdio.h"intsub(intm){statica=4;a+=m;returna;}voidmain(){inti=2,j=1,k;k=sub(i);k=sub(j);printf("%d",k);}

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

44.可以在C语言中用做用户标识符的是______。

A.voiddefineWORDB.as_b3_123IfC.for-abccasD.2cDoSIG

45.有以下程序:main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf("%d\n",j);}程序运行后的输出结果是______。

A.42B.45C.56D.60

46.下列各数据类型不属于构造类型的是()。

A.枚举型B.共用型C.结构型D.数组型

47.有以下程序main(){union{unsignedintn;unsignedcharc;}ul;u1.C='A';pfintf("%c\n",u1.n);}执行后输出结果是

A.产生语法错B.随机值C.AD.65

48.以下不正确的定义语句是

A.doublex[5]={2.0,4.0,6.0,8.0,10.0};

B.inty[5]={0,1,3,5,7,9};

C.charc1[]={'1','2','3','4','5'};

D.charc2[]={'\x10','\xa','\x8'};

49.有定义语句:“intx,y;”,若要通过“scanf("%d,%d",&x,&y);”语句使变量x得到数值11,变量y得到数值12,下面4组输入形式中错误的是()。

A.1112<回车>B.11,12<回车>C.11,12<回车>D.11,<回车>12<回车>

50.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)s=a;for(b=1;b<=c;b++)s=s+1;则与上述程序段功能等价的赋值语句是()。

A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;

51.以下能正确定义数组并正确赋初值的语句是

A.intN=5,b[N][N];

B.inta[1][2]={{1},{3}};

C.intc[2][1]={{1,2},3,4}};

D.intd[3][2]={{1,2},{34}};

52.下面程序的文件名为Lexe,在DOS下输入的命令行参数为:ttomeetme<回车>则程序输出的结果是#include”stdio.h”main(argc,argv)intargc;char*argv[];{inti;printf("%d\n",argc);}

A.3B.4C.2D.以上答案都不正确

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

54.以下程序中与语句k=a>b?(b>c?1:0):0;功能等价的是

A.if((a>b)&&(b>c))k=1;elsek=0;

B.if((a>b)‖(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=1;elsek=0;

D.if(a>b)k=1;elseif(b<c)k=1;

55.设有如下三个关系表:

下列操作中正确的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

56.有以下程序:intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%if",&x);x=fun(x);printf("%d\n",x);}执行程序时,给变量X输入10,程序的输出结果是()。A.55B.54C.65D.45

57.下列程序的运行结果为()。

#include<stdio.h>

voidabc(char*str)

{inta,b,i,j;

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

if(str[i]!='a')

str[j++]=str[j];

str[j]='\0';

}

voidmain()

{charStr[]="abcdef';

abc(str);

printf("str[]=%s",str);

}

A.str[]=bcdefB.str[]=abcdefC.str[]=aD.str[]=ab

58.若已包括头文件<stdio.h>和<string.h>,运行下列程序段时输出结果是()。inti=0;chars1[10]="ABCD",s2[10]="EFG";strcat(s1,s2);while(s2[i++]!='\0')s2[i]=s1[i];puts(s2);

A.ABCB.ABCDEFC.EBCDEFGD.CBD

59.s1和s2已正确确定义并分别指向两个字符串。若要求:当s1所指字符串大于s2所指字符串时,执行语句S;则以下选项中正确的是()。

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,s1)>0)S;

D.if(stremp(s1,s2)>0)S;

60.在下列选项中,没有构成死循环的是

A.inti=100;while(1){i=i%100+1;if(i>100)break;}

B.for(;;);

C.intk=10000;do{k++;}while(k>10000);

D.)ints=36;while(s)--s;

四、选择题(20题)61.

62.

63.下列关于栈的叙述正确的是()。

A.栈按“先进先出”组织数据,B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据

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

A.改变函数形参的值,不会改变对应实参的值

B.函数可以返回地址值

C.可以给指针变量赋一个整数作为地址值.

D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

65.

如果进栈序列为el、e2、e3、e4,则可能的出栈序列是()。

A.e3、el、e4、e2B.e2、e4、e3、elC.e3、e4、e2D.任意顺序

66.设有以下语句执行后,c的值为()。

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

67.

有下列程序:

main

{intk=5:

while(--k)printf("%d",k=1);

printf("\n");

}

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

A.1B.2C.4D.死循环

68.

69.定义如下变量和数组:

则下面语句的输出结果是()。

A.951B.741C.753D.963

70.设变量X和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是()。A.if(x++);

B.if(x>y&&y!=0);

C.if(x>y)x--elsey++;

D.if(y<0){;}elsex++;

71.下列说法中不正确的是

A.C语言规定,不能在一个函数的内部再定义函数

B.在没有声明函数返回值类型的情况下,默认的函数返回值类型为int型

C.函数的类型可以是整型、实型、字符型,但不能是指针型

D.函数可以没有形参,但函数名后的一对圆括号不能省略

72.以下定义语句中正确的是()。

A.

B.

C.

D.

73.

下列程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。

#include<stdio.h>

voidsort(inta[],intll)

{inti,j,t;

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

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

if(a[i]<a[j])

{t=a[i];a[i]=a[j];a[j]=t;

}

}

main()

{inta[10]一{1,2,3,4,5,6,7,8,9,10},i;

sort(&a[1],7);

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

}

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

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

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

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

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

74.

75.在E—R图中,用来表示实体联系的图形是()。

A.椭圆形B.矩形C.菱形D.三角形

76.在下列给出的表达式中,与while(E)中的(E)不等价的表达式是()。A.(!E==0)B.(E>0||E<0)C.(E==0)D.(E!=0)

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

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

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

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

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

78.

79.下列选项中,能够满足“只要字符串sl等于字符串s2,则执行sT”要求的是()。程序执行后的输出结果是()。

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

80.执行下列程序后,变量a,b,C的值分别是()。intx=5,y=4;inta,b,c;a=(--x==y++)?X:++y;b=++x:c=y:A.a=5,b=5,c=5B.a=4,b=5,c=5C.a=5,b=6,c=5D.a=1,b=5,c=6

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:判断一个整数m是否是素数,若是返回1,否则返回0。在main()函数中,若proc()返回1,则输出″YES″;若proc()返回0,则输出″NO″!

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

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

试题程序:

六、程序设计题(1题)82.请编写函数proc(),它的功能是计算下列级数和,和值由函数值返回。sum=1-x+x2/2!-x3/31+…+(-l*x)n/n!例如,当n=23,x=0.3时,函数值为0.740818。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。试题程序:

参考答案

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

2.B解析:选项A)定义的是长度为5的数组元素,但初值有6个元素,所以错误;选项C)不符合数组定义形式,数组名后应加上“[];选项D)的类型说明符错误,应改为char;选项B)中的0,1,2,3,4,5分别表示对应字符的ASCII码,所以正确。

3.D

4.D本题主要考查带参数的宏定义,过程如下:由于定义为define(x)x*x没有括号优先级,所以:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。

5.D解析:strcat(s1,s2)是把s2字符串连接到s1字符串的末尾,要保证s1能容纳下连接后的字符串。

6.A【答案】:A

【知识点】:黑盒测试

【解析】:黑盒测试也称功能测试或数据驱动测试,它完全不考虑程序内部的逻辑结构和内部特征,只着眼于程序的外部结构,主要用来检查程序功能是否按照需求规格说明书的规定正常使用。故选A。

7.B

8.A

9.DD)【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,其处理的效率是不同的。

10.C解析:解答本题,首先要明白在对指针进行加、减运算的时候,数字“1”不是十进制的数“1”,而是指'1'个存储单元长度,而1个存储单元长度占多少存储空间,应该视具体情况而定。如果基本类型是int型,移动1个存储单元的长度就是位移2个字节,如果基本类型是float型,移动1个存储单元的长度就是位移4个字节。所以p+13所指向的数组元素的地址:300H+(13*上标)4)H=352H。

11.D

12.C解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。

13.B数据库有三层模式结构,逻辑模式是数据的全局逻辑结构的描述,外模式也称为子模式,是局部数据的逻辑结构描述,而内模式也称为存储模式,是数据库物理存储结构和存取方法的描述。

14.C

15.B解析:通过分析不难写出,f()函数的数学表达式为:

f(n)=1n=l;

f(n)=f(-1)+1n≠1;

在主函数中for循环执行了两次函数调用f(i)。第一次:i为1,调用f(1)得到返回值1,并把它加到j中,j的值为1。第二次i为2,调用f(n),根据递归公式可知f(2)=f(1)+1,得到返回值2并把它加到j中,j的值为3。所以最后输出,i的值为3。

16.D执行第一次for循环时,用表达式p[i][J]!=\o来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。if语句表示(p[i][j]-\o)除2的余数不为0时,即字符串所有奇数,执行后面的语句。所以退出第1次for的循环体时,输出为397,执行第2次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。

17.DD)【解析】数据库设计目前一段采用生命周期法.即将整个数据库应用系统的开分解成目标独立的若干阶段,它们是:需要分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主线。

18.D

19.C

20.D

21.

22.数据存储数据存储

23.str[i++]32。str[i++]32。解析:while语句的循环控制条件既要将相应元素赋予从键盘输入的字符,又要改变元素的下标值,以便接受下一个字符,可用下标变量的后置加实现;小写字母的ASCII码值比相对应的大写形式大32。

24.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本题考查了函数的存储分类的概念。如果没有特别说明,函数的存储范围是从定义函数的位置到文件的结尾,如果其他文件想使用这个函数,需要用ginclude文件包含命令将定义函数的文件包含进来。

25.非线性结构非线性结构解析:对于一个非空的数据结构,如果同时满足下列两个条件,即1)有且只有一个根结点;2)每一个结点最多有一个前件,也最多有一个后件;即为线性结构,而二叉树的结点可能存在两个后件,所以是非线性结构。

26.136136解析:本题考核的知识点是函数递归。主函数调用函数fun(6),由于6/2>0为真递归调用fun(3),接着递归调用fun(1),输出1,返回上一层输出3,在返回上一层输出6。故空格处应该填136。

27.黑盒软件测试的方法有三种:动态测试、静态测试和正确性证明。设计测试实例的方法一般有两类:黑盒测试法和白盒测试法。在使用黑盒法设计测试实例时,测试人员将程序看成一个“黑盒”,即不关心程序内部是如何实现的,只是检查程序是否符合它的“功能说明”,所以使用黑盒法设计的测试用例完全是根据程序的功能说明来设计的。

28.a*b*c*da*b*c*d,解析:在insert()函数,因为题目要求输入的字符串为abed,所以执行完“i=strlen(str);”后,i中存放的是字符串abcd的长度值4。所以接F来的while循环会循环4次,每次让i减1,故4次循环中i的值依次为4、3、2、1。每次循环会执行两条语句str[2*i]=str[i];str[2*i-1]='*',当i=4时为:str[8]=str[4];str[7=='*';。执行结果是将字符串abed末尾的结束符'\\0'复制到其下标值2倍的位置,并在其前1位插入—个'*'哼符。接下来i=3,执行str[6]=str[3];str[5]='*'。执行后会将字符串abcd最后一个字符,d复制到其下标值2倍的位置,并在其前1位插入一个'*'字符。依次类推,直到i=1,执行str[2]=str[1];str[1]='*',将字符tb,往后移动了1位,并在原位置插入'*'字符。所以,循环结束后,字符串str会变为a*b*c*d*。这就是程序的输出结果。

29.63546354解析:函数fun的第一个for循环跳过字符串的前导空白符,接着判断第一个非空白符是否是负号,若是,则置变量sign为-1;否则,置变量sign为1。接着的if语句在第一个非空白字符是负号或正号时,跳过该字符。以后的for循环将后面的数字符当作十进制数的各位数字转换为一个长整数n,当遇字符a时,结束循环。最后,函数返回sign与n的乘积。所以若调用函数时提供的实参是“∪∪6354abc”,则函数的返回值是6354。

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

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

32.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1

33.c1!==''&&c2==''

34.length++i<lengthlength++\r\ni<length解析:第—个循环极有可能是计算串的长度,在i<=length时字符才被删除,被删除的是从第i个到第i+n或最后—个间的所有字符。删除前,应判断i<=length。由于已经进行了-i运算,故实际应填入i<length。

35.bedefghabedefgha解析:函数9,的作用是将指针变量。指向的字符串的首字符移到最后一个位置,其他字符依次前移。其方法是:首先将指针变量p指向字符串s的第2个字符b,然后将首字符保存在字符变量t中;从字符串的第2个字符开始,通过语句*(P-1)=*p;依次前移,直到字符串结束符;最后通过语句*(P-1)=t;将保存在t中的字符放到移动后的字符串末尾,返回main函数并输出,输出结果为bedefsh。

36.逻辑关系逻辑关系

37.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函数只有一个参数,该参数指定了需要分配多少字节的内存。然后将分配好的内存块的首地址作为void*(未知类型指针)返回.故标准的调用形式应该写成:

p(double*)malloc(sizeof(double));

38.类类

39.10111011解析:赋值表达式m=011中的常数011为八进制,++m后以十进制数格式“%d”输出为10。

40.逻辑独立性逻辑独立性解析:数据独立性包括数据的物理独立性和逻辑独立性。物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。数据在磁盘上的数据库中怎样存储是由DBMS管理的,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变时。应用程序不用改变。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变了,用户程序也可以不变。

41.C解析:s是一个含有两个元素的指针数组,pp是一个指向指针变量的指针,s[0]是指向二维数组a行下标为0的元素的首地址,即时a[0][0]的地址,s[1]为a[1][0]的地址。pp的值为s[0]的地址。**pp=s[1][1]后,a[0][0]的值将被赋值为a[1][1]的值,执行p=*pp;后,p中将是s[0]的值,最后的输出语句将输出地址s[0]所指向的数据,即a[0][0]。

42.B解析:选项A错在表示转义字符的三位八进制数中不能出现8,选项C错在字符串要用双引号括起,选项D错在单个字符应用单引号括起。选项B表示用两位16进制数代表转义字符。

43.B解析:在函数sub()的函数体中定义了一个静态存储变量a,a的值在函数调用完毕返回主函数后仍存在。第一次调用sub(i),a=a+m=4+2=6,返回值为6。第二次调用sub(j),a=a+m=6+1=7,返回值为7,最后输出k的值为7。

44.B解析:C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。另外还需要注意的是关键字不能作标识符。选项A中void,C中for都为关键字,D中2c以字母开头。

45.A解析:本题考查while语句和if语句的嵌套,程序段实现的功能是将p[1]至p[7]中的奇数相加求和并输出,j=13+15+17=45。

46.A本题考查高级语言的数据类型。其中属于构造类型的主要有结构体类型、联合体类型,即共用体类型和数组类型。

47.C解析:在定义共用体的同时,定义了一个共用体型变量u1,共占两个字节,有两个成员n和c,两个成员的首地址是相同的。因此给u1,c赋一个“A”,其实就是给无符号整型成员u1.n的低字节赋一个“A”,输出u1,n的时候是以字符型的形式输出,只输出它的低地址的一个字节,因此为“A”。

48.B解析:在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。

49.A解析:scanf()函数有两个参数,第一个参数为输入格式字符串,第二个参数为输入变量地址列表,在scanf()语句中非格式字符可以作为输入时数据的间隔,输入时必须原样输入,在本题中输入格式串为“%d,%d”其中“,”为非格式字符,所以输入时必须原样输入。所以,4个选项中选项A符合题意。

50.B解析:本题考核的知识点是for循环次数的计算.本程序中for循环的次数为c-1+1共循环了c次,而每循环一次s的值加1,所以s的值为s+c.而最开始s的值为a,故4个选项中选项B符合题意.

51.D解析:选项A中,数组的长度使用了变量N,而在C中是不能用变量来定义数组的的长度的。在C语言中,给二维数组赋初值时,行数不能超过定义的行数,每行的初值个数不能超过定义时的列数。选项C数组的第二维下标缺省,而在C语言中,数组的第二维下标不能缺省。

52.B解析:argc中存入的是命令行中字符串的个数。argv是一个指向字符型的指针数组的指针。

53.C解析:本题中定义了一个全局变量a和局部变量a。在主函数中定义一个整型变量s并赋初值为0,接着定义了一个局部变量a并赋值为5,由于该局部变量的和全局变量a同名,全局变量在复合语句中将不起作用,然后调用函数f(&a)(该函数的作用是返回存储变量a中的值,并让该值加1,分析程序可知返回值为5,并让a值加1变为6),并将返回值加到s中。此时s的值为5,再执行该复合语句外的其他语句,同样调用函数f(&a),传递的参数是全局变量a,故其返回值为2,加到s中后s的值变为7,最后输出的s值为7,所以,4个选项中选项C符合题意。

54.A解析:三目运算表达式的规则为如果“?”前面的表达式的值为真,则取“:”前的表达式的值,否则,取“:”后面表达式的值。分析题目中给出的表达式可知,如果a>b和b>c同时成立,k=1,否则k=0。

55.C解析:本题考查数据库的关系代数运算。R表中只有一个域名A,有两个记录(也叫元组),分别是m和n;S表中有两个域名,分别是B和C,其所对应的记录分别为1和3。注意观察表T,它是由R的第一个记录依次与S的所有记录组合,然后再由R的第二个记录与S的所有记录组合,形成的一个新表。上述运算恰恰符合关系代数的笛卡儿积运算规则。关系代数中,笛卡儿积运算用“×”来表示。因此,上述运算可以表示为T=R×S。因此,本题的正确答案为C。

56.A函数fun()通过递归调用实现的功能为n+(n-1)+…+1,故程序的输出结果为55。

57.A解析:本题考查函数调用时的参数传递。通过函数abc的执行,将字符串中的字母a去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。

58.C解析:strcat(s1,s2)把s2连接到s1的后面,s1=ABCDEFG,执行while(s2[i++]!='\\0')后i的值变为1,往后执行s2[i]=s1[i]时是从把s1的第二位给s2的第二位开始,把s1赋给s2。

59.D字符串的比较不能直接用关系运算符,可用字符串比较函数strcmp(char.s1,char*s2)实现,其比较规则是对两个字符串自左至右逐个字符按其对应的ASCII码值进行比较,直到出现不同的字符或遇到'\\0'为止。若对应字符都相同,则两字符串相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。比较的结果由函数值带回。当s1<s2时,返回负数;当s1=s2时,返回0;当s1>s2时,返回正数。所以在此题中要使得s1所指串大于s2所指串,就必定使得strcmp(s1,s2)>0。

60.D解析:选项A)的循环表达式的条件永久为1,并且小于100的数与100取余不超过99,所以在循环体内表达式i%100+1的值永远不大于100,break语句永远不会执行,所以是死循环;选项B)的括号内没有能使循环停下来的变量增量,是死循环;选项C)中先执行k++,使k=10001,从而使循环陷入死循环。

61.C

62.C

63.B栈是按“先进后出”的原则组织数据的,数据的插入和删除都在栈顶进行操作。

64.C解析:函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在文件stdio.h中,NULL被定义为void型的指针,选项D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项C)错误。

65.B

\n栈的特点是先进后出,可知el肯定是最后出栈的,因此正确答案为选项B。

\n

66.Ab为2,二进制为00000010,执行左移两位操作后为00001000,然后与a00000001做异或操作,结果为00001001,即十进制的9,因此A)选项正确。

67.A

\n在程序语句中,k的初始值为5,进行第l次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出k,此时k的值变为1。

温馨提示

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

评论

0/150

提交评论