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

下载本文档

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

文档简介

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

一、单选题(20题)1.下面程序段的输出结果是______。char*s="abcde";s+=2;printf("%d",s);

A.cdeB.字符'c'C.字符'c'的地址D.无确定的输出结果

2.已知一算术表达式的中缀形式为A+B*C–D/E,后缀形式为ABC*+DE/–,其前缀形式为()。

A.–A+B*C/DEB.–A+B*CD/EC.–+*ABC/DED.–+A*BC/DE

3.若有以下定义和语句charc1='b',c2='e'printf("%d,%c\n",c2-c1,c2-'a'+A);则输出结果()

A.2,MB.3,EC.2,ED.输出项与对应的格式控制不一致,输出结果不确定

4.

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

6.有下列程序:

main()

{inty=20;

do{y--;}while(--y);

phntf("%d\n",y--);

}

当执行程序时,输出的结果是()。

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

7.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

8.下面程序运行后的输出结果是______。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=s[0].a+s[1].b;printf("%d\n",t);}

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

9.一个递归算法必须包括()。

A.递归部分B.终止条件和递归部分C.迭代部分D.终止条件和迭代部分

10.设有条件表达式:(EXP)?i++:j--,则以下表达式中与(E)(P)完全等价的是A.(EXP==0)B.(EXP!=0)C.(EXP=-1)D.(EXP!=1)

11.

12.有下列程序:main{intk=5,n=0;while(k>0){switch(k){dcfault:break;case1:n=n+k;case2:case3:n+=k;}k--;}printf("%d\n".n);}程序运行后的输出结果足()。A.0B.4C.6D.7

13.

14.已知二叉树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历序列是()

A.ABCDEB.ECABDC.EACDBD.CDEAB

15.若一组记录的排序码为(7,9,3,5,1,2,10),则利用堆排序的方法建立的初始堆为()

A.10,7,9,3,5,1,2

B.10,9,7,5,1,2,3

C.10,9,7,5,3,2,1

D.10,9,7,3,2,1,5

16.有以下程序:#include<stdio.h>main(){charb[]=“happynewyear”,k;for(k=0;b[k];k++) printf(“%c”,b[k]-‘a’+‘A’);}程序运行后的输出结果是()。

A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEARD.HaPPYNEWYEaR

17.以下不能作为合法常量的是()。

A.'cd'B.1.234e04C.”\a”D.'\011'

18.甲乙两个聪明人上街,捡到一张10块钱的购物卡,两人就想出一个办法来分配这张卡。两个分别将自己出的价格写在纸上,然后看谁出的价高就给谁,并且那个出价高的人要把出的钱给对方。现在甲有6块钱,乙有8块钱,甲乙双方都知道对方当前有多少钱并且都希望自己收益高于对方。问最后谁获得的钱多()

A.甲多B.乙多C.一样多D.有可能出现有人赔钱的情况

19.下列关于信息系统的叙述中,错误的是()。

A.广播电视是一种双向的、点到多点的信息交互系自

B.网络聊天是一种双向的,以信息交互为主要目的系统

C.电话是一种双向的、点对点的、以信息交互为主要的的系统

D.雷达是一种以感测和识别为主要目的的系统

20.在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是()。

A.访问第i个结点(1<=i<=n)和求第i个结点的直接前驱(2<=i<=n)

B.在第i个结点之后插入一个新结点(1<=i<=n)

C.删除第i个结点(1<=i<=n)

D.将n个结点从小到大排序

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

#defineMAX(a,b)(a>b?a:b)+1

main()

{inti=6,j=8,k;

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

}

22.以下程序的输出结果是______。

#defineMCRA(m)2*m

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

main()

{inti-2,j=3;

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

}

23.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。

24.设有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

执行上面的程序段后,*(ptr+5)的值为______。

25.表达式pow(2.8,sqrt(float(x)))值的数据类型为______型。

26.有以下程序段,且变量已正确定义和赋值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

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

请填空,使下面程序段的功能与之完全相同

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

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

27.与二维表中的“行”的概念最接近的概念是()。

28.C语言用于结构化程序设计的3种基本结构是______、选择结构和循环结构。

29.E-mail地址由用户名和域名两部分组成,这两部分的分隔符为【】。

30.当调用函数时,实参是一个数组名,则向函数传递的是【】。

31.下面程序的功能是:输出100以内能被4整除且个位数为8的所有整数,请填空。main(){inti,j;for(i=0=();i++){j=i*10+8;if(j%4!=0)continue;printf("%d",j);}}

32.下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大值的和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。请填空。

#include<stdlib.h>

#include<stdio.h>

voidfun(inta[],intn,int*max,int*d)

{inti;

*max=a[0];

*d=0;

for(i=0;【】;i++)

if(*max<【】)

{*max=a[i];*d=i;}}

main()

{inti,x[20],max,index,n=10;

randomize();

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

{x[i]=rand()%50;printf("%4d",x[i]);}

printf("\n");

fun(x,n,&max,&index);

printf("Max=%5d,Index=%4d\n",max,index);}

33.下列程序中字符串中各单词之间有一个空格,则程序的输出结果是【】。

#include<string.h>

main()

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

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

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

}

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

intf(inta[],intn)

{

if(n>=1)

returnf(a,n-1)+a[n-1];

else

return0;

}

main()

{

intaa[5]={1,2,3,4,5},s;

s=f(aa,5);

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

}

35.队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。允许插入的一端称作______。

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

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

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

{…}

}

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

intn='c':

switch(n++)

{default:printf("error");break;

case'a':printf("good");break;

case'c':printf("moming");

case'd':printf("class");

}

38.若s是int型变量,且s=8,则s%3+(s+1)%3表达式的值为()。

39.数据的物理结构在计算机存储空间中的存放形式称为数据的【】。

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

#include<stdio.h>

intfun(intx,inty)

{staticintm0,i=2;

i+=m+1;

m=i+x+y;

returnm;

}

main()

{intj=4,m=1,k;

k=fun(j,m);printf("%d,",k);

k=fun(j,m);printf("%d\n",k);

}

三、1.选择题(20题)41.下列程序中c的二进制值是()。chara=2,b=4,c;c=ab>>2:

A.11B.10100C.11100D.11000

42.下列说法不正确的是()。

A.C程序是以函数为基本单位的,整个程序由函数组成

B.C语言程序的一条语句可以写在不同的行上

C.C程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写

D.C程序的每个语句都以分号结束

43.有以下程序:main(){inti=0,s=0;do{if(i%2){i++;continue;}i++;s+=i;}while(i<7);.printf("%d\n",s);}执行后输出的结果是()。

A.16B.12C.28D.21

44.若以下定义:structlink{intdata;strucklink*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;

45.在下列关于逻辑表达式a&&b的叙述中,错误的一条是()

A.若a为真、b为真,则a&&b为真

B.若a为真、b为假,则a&&b为假

C.若a为假、b为真,则a&&b为真

D.若a为假、b为真,则a&&b为假

46.假定w、x、y、m均为int型变量,则执行下列的语句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;

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

47.下列语句中,错误的是(x,y,a,b假设已经定义好)

A.while(x=y)5;

B.dox++while(x==10);

C.while(0);

D.d02;while(a==b);

48.设有定义:intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()A.p=1;B.*q=2;C.q=p;D.*p=5;

49.下面程序的输出结果是()。include<stcdio.h>f(intb[],intn){inti,r;r=1;for(i=0;i<=n;i++)r=r*b[i];returnr;}main(){intx,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}

A.720B.120C.24D.6

50.没有如下定义:Structsk{inta;floatb;}data;int*p;若要使P指向data中的a域,正确的赋值语句是

A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;

51.设计数据库的存储结构属于()。

A.需求分析B.概念设计C.逻辑设计D.物理设计

52.有以下程序:fun(intx){intp;if(x==0‖x=1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7);}执行后的输出结果是()。

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

53.若有定义int(*pt)[3];,则下列说法不正确的是()。

A.int(*pt)[3]是一个数组指针

B.指针pt指向一个有3个整型变量的数组

C.定义了一个名为*pt、具有三个元素的整型数组

D.定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组

54.设有以下语句

typedefstructS

{intg;charh;}T;

则下面叙述中正确的是()A.可用S定义结构体变量B.可以用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量

55.已知i、j、k为血型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是()。

A.scanf(“%3d,%3d,%3d”,&i,&j,&k);

B.scanf(“%d,%d,%d”,&i,&J,&k);

C.scanf(“%d%d%d”,&i,&j,&k);

D.scanf(“i=%d,%d,k=%d”,&i,&j,&k);

56.下面程序的运行结果是()。for(i=3;i<7;i++)printf((i%2)?("**%d\a"):("##%d\n"),i);

A.**3##4**5**6

B.##3**4##5**6

C.##3**4##5##6

D.**3##4**5##6

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

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

58.下面程序运行后的输出结果是_____。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=s[0].a+s[1].b;printf("%d\n",t);}

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

59.希尔排序法属于______类型的排序法。

A.交换类排序法B.插入类排序法C.选择类排序法D.建堆排序法

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

A.计算机不能直接执行用C语言编写的源程序

B.C程序经C编译后,生成后缀为.obj的文件是一个二进制文件

C.后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件

D.后缀为.obj和.exe的二进制文件都可以直接运行

四、选择题(20题)61.假定X和Y为double型,则表达式x=2,y=x+3/2的值是()。

A.3.500000B.3C.2.000000D.3.000000

62.下列定义变量的语句中错误的是()。

A.intjnt;B.doubleint_;C.charFor;D.floatUS$;

63.

64.下面不属于需求分析阶段任务的是()。

A.确定软件系统的功能需求B.确定软件系统的性能需求C.需求规格说明书评审D.制定软件集成测试计划

65.

66.设有如下定义语句:intm[]={2,4,6,8,10},*k=m;以下选项中,表达式的值为6的是()。

A.*(k+2)B.k+2C.*k+2D.*k+=2

67.

68.

69.

70.

71.有以下程序

#include"stdio.h"

#defineM(x,y)(x)*(y)

#defineN(x,y)(x)/(y)

main()

{inta=5,b=6,c=8,k;

k=N(M(a,b),c);

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

}

程序的运行结果是

A.3B.5

C.6D.8

72.

73.

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

#include<string.h>

voidmain()

{

charstrl[10]={’s’,’t’,’u’,’d’,’e’,’n’,’t’};

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

}

A.7B.8C.10D.存在语法错误

75.在最坏情况下,堆排序的时间复杂度是()。

A.0(1902n)B.O(n1092n)C.o(n2)D.0(n1.5)

76.有以下程序#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是

A.12B.15C.16D.20

77.

78.有以下程序:

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

A.7

B.3

C.20)O

79.

80.若变量已正确定义并赋值,以下符合C语言语法的表达式是()。

A.a:=b+1B.a=b=c+2C.int18.5%3D.a:a+7:c+b

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:在字符串str中找出ASCⅡ码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。例如,调用proc()函数之前给字符串输入DcybkdGT,调用后字符串中的内容为yDcbkdOT。

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

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

试题程序:

六、程序设计题(1题)82.假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。例如,若字符串中的内容为****a*bc*def*g。***,删除后,字符串中的内容则应当是****a*bc*def*g。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C解析:语句s+=2;使指针指向字符'c',此时s中保存的便是字符'c'的地址。

2.D

3.B

4.B

5.C

6.D解析:本题考查do…while循环。当--寸是0(即y是0)时结束循环,输出y--是先输出y的值再将y的值减1。

7.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。

8.B解析:在main函数中定义了一个structabc类型的数组,同时分别利用{1,2,3}及{4,5,6}对数组中两个元素进行初始化。在该结构体,依次对其中的a,b,c三个变量进行初始化。故s[0].a=1,s[1].b=5,所以本题输出为6。

9.B

10.B解析:在C语言中,逻辑表达式的结果只有两种情况“tree”和“false”。如果要把一个逻辑值看成一个整数的话,true等于1;false等于0。如果要把一个整数看成一个逻辑值的话,非0等于true:0等于false。由此可见,如果EXP表达式的结果为0的话;(EXP)为假:(EXP==0)为真;(EXP!=O)为假;(EXP==1)为假;(EXP!=1)为真。如果EXP表达式的结果为非0的话:(EXP)为真:(EXP=0)为假;(EXP!=0)为真;(EXP=1)结果不定;(EXP!=1)结果不定。综上所述,只有(EXP!=0)完全等价于表达式(EXP)。故应该选择B。

11.A

12.D本题主要考查while循环语句和switchcase语句的使用方法。其执行步骤为:k=5时,跳出switch语句,然后k自减1;当k=4时,跳出switch语句,然后k自减1;当k=3时,n=13+k=0+3=3,跳出switch语句,然后k自减1;当k=2时n=n+k=3+2=5,跳出switch语句,然后k自减l;当k=1时,case1:n=n+k一5+1=6,没有break继续执行CaSe3;n=n+k=6+1=7,跳出switch语句,然后k自减1;当k=0时,退出循环,所以输出结果为7。

13.D

14.C由于后序遍历的最后一个儿素为E,所以E为根结点,所以它的前序遍历的首个元素为E,敞排除A)和D)选项。由于中序遍历中,元素B在元素根结点E自:J后面,所以B为二叉树的右子树,并且该二叉树右子树只有一个儿素,所以前序遍历的最后一个元素应为B,故选项C)为正确选项,即该二叉埘的前序遍历序列是EACDB。

15.B

16.C程序定义一个字符数组b,并使用字符串“happynewyeai”进行初始化。然后通过for循环,遍历字符数组b中的每个字符,再将b中的字符元素修改为大写字母。程序输出:HAPPYNEWYEAR。故本题答案为C选项。

17.A字符常量是使用单引号标注的单个字符,选项A错误;选项B属于浮点数常量,正确;选项C属于转义字符常量,正确;选项D属于转义字符,代表八进制数011的ASCII值的字符,正确。本题答案为A选项。

18.C

19.A广播/电视是一种单向的、点对多点(面)的以信息传递为主要目的的系统。

20.A

21.99解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的加1)。

22.1616解析:首先将程序中宏替换掉,先把“MCRA(i)”替换成“2*i”,然后把“MCRA(j,2*i)”替换成“2*2*j+2*i”,经计算该表达式的值为16,所以最后输出为16。

23.n/2性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)(n-i+1)=n/2。

24.'\0''\\0'解析:本题涉及字符数组和指针的两个知识点:①在C语言中,字符型数组在存放字符串时会自动在末尾加上字符串结束标识符'\\0'所以题中数组str有6个元素。②ptr指向数组str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。

25.floatfloat解析:在此表达式中x是float类型的变量,经过开方所得到的结果仍是float类型,再和2.8进行运算时,应该先将2.8转换成float类型再运算,最后结果仍是float型。

26.k<=nk++k<=n\r\nk++解析:本题要求将一个for循环改成while循环。首先要保证循环条件相同,在for循环中,每次执行循环之后,循环控制变量k都会加1,而while循环则没有,故需在循环体中增加改变k数值的语句“k++;”。

27.元组元组解析:在关系模型中,数据结构用单一的二维表结构来表示实体及实体间的联系。一个关系对应一个二维表。二维表中的列称为属性,属性值的取值范围称为值域。二维表中的一行称为一个元组。

28.顺序结构顺序结构解析:结构化程序有3种摹本结构,即顺序结构、选择结构(包括if语句和switch语句)和循环结构(包括for语句、while语句、do…while语句)。

29.@

30.数组的首地址数组的首地址解析:在函数中,可以通过指针变量来引用调用函数中对应的数组元素,此操作是通过传递数组的首地址来实现的。

31.i<10i<10解析:分析程序:当(i=0,1,2,…)时,“j=i*10+8”语句的运行结果是(8,18,28,…)个位数字为8的所有整数;题中要求是100以内的整数,所以i<10;“if(j%4!=0)continue;”语句的功能是当条件不能被4整除时,继续循环不执行操作,直到能被4整除时输出该数,所以输出的数满足条件100以内能被4整除且个位数为8。

32.i<na[i]i<n\r\na[i]解析:该程序直接使用形参max和d,由于它们都是指针变量,所以要引用它所指向的变量时要对它进行指针运算,也即*号运算。

33.HowdoesheHowdoeshe解析:本题的关键在于表达式str1+strlen(str1)/2,注意“/”的用法,可得str1+13/2=str1+6。

34.1515解析:在函数f()中只有一条if语句,如果n不小于1,则返回f(a,n-1)+a[n-1];否则返回0。所以f(aa,5)返回f(aa,4)+aa[4],而f(aa,4)返回f(aa,3)+aa[3],……直到f(aa,0)返回0。故f(aa,5)实际返回值是0+aa[1]+aa[2]+aa[3]+aa[4]+aa[5],所以本题最终输出15。

35.队尾队尾解析:在队列中,允许插入的一端叫做“队尾”,允许删除的一端叫做“队头”。

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

37.morningclassmorningclass解析:本题考查了两个知识点:①“++、--”运算后缀形式是先使用变量原来的值,使用完后再使其增1或减1;②在switch语句中,当n=\'c\'时,执行“case\'c\':”,输出morning;因为此句中没有break语句,因此接着执行'case\'d\':”,输出class,最终输出结果为morningclass。

38.22解析:考查基本表达式的计算,“%”运算符的功能是取余。题中条件s=8,则s%3=2,(s+1)%3=9%3=0,所以表达式s%3+(s+1)%3=2+0=2。

39.内模式或物理模式或存储模式内模式或物理模式或存储模式解析:一个数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据库内部的表示方法。例如,记录的存储方式是顺序存储、索引按照什么方式组织;数据是否压缩存储,是否加密等。

40.817

41.A解析:本题主要考查按位异或和右移运算。b=4的二进制为00000100,b>>2后为00000001,a=2的二进制为00000010,两者异或为00000011。

42.C解析:本题涉及C语言基本的3个知识点:①C语言的源程序是由函数构成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主函数;②C语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以写在不同的行上,或者一行也可以写多条语句;③注释行虽然对程序的运行不起作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释行还是很有必要的。

43.A

44.D解析:在本题,扣指针p指向变量a,q指向变量c。要把c插入到变量a和变量b之间,就应该首先让变量a的指针域指向变量c,即(*p).next=q,然后让变量c的指针域指向变量b,即(*q).next=&b。所以,4个选项中D为所选。

45.C

46.A解析:条件表达式“a?b:c”的含义是:当a为真时,其值等于表达式b的值,当a为假时,其值等于表达式c的值。第一个表达式:w=6<x=4为假,所以返回x的值,即m=x=4;第二个表达式:m=4<y=3为假,所以返回y的值,即m=y=3。

47.B解析:do和while之间只能是一条可以执行的语句。分号是语句的一部分。d…while执行多条语句时,应用“{}”括起来,组成复合语句。

48.D解析:本题考核的知识点是指针变量定义和赋值语句的基本应用。在使用一个指针变量之前,先要用声明语句对其进行定义,在定义了一个指针变量之后,系统就为这个指针变量分配了一个存储单元,用它来存放地址。在C语言中有两个有关指针的运算符:&运算符,为取地址运算符,*运算符是指针运算符,*p代表p所指向的变量。本题中首先定义了整型变量n,其初值为0,接着定义一个指针变量p并让它指向n,然后定义了一个指向指针的指针变量q并让它指向p,选项A中将常量1赋给指针p不正确;选项B也是将常量2赋给*p,故选项B不正确;选项C中P不是指向指针的指针变量,而将他赋值给一个指向指针的指针变量小显然不正确,所以,4个选项中选项D符合题意。

49.B解析:主函数将数组a的数组名作为实参传递给函数f()。函数f()的功能是求数组a的前n+1个元素的积,函数返回值r=2*3*4*5=120。

50.C解析:data是一结构体变量,a是它的成员,因此引用a域的正确方法是:data.a,取它的地址赋值给指针变量p的语句应该是:p=&data.a。选项A,将a的地址直接赋给了p,而忽略了a为结构体内部的一个成员,而不是一单独的变量,故选项A不正确;选项B在p=data.a表达式中右边为一个结构体变量的成员不是地址,而左边为一指针应该将一地址赋给它,改选项B不正确:选项D表达式*p=data.a是将结构体变量中的成员a的值赋给指针p所指向的变量值,而不是使指针p指向data中的a域,故选项D不正确;4个选项中只有C正确。

51.DD。【解析】物理设计阶段主要解决选择文件存储结构和确定文件存取方法的问题。物理设计阶段包括:选择存储结构、确定存取方法、选择存取路径、确定数据的存放位置。

52.C解析:本题的fun()函数在x等于0或1时返回3,而在其余情况下返回x-fun(x-2),所以本题的递归算法可以这样来表示:在主函数中输出的结果是fun(7),而fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-(5-0)=7-5=2。故本题应该选择C。

53.D解析:首先,pt跟*结合,所以是一个指针,所指向的对象是含有3个元素的数组。所定义的指针没加const,所以是个指针变量,还可以指向类似对象的其他元素,也就是说还可以指向其他含有3个元素的数组。

54.B解析:结构体类型的定义格式为:

strcut结构体名

{成员说明列表};

结构体变量的定义有3种形式:第一种:定义结构体型的同时定义结构体变量如:strcut结构体名{成员说明列表}变量;第二种先定义一个结构体类型,然后使用该类型来定义结构体变量,如:strcutstudent{成员说明列表):student变量;第三种:定义一个无名称的结构体类型的同时定义结构体变量,如:Strctstudent{成员说明列表}变量。和上面三种情况比较我们不难得知只有选项B是正确的。所以,4个选项中选项B符合题意。

55.B解析:函数scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。

若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。

56.D解析:本题考查printf函数的输出格式和条件表达式“?:”的使用。①printf函数输出时“**%d\\n”和“##%d\\n”中的“##”和“**”都是直接输出。②条件表达式的基本格式为:“a?b:c”。它的运算规则为:当a为非0时,整个表达式的值取b的值,当a为0时,整个表达式取c的值。

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

58.B解析:在main函数中定义了一个structabc类型的数组,同时分别利用{1,2,3}及{4,5,6}对数组中两个元素进行初始化。在该结构体,依次对其中的a,b,c三个变量进行初始化。故s[0].a=1,s[1].b=5,所以本题输出为6。

59.B解析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。所以希尔排序法属于插入类排序,但它对简单插入排序做了

温馨提示

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

评论

0/150

提交评论