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

下载本文档

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

文档简介

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

一、单选题(20题)1.下列函数的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}

A.将a所指字符串赋给b所指空间

B.使指针b指向a所指字符串

C.将a所指字符串和b所指字符串进行比较

D.检查a和b所指字符串中是否有‘\0’

2.

3.请选出可用作C语言用户标识符的一组()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

4.有以下程序

#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

5.设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树的结点个数为n,森林F中第一棵树的结点的个数是()。

A.m-nB.m-n-1C.n+1D.不能确定

6.有下列程序:main{inti,s=0,t[]={1,2,3,4,5,6,7,8,9);for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序执行后的输出结果是()。A.45B.20C.25D.36

7.下面描述中,不属于软件危机表现的是()A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高

8.下面程序的输出结果是()。chars()="ABCD",*p;main(){for(p=s;p<s+4;p++)printf("%s\n",p);)

A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA

9.考虑一个特殊的hash函数h,能将任一字符串hash成一个整数k,其概率P(k)=2^(-k),k=1,2,…,∞。对一个未知大小的字符串集合S中的每一个元素取hash值所组成的集合为h(S)。若h(S)中最大的元素Maxh(S)=10,那么S的大小的期望是()

A.1024B.512C.5D.10

10.

11.

12.

13.设有以下说明语句

structex

{intx;floaty;charz;}example;

则下面的叙述中不正确的是

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

B.example是结构体类型名

C.x,y,z都是结构体成员名

D.structex是结构体类型名

14.若希望下列的程序运行后输出25,程序空白处的正确选项是()。

main()

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

primf("%d,j-40);

}

A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i=2;i<4;++i

15.假设某算法的计算时间可用递推关系式T(n)=2T(n/2)+n,T(1)=1表示,则该算法的时间复杂度为()

A.O(logn)B.O(n*logn)C.O(n)D.O(n^2)

16.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是()。

A.学生成绩管理系统B.C语言编译程序C.UNIX操作系统D.数据库管理系统

17.以下不能输出字符A的语句是(注:字符A的ASCIl码值为65,字符a的ASCIl码值为97)()。

A.print[("%c\n",a-32);

B.print[("%d\n",A);

C.printf("%c\n",65);

D.printf("%c\n",B-1);

18.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则

A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次

19.下列语句中,显示没有下画线的超链接的语句是()。

A.a{text—decoration:none}

B.a{text—decoration:nounderline}

C.a{underline:none}

D.a{decoration:nounderline}

20.当调用函数时,实参是一个数组名,则向函数传送的是______。

A.数组的长度B.数组的首地址C.数组每一个元素的地址D.数组每个元素中的值

二、2.填空题(20题)21.阅读下面语句,则执行后的输出结果为【】。

#include"stdio.h"

main()

{chara,b;

for(a='0',b='9';a<b;a++,b--)

printf("%c%c",a,b);

printf("\n");}

22.如下图所示的二叉树后序遍历序列是【】。

23.设有说明;

structDATE{intyear;intmonth;intday;};

请写出一条定义语句,该语句定义d为上述结构体类型变量,并同时为其成员year、month、day依次赋初值2006、10、1:【】。

24.以下isprime函数的功能是判断形参a是否为素数,如果是素数,函数返回1,否则返回0。

intisprime(inta)

inti;

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

if(a%i==0)【】;

【】;

}

25.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。

______(double,double);

main()

{doublex,y;

scanf("%lf%lf",&x.&y);

printf("%lf\n…,max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a=B);}

26.在面向对象的程序设计中,类描述的是具有相似性质的一组【】。

27.在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。

28.诊断和改正程序中错误的工作通常称为【】。

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

30.数据结构分为逻辑结构与存储结构,线性链表属于【】。

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

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

32.耦合和内聚是评价模块独立性的两个主要标准,其中______反映了模块内各成分之间的联系。

33.以下程序是从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。请填空。

main()

{

inti,a[20],sum,count;

sum=count=【】;

for(i=0;i<20;i++)scanf("%d",【】);

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

{

if(a[i]>0)

{count++:

sum+=【】;

}

}

printf("sum=%d,count=%d\n",sum.count);

}

34.若输入3、4、5,程序的输出结果为【】。

#include"math.h"

main()

{floata,b,c,s,area;

scanf("%f,%f,%f",&a,&b,&c);

s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f",a,b,c,s);

printf("area=%7.2f\n",area);

}

35.在宏定义#defineP13.14159中,用宏名PI代替一个______。

36.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

37.软件危机出现于60年代末,为了解决软件危机,人们提出了【】的原理来设计软件,这就是软件工程诞生的基础。

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

unsignedfun6(unsignednum)

{unsignedk=1;

do{k*=hum%10;

num/=10;}while(num);

return(k);}

main()

{unsignedn=26;

printf("%d\n",fun6(n));}

39.以下程序的运行结果是#defineMAX(A,B)(A)>(B)?(A):(B)#definePRINT(Y)printf(:Y=%d\t",Y)main(){inta=1,b=2,c=3,d=4,t;t:MAX(a+b,c+d);PRINT(t);}

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

三、1.选择题(20题)41.有以下程序:#include<stdio.h>main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序运行后的输出结果是()。

A.12353514B.12353513C.12343514D.12343513

42.设有以下语句:typedefstreetS{intg;charh;}T;则下面叙述中正确的是()。

A.可用S定义结构体变量B.可以用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量

43.若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。

A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");

B.switch((iht)x);{case1:printf("*\n");case2:printf("**\n");}

C.switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}

D.switch(a+b){case1:pfintf("*\n");casec:pfintf("**\n");}

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

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

45.请读程序段:charstr[]="ABCD",*p=str;printf("%d\n",*(p+4));程序段的输出结果是______。

A.68B.0C.字符'D'的地址D.不确定的值

46.程序中若有如下说明和定义语句

Charfun(char*);

main()

{

char*s="one",a[5]={0}.(*f1)()=fun,ch;

}

以下选项中对函数fun的正确调用语句是

A.(*f1)(A);B.*fl(*s);C.fun(&A);D.ch=*fl(s);

47.表达式3.6-5/2+1.2+5%2的值是A.4.3B.4.8C.3.3D.3.8

48.若执行下列程序时从键盘上输入2,则输出结果是()。#include<stdio.h>main(){inta;scanf("%d",&a);if(a++<3)printf("%d\n",a);elseprintf("%d\n",va--);}

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

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

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

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

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

D.线性表可以是空表

50.假定当前盘符下有两个如下文本文件:

文件名a1.txta2.txt

内容123#321#

则下面程序段执行后的结果为

#include"stdio.h"

voidfc(FILE*p)

{charc;

while((c=fgetc(p))!=′#′)putchar(c);}

main()

{FILE*fp;

fp=fopen("a1.txt","r");

fc(fp);

fclose(fp);

fp=fopen("a2.txt","r");

fc(fp);

fclose(fp);

putchar('\n');}

A.123321B.123C.321D.以上答案都不正确

51.C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是()。

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

52.c语言规定,在一个源程序中,main函数的位置()。

A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后

53.下面程序段中,输出*的个数是char*s="\ta\018bc";for(;*s!='\0';s++)printf("*");

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

54.在下列叙述中,错误的一条是______。

A.对关系的描述称为关系模式,一个关系模式对应一个关系的结构

B.不同元组对同一个属性的取值范围称为域

C.二维表中的行称为属性

D.所谓关键字,即属性或属性组合,其值能够惟一标识一个元组

55.下列程序执行后输出的结果是______。intd=l;fun(intp){intd=5;d+=p++;printf("%d,",d);}main(){inta=3;fun(a);d+=a++;printf("%d\n",d);}

A.8,12B.9,13C.8,4D.9,5

56.若执行下述程序时,若从键盘输入6和8时,结果为main(){inta,b,s;scanf("%d%d",&a,&b);s=aif(a<b)s=b;s*=s;printf("%d",s);}

A.36B.64C.48D.以上都不对

57.结构化程序设计主要强调的是______。

A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性

58.有以下程序#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

59.下列程序的输出结果是()。#include<stdio.h>voidmain(){inta=0,b=1,C=2;if(++a>0||++b>0)++c;printf("%d,%d,%d",a,b,C);}

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

60.若有代数式

(其中P仅代表自然对数的底数,不是变量),则下列能够正确表示该代数式的C语言表达式是()。

A.sqrt(abs(n^x+e^x))

B.sqrt(fabs(pow(n,x)+pow(x,e)))

C.sqrt(fabs(pow(n,x)+exp(x)))

D.sqrt(fabs(pow(x,n)+exp(x)))

四、选择题(20题)61.

62.

63.设有定义:doublex=5.16894;,则语句prinff(”%If\n”,(int)(x$1000+0.5)/1000.);的输出结果是()。

A.5.16900B.5.16800C.0.00000D.输出格式说明符与输出项不匹配,产生错误信息

64.下列关于队列的叙述中正确的是______。A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表

65.有以下程序:

#include<stdio.h>

voidfunc(intn)

{staticintnum=1);

num=num+n;printf("%d",num);

}

main()

{funo(3);func(4);printf("n");}

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

A.48B.34C.35D.45

66.

67.

68.

69.有以下程序:

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

A.357B.753C.369D.751

70.以下程序执行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不确定D.0

71.有以下程序:

执行后输出结果是()。

A.58B.56C.45D.24

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

#include<stdio.h>

main

{charch[2][5]-{”1234”,”5678”},*p[2];

inti,j,s=0;

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

p[i]=ch[i];

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

{s=p[i][j]一'0';

printf("%d",s);}

}A.A.6357B.6135C.1357D.691357

73.有以下程序:

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

A.Zhao,m,85,90B.Qian,m,85,90C.Zhao,f,95,92D.Qian,f,95,92

74.(58)在数据流图(DFD)中,带有名字的箭头表示______。

A.制程序的执行顺序

B.模块之间的调用关系

C.数据的流向

D.程序的组成成分

75.设有关系R和S,关系代数表达式为R一(R—S)表示的是()。

A.R∩SB.R—SC.RUSD.R÷S

76.

77.

78.

有下列程序:

intfun(intn)

{if(n==1)}return1;

else

return(n+fun(n-1));

}

main

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x);

)

执行程序时,给变量x输入10,程序的输出结果是()。

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

79.以下()不是标准的HTTP消息头字段。

A.StatusB.HostC.AcceptD.Referer

80.数据库关系模型中可以有三类完整性约束,下列选项中不属于三类完整性约束的是()。

A.实体完整性规则B.参照完整性规则C.对象完整性规则D.用户自定义完整性规则

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:用冒泡法对6个字符串进行升序排列。请改正程序中的错误,使它能得出正确的结果。

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

六、程序设计题(1题)82.请编写一个函数proc,它的功能是:求出1~m(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传给m的值为70,则程序输出:7111421222833354244495556636670注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#defineN100voidproc(intm,int*a,int*n){ }voidmain{intarr[N],n,k;system("CLS");proc(70,arr,&n);for(k=0;k<n;k++)if((k+1)%20==0)//每行输出20个数{printf("%4d",arr[k]);printf("\n");}elseprintf("%4d",arr[k]);printf("\n");}

参考答案

1.A题目的fun函数内,while循环条件为“(*b=*a)!=‘\\0’”,执行时先把指针a所指向的字符赋给指针b所在的内存单元。如果该字符不是结束标识‘\\0’,执行循环体“a++;b++;”,指针a、b分别指向下一个字符单元。再判断循环条件,如果成立,继续把指针a所指向的字符赋给指针b所在的内存单元,直到遇到结束标识为止。故本题答案为A选项。

2.A

3.B解析:C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。A)中的void与C语言的关键字重名,不合法;C)中的case和C语言的关键字重名,不合法;D)中的2a是数字开头,而且sizeof与C语言的关键字重名,不合法。

4.C解析:本题中第一行代码对指针P进行了初始化,其指向数组a的第6个元素,在其后的操作中p的值也没有改变过,所以最后输出*p=*\u3000\u3000(p+0)\u3000\u3000=a\u3000[5]\u3000=6,而第二行代码中对q指向的值进行赋值,等价于*q=a[10]=11,所以输出结果*q为11。

5.A

6.C在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。

7.A软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选择A。

8.A解析:p为指针型变量。第一次循环,p=s,p的值为字符数组s的首地址,输出字符串'ABCD'。p++,第二次循环,p的值为字符数组s的首地址加1,输出字符串'BCD'。p++,第三次循环,p的值为字符数组s的首地址加2,输出字符串'CD'。p++,第4次循环,p的值为字符数组s的首地址加3,输出字符串\'D'。

9.A

10.C

11.D

12.A

13.B解析:本题中,structex是结构体类型名,ex-ample是结构体变量名。

14.D解析:要想使程序输出是25,则j-40=25,j=65,而j初值是50,所以填入for循环中的语句,使引用的数组元素累加为65-50=15即可。

15.B

16.A

17.B在C语言中%d表示输出整型数值,所以答案为B。

18.B解析:本题考查while语句的使用。本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符'!'的优先级大于不等于运算符'!='的优先级。

19.A

20.B解析:当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址,函数中的形参可定义成以下三种形式:

①形参定义成数组;

②形参定义成可变长数组:

③形参定义为指针变量。

21.918273645918273645解析:for是C语言的关键字,其后的一对圆括号中通常含有3个表达式,各个表达式之间用分号隔开,这3个表达式可以是任意形式的表达式,通常主要用于for循环控制。

22.GDBHIEFCAGDBHIEFCA解析:后序遍历二叉树的顺序为:后序遍历左子树→后序遍历右子树→访问根结点。按照定义,后序遍历序列是GDBHIEFCA。

23.structDATEd={2006101};structDATEd={2006,10,1};解析:在C语言中,结构体变量定义语句的一般形式如下:

struct<结构体名><结构体对象名>[=<初始化列表>];

在本题中,<结构体名>是DATE,<结构体对象名>题目要求为d,而可有可无的<初始化列表>本题要求为{2006,10,1}。故应该填structDATEd={2006,10,1};。

24.return0或return(0)return1或return(1)return0或return(0)\r\nreturn1或return(1)解析:素数是指只能被1和其本身整除,不能被其他任何整数整除的数。根据if条件语句,若形参a对i取余等于0,则形参a可以被其他数整除,所以第一处填return0;若形参a对i取余不等于0,则形参s不可以被其他数整除,所以第二处填return1。

25.doublemax或externdoublemaxdoublemax或externdoublemax解析:函数声明是对所用到的函数的特征进行必要的声明,编译系统以函数声明中给出的信息为依据,对调用表达式进行检测,以保证调用表达式与函数之间的参数正确传递.函数声明的一般格式为:类型标识符函数名(类型标识符形参,…);这些信息就是函数定义中的第一行的内容。本题中main()函数需要调用max()函数,在main()之前就需要声明函数max(),并且可以用extern说明符使变量的作用域扩充到需要用到它的函数,所以,填写doublemax(或externdoublemax)。

26.对象对象解析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。

27.循环链表循环链表解析:在循环链表中,由于设置了一个头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。

28.程序调试程序调试解析:程序调试的任务是诊断和改正程序中的错误。程序调试与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于调试工具找出软件错误的具体位置。软件测试贯穿整个软件生命期,而调试主要在开发阶段。

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

30.存储结构

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

32.内聚内聚

33.0&a[i]a[i]0\r\n&a[i]\r\na[i]解析:本题要求从终端读入数据到数组中,统计其中正数的个数,井计算它们的和。程序中首先要对存放正数个数的变量count及存放和值的变量sum初始化为0,所以第一空应填0。接着要求从终端读入数据到数组中,可以通过scanf函数实现,因此第二空应填&a[i]。最后通过sum+=a[i];语句累加正数a[i]的值到sum中,因此第三空应填a[i]。

34.a=3.00b=4.00c=5.00s=6.00area=6.00

35.本题考查字符替换格式:#define标识符字符串。

36.*(p+5)或p[5]*(p+5)或p[5]

37.软件工程学软件工程学

38.1212解析:do…while循环的一个比较显著的特点是:先执行一次循环体然后再判断循环的条件是否满足,若满足则接着进入下一次循环,否则就退出循环。注意:3种循环结构的比较。

39.C

40.3232解析:while(表达式)的功能是:首先计算表达式的值,若为真,则执行循环体语句,执行完毕,再计算表达式的值,若仍为真,则重复执行循环体语句,直到表达式的值为假时,结束while语句的执行,继续执行while语句后面的语句:i=0时满足循环条件,也满足if的条件,执行语句得i=11,a=11,第2次循环不满足if的条件,执行i--,i=10,执行i+=11;a+=i后,得i=21,a=32,不满足i<20,循环结束。

41.A解析:程序执行printf('%d%d',m++,++n);后,输出的是m和n+1的值1235,然后m+1=13,再执行printf('%d%d\\n',n++,++m);输出n和m+1的值3514,之后n+1=36。这里要注意的是m++和++m的区别:m++是先输出m的值,再执行m++;++m是先执行++m,再输出m的值。

42.B解析:可以用typedef定义新的类型名来代替已有的类型名。T是所定义的新的类型名,它代表题中定义的一个结构体类型,这样就可以用T定义结构体变量了。

43.C解析:选项A)中case后面的表达式为浮点型,选项D)中case后面的表达式存在字符变量c,故选项A)、D)错误;在选项B)中,switch后面的表达式加了分号显然有错。

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

45.B解析:在对字符数组赋字符串值时,系统会自动在字符串的末尾加上一个字符串结束标志“\\0”,故指向字符数组的指针p的*(p+4)的值为“\\0”。由于“\\0”的编码值就是0,所以本题输出为0。

46.A解析:在C语言中函数名代表该函数的入口地址,因此可以定义一种指向函数的指针来存放这种地址.其定义形式为:

函数类型(*函数指针名)(函数参数列表);

其中,函数参数列表可以省略。通过函数指针调用函数的形式为:

(*函数指针)(函数参数列表)

调用时函数的参数列表是不能省略的。所以本题的正确答案为选项A。

47.D解析:*、/和%的优先级要高于+和—,同级别的运算符从左至右运算。所以本题首先计算5/2和5%2,虽然我们都知道5/2的结果应该是2.5,但C语言中规定了两个整数相除的结果为整数,而且是截尾取整,所以5/2的结果是2;5%2表示的是5除以2所得的余数,其结果为1。计算完后,表达式变为3.6-2+1.2+1,从左至右计算不难得出结果为3.8,故应该选择D。

48.B解析:本题考查ifelse语句。程序中首先使用函数scanf()通过键盘读入a的值,并通过第1个if语句,先判断条件,取a的值2和3比较,然后将a的值加1,发现条件成立,执行下列的printf语句,输出a的值3。

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

50.A解析:本题的功能是顺序的读两个文本文件,依次输出。当打开文件时出现错误,fopen函数将返回NULL。

51.B解析:本题考查函数调用时的参数传递。在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之间只是实参将值传递给形参.

52.C解析:不论main函数在整个过程中的位置如何,一个C程序总是从main函数开始执行的。

53.C解析:本题中,格式符。表示的是八进制无符号形式输出整型数(不带前导0),字符常量在内存中占一个字节,存放的是ACSII码代码值。C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ACSII字符集中该字符的序号,即&*s中有几个字符就输出几个*。

54.C

55.C解析:本题执行过程如下:首先调用fun函数,使得实参a的值3传递绐形参p,得到局部变量d=8,打印出局部变量d的值8返回主函数执行“d+=a++””,此处的d为全局变量,所以d=1+3=4(由于本题是值传递,所以在函数fun中对p值的改变并不能引起a的改变),故本题的输出是8,4。

56.B解析:本题中a的值为6,b的值为8,最后s的值为8,s*=s等价于s=s*s。

57.B解析:采用结构化编程方法的好处主要在于:一是便于控制、降低程序的复杂性,因此便于编写程序。二是程序清晰易读,可理解性好。因此,结构化程序设计主要强调的是程序的易读性,而不是程序的规模、程序的执行效率和程序的可移植性。

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

59.C解析:本题考查if语句。先判断if语句的条件是否成立,++a->0,此条件成立,又因为是进行逻辑或运算,在己知其中一个运算对象为真的情况下,不必判断另外一个运算符的真假,即不进行++b操作,就可以直接得出整个表达式的值为逻辑1,执行下列的++c。

60.C解析:n和e的x幂次方,要分别调用C语言的数学库函数doublepow(n,x)和doubleexp(x),因为这两个函数的返回值都为double型,对两者的和计算绝对值,调用库函数doublefabs(pow(n,x)+exp(x)),求出和的绝对值,再调用开平方函数doublesqrt(fabs(pow(n,x)+exp(x))),这样计算出的结果就是题干中表达式的值。

61.D

62.C

63.A(x}1000+0.5)表示x移动3位小数,细0.5,也就是小数第4位加5,若这位大于等于5,则进1到个整。因为“5.16894}10005168.94+0.575169.44”所以(int)(x$1000+0.5)强制转换为整型结果为5169。(5169/1000.0)5.169,由于1000.0结果自动转换为浮点数所以prinff(“%lf\n”,5.169)结果是5.16900。故答案为A选项

64.C队列是指允许在一端进行插入、而在另一端进行删除的线性表,选项A和选项B错误。允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除。所以,队列又称为“先进先出”或“后进后出”的线性表,它体现了“先来先服务”的原则,选项C正确,选项D错误。

65.A\n第一调用func函数时输出4,第二次调用func函数时num的值并不会释放,仍然是上次修改后的值4,第二次调用结果为8,所以输出结果是48。

\n

66.D

67.A

68.C

69.

温馨提示

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

评论

0/150

提交评论