2022年辽宁省葫芦岛市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2022年辽宁省葫芦岛市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2022年辽宁省葫芦岛市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2022年辽宁省葫芦岛市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2022年辽宁省葫芦岛市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

2022年辽宁省葫芦岛市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为()。

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

2.若要说明一个类型名STP,使得定义语句STPs;等价于Char*s;,以下选项中正确的是()。

A.typedefChar*s;

B.typedefChar*STP;

C.typedefSTP*Char;

D.typedef*CharSTP;

3.

4.给出以下定义:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};则正确的叙述为()。

A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度

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

6.下列各排序法中,最坏情况下的时间复杂度最低的是()

A.希尔排序B.快速排序C.堆排序D.冒泡排序

7.设有定义“inta;floatb;”,执行“scanf(“%2d%f”,&a,&b);”语句时,若从键盘输入876543.0并按<Enter>键,则a和b的值分别是()。

A.87和6.0B.876和543.0C.87和543.0D.76和543.0

8.下列程序的输出结果是()。#include<stdio.h>main{inti;for(i=1;i<=10,i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i;}A.49B.36C.25D.64

9.已有定义:chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是()。

A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.以述说法都不对

10.下列关于线性表的叙述中,不正确的是()

A.线性表可以是空表

B.线性表是一种线性结构

C.线性表的所有结点有且仅有一个前件和后件

D.线性表是由n个元素组成的一个有限序列

11.有以下程序:#include<stdio.h>#include<stdlib.h>main{int*a,*b,*C;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b:printf("%d,%d,%d\n",*a,*b,*c);}程序运行后的输出结果是()。A.3,3,3B.2,2,3C.1,2,3D.1,1,3

12.执行下列程序后的输出结果是______。main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}

A.-1B.1C.8D.0

13.二叉树的后序排列DBEFCA,中序排列DBAECF,那么对其做先序线索化二叉树,节点E的线索化指向节点()

A.BCB.ACC.DFD.CF

14.已知A=10,B=20,下类表达式正确的是()。

A.C=(A++)*(--B)=200

B.A-=30

C.C=(A++)+(B--)=30

D.C=(++A)*(--B)=210

15.

16.有以下程序:#includemain(){intx,y,z;x=y=1;z=x++,y++,++y;printf(“%d,%d,%d\n”,x,y,z);}程序运行后的输出结果是()。A.2.3.3B.2.3.2C.2.3.1D.2.2.1

17.下面程序段的时间复杂度为()。

A.O(n)B.O(n2)C.O(1)D.O(nlog2n)

18.下面程序中算法的时间复杂度是()A.O(n)B.O(n^2)C.O(logn)D.O(n*logn)

19.下述函数功能是______。intfun(char*x){char*y=x;while(*y++);returny-x-1;}

A.求字符串的长度B.求字符串存放的位置C.比较两个字符串的大小D.将字符串x连接到字符串y后面

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

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

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

#include<string.h>

main()

{charch[]="abc",x[3][4];inti;

for(i=0;i<3;i++)strcpy(x[i],ch);

for(i=0;i<3;i++)printf("%s",&x[i][i]);

printf("\n");

}

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

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

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

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

k;N*N*5;printf("%d\n"k);

}

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

charb[]="ABCD";

main()

{

charb[30];

strcpy(&b[0],"GH");

strcpy(&b[1],"GH");

strcpy(&b[2],"GH");

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

}

25.测试用例包括输入值集和【】值集。

26.若输入tc,则程序的运行结果为【】。

#include<stdio.h>

main()

{charstr[40];

fscanf(stdin,"%s",str);

fprintf(stdout,"%s\n",str);

}

27.有以下程序

intfa(intx){returnx*x;}

intfb(intx){retumx*x*x;}

intf(int(*f1)(),int(*f2)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

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

28.下列程序的输出结果是()。

intt(intx,inty,intcp,intdp)

{cp=x%y+y*y;

dp=x+x-y*y;

}

main()

{ima=4,b=3,c=9,d=8;

t(a,b,c,D);

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

}

29.以下程序中,for循环体执行的次数是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

for(i=1;i<K;i++)

{…}

}

30.下面程序把从终端读入的10个整数以二进制的方式写到一个名为bi.dat的新文件中。请填空。

#include<stdio.h>

FILE*fp;

main()

{inti,j;

if((fp=fopen(【】,"wb"));=NULL)exit(0);

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

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

fwrite(&j,sizeof(int),1,【】);

}

fclose(fp);

}

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

main()

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

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

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

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

}

32.实体联系模型是一种常用的高级概念数据模型,而______是实体联系模型中的核心。

33.以下程序的功能是建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");

scanf("%d",&a);

while(a!=-1)

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

【】=a;q->next=p;【】=p;scanf("%d",&a);}

p->next=′\0;return(ph);}

main()

{structlist*head;head=creatlist();}

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

main()

charc;intn=100;

floatf=10;doublex;

x=f*=n/=(c=50);

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

35.下列的for语句的循环次数为______。

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

36.\13'在内存中占1个字节,"\12"在内存中占______个字节。

37.在数据库的概念结构设计中,常用的描述工具是【】。

38.下面程序的输出走【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

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

main()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%",n[i]);

}

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

三、1.选择题(20题)41.假定所有变量均已正确说明,下列程序段运行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3

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

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

43.有以下定义

#include<stdio.h>

chara[10],*b=a;

不能给a数组输入字符串的语句是

A.gets(A)B.gets(a[0]);C.gets(&a[0]);D.gets(B);

44.下面能正确进行字符串赋值操作的是()。

A.chars[5]={"ABCDE"};

B.chars[5]={'A','B','C','D','E'};

C.char*s;s="ABCDE";

D.char*s;scanf("%s",&s);

45.若要“向文本文件尾增加数据”,在fopen函数中应使用的文件方式是()

A.ab+B.aC.abD.a+

46.若有以下定义和语句:char*s1="12345",*s2="1234";printf("%d\n",strlen(strcpy(s1,s2)));则输出结果是______。

A.4B.5C.9D.10

47.有三个关系R、s和T如下:

由关系R和s通过运算得到关系T,则所使用的运算为()。

A.并B.自然连接C.笛卡尔积D.交

48.在下列关于二叉树的叙述中,正确的一项是

A.在二叉树中,任何一个结点的度都是2

B.二叉树的度为2

C.在二叉树中至少有一个结点的度是2

D.一棵二叉树的度可以小于2

49.以下程序的输出结果是()。#include<stdio.h>main(){inta,i;a=0;for(i=1;i<5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf("%d\n",a);}

A.31B.13C.10D.20

50.

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

inty=5,x=14;

y=((x=3*Y,x+1),x-1);

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

A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=27

51.以下不能定义为用户标识符的是()。

A.scanfB.VoidC.3comD.int

52.有以下程序:#include<string.h>voidf(charp[][10],intn)/*字符串从小到大排序*/{chart[10];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[5][10]={"abc","aabdog","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[0]));}程序运行后的输出结果是()。

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

53.以下合法的赋值语句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

54.一个源文件中的外部变量的作用域为()。

A.本文件的全部范围B.本程序的全部范围C.本函数的全部范围D.从定义该变量的位置开始到本文件结束

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

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

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

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

56.以下程序的输出结果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}

A.19B.17C.15D.12

57.下列不属于软件工程的3个要素的是______。

A.工具B.过程C.方法D.环境

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

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

59.出下列程序执行后的输出结果是______。mare(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,k=2;for(i]0;i<3;i++){printf(("%d",m[k][i]);}}

A.456B.258C.369D.789

60.有以下程序:#include<stdio.h>main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf("%d,%d\n",k,m);}程序运行后的输出结果是()。

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

四、选择题(20题)61.以下不合法的数值常量是()。

A.8.0E0.5B.lelC.0llD.0xabcd

62.若变量已正确说明为int类型,要通过语句scanf("%d%d%d",&a,&b,&c);给a赋值3,b赋值5,c赋值8,不正确的输入形式是

63.

有以下程序:

main

{inta=0,b=l0,c=0,d=0;

if(a=1)b=1;c=2;

elsed=3;

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

}

程序输出()。

A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错

64.

65.

66.软件生命周期中的活动不包括()。

A.市场调研B.需求分析C.软件测试D.软件维护

67.有以下程序已知字母A的ASCIl码为65,程序运行后的输出结果是()。

A.E。68B.D,69C.E,DD.输出无定值

68.

69.(47)在结构化方法中,软件功能分解属于下列软件开发中的阶段是()

A.详细设计

B.需求分析

C.总体设计

D.编程调试

70.已知大写字母A的ASCII码是65,小写字母a的ACSII码是97。下列能将变量C中的大写字母转换为对应小写字母的语句是()。

A.c=(c-'A')%26+'A'B.c=c+32C.c=c-'A'+'A'D.c=('A'+C)%26-'a'

71.

72.下面的程序段运行后,输出结果是()。

A.9B.不确定值C.0D.18

73.在深度为5的满二叉树中,叶子结点的个数为A.32B.31C.16D.15

74.有以下程序:

#include<stdio.h>

main

{intx=4,y;

do

{y=x;

if(!y)printf("x");

else

printf("y"):

x--;

}while(x);

}

程序的输出结果是()。A.A.xyyxB.yyyyC.yyxxD.yxyx

75.有以下程序:

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

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

76.

有以下程序:

main

{union

{charch[2];

intd;

}s;

d=0x4321;

printf("%x,%x\n",S.ch[0],S.ch[l]);

}

在16位编译系统上,程序执行后的输出结果是()

A.21,43B.43,21C.43,00D.21,00

77.

78.有以下结构体说明、变量定义和赋值语句:

则以下scanf函数调用语句有错误的是()。

A.scanf(”%s”,s[0].name);

B.scanf(”%d”,&s[0].age);

C.scanf(”%c”,&(ps一>sex));

D.scanf(”%d”,ps一>age):

79.不能把字符串:Hello!赋给数组b的语句是()。

A.charb[10]={’H’,’e’,’l’,’l’,’o’,’!’};

B.charb[10];b="Hello!";

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

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

A.5.OOB.5C.5.2lD.0.0

五、程序改错题(1题)81.下列给定程序中,函数fun的功能是:从低位开始依次取出长整型变量s中奇数位上的数,构成一个新数存放在t中。高位仍在高位,低位仍在低位。

例如,当s中的数为7654321时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!

#include<;stdi0.h>;

六、程序设计题(1题)82.有一个一维数组,内放10个学生成绩,写一个函数,求出平均分。

参考答案

1.C

2.B用关键字typedef声明一种新的类型的形式为typedef类型名标识符。本题中的类型为char*。

3.B

4.C解析:在C语言中,字符串以'\\0'作为结束符,因此数组x的长度为7+1=8,而数组y的长度等于7。

5.C

6.C

7.Ascanf函数中,在格式字符前加入一个整数可以指定输入数据所占的宽度,所以赋值时会将87赋给变量a,把6.0赋给float型变量b。故本题答案为A选项。

8.C本题考查for循环及if语句。当执行到第一个满足(i*i>一20)&&(i*i<=100)这个条件的i出现时,break跳出循环,执行下列的printf语句。

9.C解析:对字符型一维数组在定义时初始化,既可以使用初始化列表,也可以使用字符串常量。不过由于字符串常量会自动在结尾添加\'\\0\',字符做结束标志,所以用字符串常量的初始化列表项个数是字符串的长度加1。因此题目中的chara[]='xyz';等价于chara[]={\'x\',\'y\',\'z\',\'\\0\');,所以a数组长度大于b数组长度,应该选C。

10.CC)【解析】线性表是一种线性结构,由n(n≥O)个元素组成,所以线性表可以是空表。但是性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项C)是错误的。

11.A本题中,首先创建一个动态内存,然后将地址分别存入指针a、b、c中,即a、b、c都指向相同.的变量。分别给a、b、c所指的变量赋值,最终a、b、c所指的变量中的值为3,最后打印a、b、c所指的变量

12.D

13.D

14.C

15.A

16.C整型变量x、y的初值都为1,“x++,y++,++y”是一个逗号表达式,程序执行“z=x++,y++,++y”之后,x的值为2,y的值为3,z取逗号表达式中的第二个表达式的值,为1。因此本题的答案为选项C。

17.A

18.C

19.A解析:在函数体内定义一字符型指针并指向形参,然后遍历其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的长度。

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

21.abcbcc

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

23.5555解析:宏替换不是函数调用,所以不能因为M被定义为5,而N被定义为M+M而武断地认为N的值就是5+5=10。宏替换就是简单的字符串替换,以本题为例:因为N被定义为M+M,所以k=N*N*5;语句展开后为k=M+M*M+M*5;。又因为M被定义为5,所以再展开后为k=5+5*5+5*5;。现在不难计算出,这个表达式的结果为k=55。故最终输出结果是55。

24.GGGHGGGH解析:由于在函数main中定义了数组变量b,其将屏蔽全局变量b。对于一维数纽变量,其值为一常数,等于数组首元素地址。strcpy(&b[0],'GH'),是将字符串'GH'复制到数组b中从首元数开始的空间中,此是b中的字符串为”叫”:strcpy(&b[1],'GH'),是将字符串'GH'复制到数组b中从第二个元素开始的空间中,此是b中的字符串为“GH”。执行第三次strcpy函数后,b中的字符串为'GGGH'。

25.输出输出解析:测试用例曲测试输入数据(输入值集)和与之对应的预期输出结果(输出值集)两部分组成。

26.tc

27.44解析:在主函数中调用函数f,函数f有三个参数,形参f1与f2分别是两个指向函数的指针。在f中执行f2(x)-f1(x),实际上是执行了fb(2)-fa(2),故执行i=(fa,fb,2)后i的值为23-22=4。

28.9898解析:本题的考查点是函数的调用。本题中a,b,c,d是实参,x,y,cp,dp是形参。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。因此,程序的输出结果是98。

29.44解析:将程序中所有的宏替换掉可得:M=2+1,K=2+1*2+1/2=4,所以for循环共循环了K-1+1次,即4-1+1共4次。

30."bi.dat"fp

31.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。

32.实体联系图或E-R图实体联系图或E-R图解析:实体联系图(B-R图)是实体联系模型中的核心。由于E-R图描述的是数据流图中数据存储及其之间的关系,因此它是数据库观念设计的最常用的工具。

33.p->dataqp->data,q解析:本题考查的是链表这一数据结构对结构体变量中数据的引用。链表的特点是结构体变量中有两个域,一个是数据,另一个是指向该结构体变量类型的指针,用以指明链表的下一个结点。

34.220.0或220或220.或220.000000220.0或220或220.或220.000000解析:所有的赋值运算符的优先级都相同,它们的结合性为从右至左,它们返回的表达式值为赋给变量的值.所以,语句x=f*=n/=(c=50):→x=f*=n/=50;→x=f*=2;(n的值变成2)→x=20;。故最终输出的结果应该是:220.000000

35.66解析:分析程序可知,每循环一次,x的值加1,然后检测循环控制条件(y!=19)&&(x<7),因y的值不变,故满足x<7时循环6次。

36.22解析:'\\13':表示八进制数13表示的ASCII字符,是一个字符,占一个字节;而”\\12”是个字符串,除了八进制数12表示的ASCII字符占一个字节外,还有在字符串的末尾加上串结束标志“'\\0'”,所以共有2个字节。

37.E-R图E-R图解析:E-R图是设计概念模型的有力工具。

38.DDBBCCDDBBCC解析:C语言对枚举的定义规定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上一个元素存在并有明确值的情况下,这个枚举元素的值为其上一个元素的值+1。在本题中,没有明确说明枚举元素em3的值,则em3=em2+1=1+1=2,进而可知,在printf()打印函数中,要打印的数组元素是aa[3]、aa[1]、aa[2],因此最后的打印结果应当为“DDBBCC”。

39.1371513715解析:本题中数组n有5个元素且初值为0,以下为for循环的执行过程。

第1次循环:循环前i=1,执行循环语句n[1]=n[1-1)*2+1=n[0]*2+1=1,输出1;

第2次循环:循环前i=2,执行循环语句n[2]=n[2-1)*2+1=n[1]*2+1=1*2+1=3,输出3;

第3次循环:循环前i=3,执行循环语句n[3]=n[3-1]*2+1=n[2]*2+1=3*2+1=7,输出7;

第4次循环:循环前i=4,执行循环语句n[4]=n[4-1)*2+1=n[3]*2+1=7*2+1=15,输出15;

所以程序的运行结果为:13715。

40.软件开发

41.B解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a=0,则!a成立,执行下列的语句,x--,得x=11:第二个if语句,判断条件,发现c=o,则条件不成立,执行下列的else语句,得x=4。

42.C解析:考查栈和队列概念的掌握。栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种'后进先出'的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种'先进先出'的线性表。模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这种耦合方式。

43.B解析:函数gets()的调用形式为gets(str_adr);str_adr是存放字符串的起始地址。可以是字符数组名、字符指针或字符数组元素的地址。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。换行符读入后,不作为字符串的内容。本题中定义一个长度为10的字符数组,和一个指针变量b,并且通过赋值让它指向数组a。gets函数的参数a[0]不能表示数组a的首地址。

44.C解析:如果一个字符数组用来存储字符串,那么在定义该字符数组时,数组的大小应该比它将要实际存放的字符串长度大1,所以选项A)和B)错;选项D)中s本身就是一个字符指针,不需再取地址。

45.D

46.A解析:函数strcpy(s1,s2)的返回结果是指针s1的新值'1234',因此求串长函数的结果为4。

47.D关系R与s经交运算后所得到的关系是由那些既在R内又在S内的共有元组组成的,记为RnS。

48.D解析:本题考查了二叉树的基本概念。在二叉树中,叶子节点的度是1;当该二叉树为空树时,根节点的度为零;为非空树时,根节点的度为2。

49.A解析:多分支选择switch语句的一般形式为:

switch(表达式)

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

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

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

default:语句n+1;

}

其语义是:计算表达式的值,并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,不再进行判断,继续执行后面所有case后的语句。如果表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。

50.C解析:逗号表达式的求解步骤是先求解表达式1,然后依次求解表达式2,直到表达式N的值。整个逗号表达式的值就是最后一个表达式N的值。

表达式(x=3*y,x+1)中,第一个表达式x=3*y=3*5=15;第二个表达式x+1=16,但没有给x或y赋值,所以x还是等于15;第3个表达式x-1=15-1=14,所以y的值为14。

51.D解析:标识符是C语言中用来表示变量名、数组名、函数名、指针名、结构名、联合名、枚举常数名、用户定义的数据类型名、语句标号等用途的字符序列。标识符由1~32个字符组成,第一个字符必须是字母或下划线,后面的字符可以是字母、数字或下划线。标识符不能与C关键字相同,并区分大小写。选项D)错误,因为int是C语言中的关键字。

52.C解析:题目中已告知函数f()的作用是将字符串从小到大排序,因此主函数中调用完f(p,5);后,二维数组p中的内容为('aabdfg','abbd','abc','cd','dcdbc'}。输出的结果是strlen(p[0]),即p中第1个字符串的长度,所以结果是6。故本题应该选择C。

53.B解析:本题中的答案A与D都缺少“;”,而答案C中,表达式是不能独立成为语句的,答案B使用了C语言的自减运算符它就相当于D=D-1,所以答案B为一赋值语句。

54.D解析:一个源文件中的外部变量的作用域是从定义该变量的位置开始到本文件结束。

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

56.D解析:C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:

#define宏名(形参表)字符串

本题的M(a+b,b+c,c+a)被字符串a+b*b+c+c+a代替。

57.D解析:本题考查了软件工程的基本概念。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制和管理。

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

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

59.C解析:根据二维数组的定义得出:m[0][0]=1,m[0][1]=4,m[0][2]=7,m[1][0]=2,m[1][1]=5,m[1][2]=8,m[2][0]=3,m[2][1]=6,m[2][2]=9,所以本题的输出是第3行的值m[2][0],m[2][0],m[2][2],即369。

60.C解析:本题考查逻辑或运算。因为b>a为真,即n=1,则m不需再计算,保持原值,因此k值为1,m值仍为0。

61.AA选项中E后面的指数必须为整型数据,所以A错误。c选项中011表示的是八进制常量,0xabcd表示的是十六进制常量。

62.B本题中,“%d%d%d”表示按整型数形式输入数据,输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键或Tab键。选项B中不应该使用逗号。

63.D

\n语法错误。else与if之间不应再用其他语句,如果满足if条件,则继续执行if后面的语句;不满足就执行else语句。

\n

64.A

65.A

66.A软件的生命周期描述了软件从产生到最终消亡的全过程,生命周期中的活动包括需求分析、软件设计(分为概要设计和详细设计)、软件实现、软件测试和软件维护,不包括市场调研。

67.A题中字符变量C:1是字符‘A’的ASCIl码加上4,gll69所对应的字符‘E’。字符变Jibe2是字符‘A’的ASCIl码加上3,即68所对应的字符‘D’。但是打印输出时,Cl以%。的格式输出,因此是E,C2以%d的格式输出,因此是68。故本题答案为A。

68.B

69.C注:总体设计也就是概要设计

70.B根据ASCII码可知大写字符A与小写字符a的ASCIl码相差32,而D中应该是加上'a',选项A和C左侧的表达式都是大写字符C与大写字符A的差与'a'的ASCIl代码的和就是小写字符c的ASCII代码。

71.C

72.C本题主要考查的是用二维数组首地址和

下标来引用二维数组元素的方法。通过分析可知,程序中的双重循环定义了一个如下的二维数组:

012

234

456

簪由于数组的下标是从0开始的,所以二维数组元素a[i][j]表示的是二维数组a的第i+1行、第j+1列对应位置的元素。

73.C2(n-1)

=2(5-1)=16

74.B本题考查do-while语句和if…else语句。do-while语句的功能是先执行循环体再判断条件,所以,先判断if语句的条件,y=-4,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将x的值减1,x=3,条件不成立,执行下面的else语句,输出Y,然后将X的值减1,x=2,满足while循环条件,继续循环。第三次循环:先判断if语句的条件,y=2,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将X的值减1,x=l,满足while循环条件,继续循环。第四次循环:先判断if语句的条件,y=-1,!y为逻辑0,条件不成立,执行下面的else语句,输出Y,然后将x的值减1,x=0,不满足while循环条件,结束循环。所以B正确。

75.An=b>a,n=1,判断到此,逻辑或为真.后面的J=a<b不再执行。因此i=1,j=0。

76.A

\ns是一个公用体,d的值分别与ch中的两个元素的值相同,d的高位放在chFl]中、低位放在chl-0]中,因此输出的结果为21,43。

77.A

78.D本题考查结构体的相关知识,题目中需要输入一个变量,scanf要求参数为指针,而D选项中ps一>age为一个变量,不是指针,所以错误。

79.B

80.Afun2中a=funl(x);返回1,b=funl(Y);返回值为4,所以fun2函数返回5,按格式输出后为5.00,所以答案选择A)。

81.

(1)void(long}t)

(2)sl=sl·10;

【考点分析】

函数定义,指针型变量;数值n和其各个位如何表示。

【解题思路】

(1)主函数中调用函数的参数为地址,因此函数fun的形式参数应为指针类型。

(2)重新组合一个数,从个位开始,然后十位,依次类推,因此每增加—位数,原数值需乘以10,即sl=sl}10;。

82.\nfloataverage(floatarray[],intn)

\n{intI;

\nfloataver,sum=array[0];

\nfor(I=1;Isum=sum+array[I];

\naver=sum/n;

\nreturn(aver);}

\nmain

\n{floatave,score[10];

\nintI;

\nfor(I=0;I<10;I++)

\nscanf('%f',&score[I]);

\nave=average(score,10);

\nprintf('%f\\n',ave);}

\n2022年辽宁省葫芦岛市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为()。

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

2.若要说明一个类型名STP,使得定义语句STPs;等价于Char*s;,以下选项中正确的是()。

A.typedefChar*s;

B.typedefChar*STP;

C.typedefSTP*Char;

D.typedef*CharSTP;

3.

4.给出以下定义:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};则正确的叙述为()。

A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度

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

6.下列各排序法中,最坏情况下的时间复杂度最低的是()

A.希尔排序B.快速排序C.堆排序D.冒泡排序

7.设有定义“inta;floatb;”,执行“scanf(“%2d%f”,&a,&b);”语句时,若从键盘输入876543.0并按<Enter>键,则a和b的值分别是()。

A.87和6.0B.876和543.0C.87和543.0D.76和543.0

8.下列程序的输出结果是()。#include<stdio.h>main{inti;for(i=1;i<=10,i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i;}A.49B.36C.25D.64

9.已有定义:chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是()。

A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.以述说法都不对

10.下列关于线性表的叙述中,不正确的是()

A.线性表可以是空表

B.线性表是一种线性结构

C.线性表的所有结点有且仅有一个前件和后件

D.线性表是由n个元素组成的一个有限序列

11.有以下程序:#include<stdio.h>#include<stdlib.h>main{int*a,*b,*C;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b:printf("%d,%d,%d\n",*a,*b,*c);}程序运行后的输出结果是()。A.3,3,3B.2,2,3C.1,2,3D.1,1,3

12.执行下列程序后的输出结果是______。main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}

A.-1B.1C.8D.0

13.二叉树的后序排列DBEFCA,中序排列DBAECF,那么对其做先序线索化二叉树,节点E的线索化指向节点()

A.BCB.ACC.DFD.CF

14.已知A=10,B=20,下类表达式正确的是()。

A.C=(A++)*(--B)=200

B.A-=30

C.C=(A++)+(B--)=30

D.C=(++A)*(--B)=210

15.

16.有以下程序:#includemain(){intx,y,z;x=y=1;z=x++,y++,++y;printf(“%d,%d,%d\n”,x,y,z);}程序运行后的输出结果是()。A.2.3.3B.2.3.2C.2.3.1D.2.2.1

17.下面程序段的时间复杂度为()。

A.O(n)B.O(n2)C.O(1)D.O(nlog2n)

18.下面程序中算法的时间复杂度是()A.O(n)B.O(n^2)C.O(logn)D.O(n*logn)

19.下述函数功能是______。intfun(char*x){char*y=x;while(*y++);returny-x-1;}

A.求字符串的长度B.求字符串存放的位置C.比较两个字符串的大小D.将字符串x连接到字符串y后面

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

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

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

#include<string.h>

main()

{charch[]="abc",x[3][4];inti;

for(i=0;i<3;i++)strcpy(x[i],ch);

for(i=0;i<3;i++)printf("%s",&x[i][i]);

printf("\n");

}

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

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

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

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

k;N*N*5;printf("%d\n"k);

}

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

charb[]="ABCD";

main()

{

charb[30];

strcpy(&b[0],"GH");

strcpy(&b[1],"GH");

strcpy(&b[2],"GH");

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

}

25.测试用例包括输入值集和【】值集。

26.若输入tc,则程序的运行结果为【】。

#include<stdio.h>

main()

{charstr[40];

fscanf(stdin,"%s",str);

fprintf(stdout,"%s\n",str);

}

27.有以下程序

intfa(intx){returnx*x;}

intfb(intx){retumx*x*x;}

intf(int(*f1)(),int(*f2)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

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

28.下列程序的输出结果是()。

intt(intx,inty,intcp,intdp)

{cp=x%y+y*y;

dp=x+x-y*y;

}

main()

{ima=4,b=3,c=9,d=8;

t(a,b,c,D);

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

}

29.以下程序中,for循环体执行的次数是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

for(i=1;i<K;i++)

{…}

}

30.下面程序把从终端读入的10个整数以二进制的方式写到一个名为bi.dat的新文件中。请填空。

#include<stdio.h>

FILE*fp;

main()

{inti,j;

if((fp=fopen(【】,"wb"));=NULL)exit(0);

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

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

fwrite(&j,sizeof(int),1,【】);

}

fclose(fp);

}

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

main()

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

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

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

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

}

32.实体联系模型是一种常用的高级概念数据模型,而______是实体联系模型中的核心。

33.以下程序的功能是建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");

scanf("%d",&a);

while(a!=-1)

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

【】=a;q->next=p;【】=p;scanf("%d",&a);}

p->next=′\0;return(ph);}

main()

{structlist*head;head=creatlist();}

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

main()

charc;intn=100;

floatf=10;doublex;

x=f*=n/=(c=50);

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

35.下列的for语句的循环次数为______。

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

36.\13'在内存中占1个字节,"\12"在内存中占______个字节。

37.在数据库的概念结构设计中,常用的描述工具是【】。

38.下面程序的输出走【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

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

main()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%",n[i]);

}

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

三、1.选择题(20题)41.假定所有变量均已正确说明,下列程序段运行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3

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

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

43.有以下定义

#include<stdio.h>

chara[10],*b=a;

不能给a数组输入字符串的语句是

A.gets(A)B.gets(a[0]);C.gets(&a[0]);D.gets(B);

44.下面能正确进行字符串赋值操作的是()。

A.chars[5]={"ABCDE"};

B.chars[5]={'A','B','C','D','E'};

C.char*s;s="ABCDE";

D.char*s;scanf("%s",&s);

45.若要“向文本文件尾增加数据”,在fopen函数中应使用的文件方式是()

A.ab+B.aC.abD.a+

46.若有以下定义和语句:char*s1="12345",*s2="1234";printf("%d\n",strlen(strcpy(s1,s2)));则输出结果是______。

A.4B.5C.9D.10

47.有三个关系R、s和T如下:

由关系R和s通过运算得到关系T,则所使用的运算为()。

A.并B.自然连接C.笛卡尔积D.交

48.在下列关于二叉树的叙述中,正确的一项是

A.在二叉树中,任何一个结点的度都是2

B.二叉树的度为2

C.在二叉树中至少有一个结点的度是2

D.一棵二叉树的度可以小于2

49.以下程序的输出结果是()。#include<stdio.h>main(){inta,i;a=0;for(i=1;i<5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf("%d\n",a);}

A.31B.13C.10D.20

50.

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

inty=5,x=14;

y=((x=3*Y,x+1),x-1);

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

A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=27

51.以下不能定义为用户标识符的是()。

A.scanfB.VoidC.3comD.int

52.有以下程序:#include<string.h>voidf(charp[][10],intn)/*字符串从小到大排序*/{chart[10];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[5][10]={"abc","aabdog","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[0]));}程序运行后的输出结果是()。

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

53.以下合法的赋值语句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

54.一个源文件中的外部变量的作用域为()。

A.本文件的全部范围B.本程序的全部范围C.本函数的全部范围D.从定义该变量的位置开始到本文件结束

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

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

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

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

56.以下程序的输出结果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}

A.19B.17C.15D.12

57.下列不属于软件工程的3个要素的是______。

A.工具B.过程C.方法D.环境

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

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

59.出下列程序执行后的输出结果是______。mare(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,k=2;for(i]0;i<3;i++){printf(("%d",m[k][i]);}}

A.456B.258C.369D.789

60.有以下程序:#include<stdio.h>main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf("%d,%d\n",k,m);}程序运行后的输出结果是()。

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

四、选择题(20题)61.以下不合法的数值常量是()。

A.8.0E0.5B.lelC.0llD.0xabcd

62.若变量已正确说明为int类型,要通过语句scanf("%d%d%d",&a,&b,&c);给a赋值3,b赋值5,c赋值8,不正确的输入形式是

63.

有以下程序:

main

{inta=0,b=l0,c=0,d=0;

if(a=1)b=1;c=2;

elsed=3;

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

}

程序输出()。

A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错

64.

65.

66.软件生命周期中的活动不包括()。

A.市场调研B.需求分析C.软件测试D.软件维护

67.有以下程序已知字母A的ASCIl码为65,程序运行后的输出结果是()。

A.E。68B.D,69C.E,DD.输出无定值

68.

69.(47)在结构化方法中,软件功能分解属于下列软件开发中的阶段是()

A.详细设计

B.需求分析

C.总体设计

D.编程调试

70.已知大写字母A的ASCII码是65,小写字母a的ACSII码是97。下列能将变量C中的大写字母转换为对应小写字母的语句是()。

A.c=(c-'A')%26+'A'B.c=c+32C.c=c-'A'+'A'D.c=('A'+C)%26-'a'

71.

72.下面的程序段运行后,输出结果是()。

A.9B.不确定值C.0D.18

73.在深度为5的满二叉树中,叶子结点的个数为A.32B.31C.16D.15

74.有以下程序:

#include<stdio.h>

main

{intx=4,y;

do

{y=x;

if(!y)printf("x");

else

printf("y"):

x--;

}while(x);

}

程序的输出结果是()。A.A.xyyxB.yyyyC.yyxxD.yxyx

75.有以下程序:

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

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

76.

有以下程序:

main

{union

{charch[2];

intd;

}s;

d=0x4321;

printf("%x,%x\n",S.ch[0],S.ch[l]);

}

在16位编译系统上,程序执行后的输出结果是()

A.21,43B.43,21C.43,00D.21,00

77.

78.有以下结构体说明、变量定义和赋值语句:

则以下scanf函数调用语句有错误的是()。

A.scanf(”%s”,s[0].name);

B.scanf(”%d”,&s[0].age);

C.scanf(”%c”,&(ps一>sex));

D.scanf(”%d”,ps一>age):

79.不能把字符串:Hello!赋给数组b的语句是()。

A.charb[10]={’H’,’e’,’l’,’l’,’o’,’!’};

B.charb[10];b="Hello!";

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

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

A.5.OOB.5C.5.2lD.0.0

五、程序改错题(1题)81.下列给定程序中,函数fun的功能是:从低位开始依次取出长整型变量s中奇数位上的数,构成一个新数存放在t中。高位仍在高位,低位仍在低位。

例如,当s中的数为7654321时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!

#include<;stdi0.h>;

六、程序设计题(1题)82.有一个一维数组,内放10个学生成绩,写一个函数,求出平均分。

参考答案

1.C

2.B用关键字typedef声明一种新的类型的形式为typedef类型名标识符。本题中的类型为char*。

3.B

4.C解析:在C语言中,字符串以'\\0'作为结束符,因此数组x的长度为7+1=8,而数组y的长度等于7。

5.C

6.C

7.Ascanf函数中,在格式字符前加入一个整数可以指定输入数据所占的宽度,所以赋值时会将87赋给变量a,把6.0赋给float型变量b。故本题答案为A选项。

8.C本题考查for循环及if语句。当执行到第一个满足(i*i>一20)&&(i*i<=100)这个条件的i出现时,break跳出循环,执行下列的printf语句。

9.C解析:对字符型一维数组在定义时初始化,既可以使用初始化列表,也可以使用字符串常量。不过由于字符串常量会自动在结尾添加\'\\0\',字符做结束标志,所以用字符串常量的初始化列表项个数是字符串的长度加1。因此题目中的chara[]='xyz';等价于chara[]={\'x\',\'y\',\'z\',\'\\0\');,所以a数组长度大于b数组长度,应该选C。

10.CC)【解析】线性表是一种线性结构,由n(n≥O)个元素组成,所以线性表可以是空表。但是性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项C)是错误的。

11.A本题中,首先创建一个动态内存,然后将地址分别存入指针a、b、c中,即a、b、c都指向相同.的变量。分别给a、b、c所指的变量赋值,最终a、b、c所指的变量中的值为3,最后打印a、b、c所指的变量

12.D

13.D

14.C

15.A

16.C整型变量x、y的初值都为1,“x++,y++,++y”是一个逗号表达式,程序执行“z=x++,y++,++y”之后,x的值为2,y的值为3,z取逗号表达式中的第二个表达式的值,为1。因此本题的答案为选项C。

17.A

18.C

19.A解析:在函数体内定义一字符型指针并指向形参,然后遍历其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的长度。

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

21.abcbcc

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

23.5555解析:宏替换不是函数调用,所以不能因为M被定义为5,而N被定义为M+M而武断地认为N的值就是5+5=10。宏替换就是简单的字符串替换,以本题为例:因为N被定义为M+M,所以k=N*N*5;语句展开后为k=M+M*M+M*5;。又因为M被定义为5,所以再展开后为k=5+5*5+5*5;。现在不难计算出,这个表达式的结果为k=55。故最终输出结果是55。

24.GGGHGGGH解析:由于在函数main中定义了数组变量b,其将屏蔽全局变量b。对于一维数纽变量,其值为一常数,等于数组首元素地址。strcpy(&b[0],'GH'),是将字符串'GH'复制到数组b中从首元数开始的空间中,此是b中的字符串为”叫”:strcpy(&b[1],'GH'),是将字符串'GH'复制到数组b中从第二个元素开始的空间中,此是b中的字符串为“GH”。执行第三次strcpy函数后,b中的字符串为'GGGH'。

25.输出输出解析:测试用例曲测试输入数据(输入值集)和与之对应的预期输出结果(输出值集)两部分组成。

26.tc

27.44解析:在主函数中调用函数f,函数f有三个参数,形参f1与f2分别是两个指向函数的指针。在f中执行f2(x)-f1(x),实际上是执行了fb(2)-fa(2),故执行i=(fa,fb,2)后i的值为23-22=4。

28.9898解析:本题的考查点是函数的调用。本题中a,b,c,d是实参,x,y,cp,dp是形参。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。因此,程序的输出结果是98。

29.44解析:将程序中所有的宏替换掉可得:M=2+1,K=2+1*2+1/2=4,所以for循环共循环了K-1+1次,即4-1+1共4次。

30."bi.dat"fp

31.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。

32.实体联系图或E-R图实体联系图或E-R图解析:实体联系图(B-R图)是实体联系模型中的核心。由于E-R图描述的是数据流图中数据存储及其之间的关系,因此它是数据库观念设计的最常用的工具。

33.p->dataqp->data,q解析:本题考查的是链表这

温馨提示

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

评论

0/150

提交评论