2021年广东省阳江市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2021年广东省阳江市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2021年广东省阳江市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2021年广东省阳江市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2021年广东省阳江市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

2021年广东省阳江市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有两个串p和q,求q在p中首次出现的位置的运算称为()。

A.连接B.模式匹配C.求子串D.求串长

2.若有"doublea;",则正确的输入语句是()。

A.scanf("%1f",a);

B.scanf("%f",&a);

C.scanf("%1f",&a)

D.scanf("%1e",&a);

3.合法的数组初始化语句是()。

A.chara="string";

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

C.inta[]="string"

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

4.下列运算符中,运算对象必须是整型的是()。

A./B.%=C.=D.&

5.根据二叉树的定义可知道二叉树共有种不同形态的二叉树()。

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

6.将两个各有n个元素的有序表归并成一个有序表,最少的比较次数是()。

A.nB.2n-1C.2nD.n-1

7.带头结点的双向循环链表L为空的条件是()。

A.L==NULLB.L->next==NULLC.L->prior==NULLD.L->next==L

8.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是A.O(n)

B.O(n2)

C.O(log2n)

D.O(nlog2n)

9.

10.递归式的先序遍历一个n节点,深度为d的二叉树,则需要栈空间的大小为()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

11.若有定义语句“char*s1=“OK”,*s2=“ok”;”,以下选项中,能够输出“OK”的语句是()。

A.if(strcmp(s1,s2)!=0)puts(s2);

B.if(strcmp(s1,s2)!=0)puts(s1);

C.if(strcmp(s1,s2)==1)puts(s1);

D.if(strcmp(s1,s2)==0)puts(s1);

12.

13.

14.将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子的编号为______。

A.98B.99C.50D.48

15.

16.链表不具有的特点是()。

A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比

17.有以下程序:#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];}main(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;fun(x,y);for(i=0;i<N;i++)printf(“%d”,y[i]);printf(“\n”);}程序的运行结果是()。

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

18.若输入“abcdef”、“abdef”,以下程序的输出结果为()。#include<stdio.h>#lnclude<string.h>main(){intn;chars1[20],s2[20],p1,*p2;scanf("%s",s1);scanf("%s",s2);P1=s1;p2=s2;n=strcmp(p1,p2);printf("%d\n",n);}

A.-1B.0C.abcdefD.abdef

19.sizeof(float)是()。

A.一种函数调用B.一种函数定义C.一个浮点表达式D.一个整型表达式

20.设q1和q2是指向一个float型一维数组的指针变量,k为float型变量,则不能正确执行的语句是()。

A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);

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

main()

{ints=0,i=1;

while(s<=10)

{s=s+i*i;

i++;

}

printf("%d",--i);

}

22.下面程序输出的结果是()。intm=17;intfun(intx,inty){intm=3;return(x*y-m);}main(){inta=5,b=7;printf("%d\n”,fun(a,B)/m);}

23.数据的______结构在计算机存储空问中的存放形式称为数据的存储结构或物理结构。

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

#include<string.h>

main()

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

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

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

}

25.下列程序的运行结果为【】。

main()

{inta=5,b=5,y,z;

y=b-->++a?++b:a;

z=++a>b?a:y;

printf("%d,%d,%d,%d",a,b,y,z);

}

26.函数count(head)统计链表的结点个数,head为表头指针,阅读程序,要求将整个if语句改成while循环控制结构,其形式为【】。

#include<stdio.h>

intcount(NODE*head)

{intn=0;

if(head!=NULL)

do

{n++;

head=head->next;

}while(head!=NULL);

returnn;}

27.以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。

main()

{floatx[1000],sum=0,ave,a;

intn=0,i;

printf("Entermark:\n");scanf("%f",&a);

while(a>=0.0&&n<1000)

{sum+【】;x[n]=【】;

n++;scanf("%f",&a);

}

ave=【】;

printf("Output:\n");

printf('ave=%f\n",ave);

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

if(【】)printf("%t\n",x[i]);

}

28.以下程序的输出结果是_______。

main()

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

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

printf("\n");}

29.若要说明一个新类型名ArrInt,使得定义语句ArrIntx;等价于定义语句Intx[4][10];,正确的说明语句形式为【】。

30.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

intmystrlen(char*str)

{intI;

for(I=0;【】!='\n';I++);

return(I);}

31.数据模型按不同应用层次分成3种类型,它们是概念数据模型、【】和物理数据模型。

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

voidfun(intx,inty)

{x=x+y;Y=x-y;x=x-y;

printf(“%d,%d”,x,y);}

main()

{intx=2,y=3;

fun(x,y);

printf(“%d,%d\n”,x,y);

}

33.设有以下定义和语句,则*(*(p+2)+1)的值为【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

34.以下程序的功能是:从键盘上输入若干学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。填空。

main()

{floatx[1000],sum,=0.0,avea;

intn=0,i;

printf("Entermark:"\n");scanf("%f",&a);

while(a>=0.0&&n<1000)

{sum+=【】;x[n]=【】;

n++;scanf("%f",&a);

}

ave=【】;

printf("Output:"\n");

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

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

if(【】)frintf("%f\n",x[i]);

}

35.下面程序的功能是输出数组s中最大元素的下标,请填空。

#include<stdio.h>

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

}

36.一棵二叉树第6层(根结点为第一层)的结点最多为______个。

37.若有下面的程序片段:int[12]={0},*p[3],**pp,i;for(i=0;i<3;i)p[i]=&a[i*4];pp=p;则对数组元素的错误引用是

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

______

main()

{printf("\n");

try_me();

printf("\n");}

39.设有以下定义和语句,则*(*(p+2)+1)的值【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

40.以下程序的运行结果是()。

intk=0;

voidfun(intm)

{m+=k;k+=m;printf("m=%d\nk=%d",m,k++);}

main()

{inti=4;

fun(i++);printf("i=%dk=%d\n",i,k);

}

三、1.选择题(20题)41.在C语言中提供的合法的关键词是______。

A.swicthB.cherC.CaseD.default

42.下列语句组中,不正确的是()。

A.char*s;s="Olympic";

B.chars[]="Olympic";

C.char*s;s={"Olympic"};

D.chars[]={"Olympic"};

43.有以下程序:voidsum(int*A){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}执行后的输出结果是

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

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

A.局部变量的定义可以在函数体和复合语句的内部

B.全局变量的定义可以在函数以外的任何部位

C.同一程序内局部变量和全局变量不允许同名

D.函数的形参属于局部变量

45.有以下程序:main(){intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p);}若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是______。

A.m=123n=456p=789

B.m=123n=456p=789

C.m=123,n=456,p=789

D.123456789

46.以下程序的输出结果是______。main(){union{chari[2];intk;}r;r.i[0]=2;r.i[1]=0;printf("%d\n"r.k);}

A.2B.1C.0D.不确定

47.有以下程序:#include<stdio.h>intfun(chars[]){intn=0;while(*s<='9'&&*s>='0'){n=10*n+*s-'0';s++;}return(n);}main(){chars[10]={'6','1','*','4','*','9','*','0','*'};printf("%d\n",fun(s));}程序的运行结果是()。

A.9B.61490C.61D.5

48.设有如下程序#include<stdio.h>main(){int**k,*j,i=100;j=&i;k=&j;printf("%d\n"”,**k);}上述程序的输出结果是______。

A.运行错误B.100C.i的地址D.j的地址

49.有三个关系R、S和T如下:由关系R和s通过运算得到关系T,则所使用的运算为()。

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

50.若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是

A.int*i=NULL;scanf("%d",i);

B.float*f=NULL;*f=10.5;

C.chart='m',*c=&t;*c=&t;

D.long*L;L='\0';

51.以下选项中不属于字符常量的是

A.'C'B.CC.'\xCC'D.'\072'

52.在C语言中引用数组元素时,其数组下标的数据类型只能是()。

A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式

53.下列程序的输出结果是______。main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)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

54.有以下程序:#include<stdio.h>main(){ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的输出值为2,则应该从键盘给n输入的值是()。

A.-1B.-3C.-5D.0

55.下列关于C语言数据文件的叙述中正确的是A.文件由ASCII码字符序列组成,C语言只能读写文本文件

B.文件由二进制数据序列组成,C语言只能读写二进制文件

C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

56.C语言运算对象必须是整型的运算符是______。

A.%=B./C.=D.<=

57.函数fun的返回值是fun(char*a,char*b){intnum=0,n=0;while(*(a+num)!='\0')num++;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;}

A.字符串a的长度B.字符串b的长度C.字符串a和b的长度之差D.字符串a和b的长度之和

58.设有以下语句:inta=1,b=2,c;c=a∧(b<<2);执行后,c的值为()。

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

59.有以下程序:main(intargc,char*argv[]){intn=0,i;for(i=1;i<argc;i++)n=n*10+*argv[i]-'0';printf("%d\n",n);}编译连接后生成可执行文件tt.exe。若运行时输入以下命令行tt12345678程序运行后的输出结果是()。

A.12B.12345C.12345678D.136

60.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是()。

A.for(i=1,p=1;i<=5;i++)p*=i;

B.for(i=1;i<=5;i++){p=1;p*=i;}

C.i=1;p=1;while(i<=5){p*=i;i++;}

D.i=1;p=1;do{p*=i;i++;}while(i<=5);

四、选择题(20题)61.

以下程序的输出结果是()。

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

main()

{inta=l,b=2,c=3;

printf("%d\n",m(a+b.b+c,c+a));

}

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

62.以下程序段中的变量已正确定义。

for(i=0;i<;4;i++,i++)

for(k=1;k<;3;k++);prinff(”*”);该程序段的输出结果是()。

A.*B.****C.**D.********

63.以下函数返回a所指数组中最大值所在的下标值

fun(int*a,intn)

{

inti,j=0,p;

p=j;

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

if(a[i]>a[p])_________;

return(p);

}

在下画线处应填入的内容是

A.i=pB.a[p]=a[i]

C.p=iD.p=j

64.

65.有以下程序:

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

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

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

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

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

66.

67.表达式a+=a-=a=9的值是()。

A.0B.-9C.18D.9

68.下面函数调用语句含有实参的个数为()。

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

69.

70.设x=015,则x=x^017的值是()。A.00001111B.11111101C.00000010D.11000000

71.以下对二维数组a进行正确初始化的是()

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

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

C.inta[2][]={1,2,3,4,5,6};

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

72.

73.已知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);

74.程序流程图(PFD.中的菱形代表的是()。

A.数据流B.控制流C.加工步骤D.逻辑条件

75.

76.以下能正确定义二维数组的是()。

A.inta[][3];

B.inta[][3]={2*3);

C.inta[][3]={};

D.inta[2][3]一{{1),{2},{3,4}};

77.设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1

78.有以下程序:

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

A.

B.

C.

D.

79.当把以下四个表达式用做if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是()。

A.k%2B.k%2==1C.(K%2)!=0D.!k%2==1

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:求出以下分数序列的前m项之和。2/1,3/2,5/3,8/5,13/8,21/13,…和值通过函数值返回main()函数。例如,若m=6,则应输出10.007051。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.数组point中存放着m个人的成绩,请编写函数fun().它的功能是:返回高于平均分的人数,并将高于平均分的分数放在high所指的数组中。例如,当point数组中的数据为50,60,65,70.75,80.88,90,95时,函数返回的人数应该是5,high中的数据应为75,80,88,90,95。请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。注意:部分源程序给出如下。试题程序:

参考答案

1.B

2.D解析:函数scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。本题中定义变量a为双精度型变量,双精度变量的格式符为“1e”;变量的地址用取地址符“&”加变量名表示,如变量a的地址为“&a”。

3.D

4.B

5.B

6.B

7.D

8.C解析:二分查找法也称为折半查找法。它的基本思想是:将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2],则找到x,算法终止;如果x<a[n/2],则只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列);如果x>a[n/2],则只要在数组a的右半部继续搜索x。每次余下n/(2i)个元素待比较,当最后剩下一个时,即n/(2i)=1。故n=2i;所以i=log2n。

9.C

10.D

11.B“strcmp(S1,S2)”是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比较(按照ASCII值大小)。因为“OK”<“ok”,所以“strcmp(S1,S2)”为负值。故本题答案为B选项。

12.D

13.D

14.A

15.D

16.BB选项的特点是顺序存储结构的特点,即数组的特点。

17.A本题由fun函数可知,执行for循环,当i=0时,b[0]=a[0][0]-a[0][3]=1-4=-3;当i=1时,b[1]=a[1][1]-a[1][2]=6-7=-1;当i=2时,b[2]=a[2][2]-a[2][1]=11-10=1;当i=3时,b[3]=a[3][3]-a[3][0]=16-13=3。主函数中输出y数组元素的值为:-3,-1,1,3。故本题答案为A选项。

18.A

19.D解析:sizeof(float)是c语言内部规定的用于计算单精度型变量(float)在计算机的内存中所占用的字节数量的函数,返回一个整数值。

20.B解析:选项A)是将指针q1和q2所指向的变量值相加,然后赋给k;选项B)中,float型数据和指针型数据之间不能进行赋值运算:选项C)中,是两个指针变量之间的赋值:选项D)中,是两个指针型变量所指向的两个float型数据相乘。

21.33解析:分析程序运行过程,第1次循环:s=s+i*i=0+1*1=1,i=2;第2次循环:s=s+i*i=1+2*2=5,i=3;第3次循环:s=s+i*i=5+3*3=14,i=4;循环条件不成立输出i,--i使i的值减1,输出结果为3。

22.11解析:本题考查局部变量和全局变量的区别:局部变量是指作甩域在函数级和块级的变量,全局变量是指作用域在程序级和文件级的变量。

23.逻辑逻辑解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构或物理结构。

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

25.7467

26.while(p!=NULL){n++;head=head→next;}while(p!=NULL){n++;head=head→next;}解析:do…while循环转化为while循环,循环体执行的内容应该是一致的,不同的是do…while结构是先执行一次循环体,然后再判断循环条件是否满足,而while循环则是先判断循环条件是否满足,满足则执行循环体。所以do…while循环结构若想转换为while循环结构,必须在do…while循环之前先对循环条件进行一个判断,即此题中的if(head!=NULL)。注意:3种循环结构的比较。

27.=aasum/nx[i]<ave=a\r\na\r\nsum/n\r\nx[i]<ave解析:sum是用来存放学生成绩总和的,a是输入的成绩,ave存放平均成绩,n既是循环变量,又表示学生人数,x[n]保存第n个学生的成绩。sum用来累加每个同学的成绩,因此有sum+=a;把新输入的学生成绩保存在数组中,因此有x[n]=a;ave是所有同学的平均成绩,因此有ave=sum/n;逐个把学生成绩和平均成绩比较,因此有if(x[i]<ave)。

28.

29.typedefintArrInt[4][10];

30.*(str+I)或str[I]*(str+I)或str[I]解析:str是指针变量,它指向字符型数据,在循环过程中,可以用*(str+I)来访问字符串中的第I个元素,判断是否为结束标志,如果不是,I=I+1,继续取下一个元素进行判断,直到*(str+I)的值为'\\0'为止,也可以用下标的方式引用字符,如*(str+I)相当于str[I]。

31.逻辑数据模型逻辑数据模型解析:数据是现实世界符号的抽象,而数据模型(datamodel)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型按不同的应用层次分成3种类型,它们是概念数据模型(conceptualdatamodel)、逻辑数据模型(logicdatamodel)、物理数据模型(physicaldatamodel)。

32.32233,2,2,3解析:主函数中首先定义了整型变量x和y,并分别给它们赋初值为2和3,接着调用fun()函数,fun()函数把实参x和y的值传给形式参数x和y,实参和形参不再有联系。在fun()函数中,通过运算使x和y的值交换过来,所以fun()函数中的输出结果是“3,2”。fun()函数调用返回输出x和y依然是原来的x和y,为“2,3”。原因是变量作为形参传值的,对形参的修改并不影响对应的实参。所以最后输出为3,2,2,3。

33.6060解析:程序中定义a是一个3行2列的二维数组,p是指向两个元素的一维数组指针,并让p指向二维数组a的首行。则代码*(*(p+2)+1)中的p+2指向二维数组a的第三行a[2],*(p+2)指向a[2[]0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60。

34.aasum/n或sum/(float)n或sum/(double)nx[i]<sve或!(x[i]>=sve)或sve>x[i]a\r\na\r\nsum/n或sum/(float)n或sum/(double)n\r\nx[i]<sve或!(x[i]>=sve)或sve>x[i]

35.k=p;k=p;解析:要找数组中最大元素的下标,首先预设数组首元素下标为临时最大元素的下标,从首元素开始顺序向后继元素逐一比较,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标,直至比较了数组的全部元素后,临时最大元素下标就是数组中最大元素的下标。程序中,变量k用于存储临时最大元素下标,变量p控制顺序比较的循环变量。当发现当前元素s[p]比临时最大元素s[k]更大时,用p更新k。所以在下划线处应填入代码“k=p;”。

36.3232解析:二叉树第k层上,最多有2k-1(k≥1)个结点。第6层的结点数最多是26-1=32。注意区别“二叉树的结点最多数”和“某一层的结点最多数”。前者的计算是深度为m的二叉树最多有2m-1个结点。

37.C

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

39.6060解析:*(*(p+2)+1)相当于访问的是a[2][1]的值。*(p[2]+1)、p[2][1]以及(*(p+2))[1]表达的含义都是a[2][1]的值。

40.m=4k=4i=5k=5m=4k=4i=5k=5解析:在主函数main()中定义了一个变量i,并赋初值4,调用fun()函数将i的初值传递给形参m,进行fun()函数后的运算,输出结果为m=4,k=4。将k值输出后自行增加1,k=5,此时全局变量k的值变为5。主函数中调用fun()函数后,i再自行增加1,i=5,所以主函数输出的结果为“i=5k=5”。

41.D解析:选项A应为多分支语句中的switch,选项B应为定义字符类型的char,选项C应为多分支语句中的分支关键词case(小写)。因此,选项A、B、C都有书写上的错误,只有选项D正确。

42.C

43.A解析:本题考核的知识点是数组的定义、赋初值以及函数调用的组合应用.本题中函数sum(int*A)的作用是:将形参a所指的数组中的第二个元素的值a[1]赋给第一个元素a[0]。主函数中定义一个长度为10的整型数组并赋初值,接着执行一个for循环,该循环共执行了3次.当i=2时,调用函数sum(&aa[2]),主函数中将&aa[2]作为实参传给行参a,所以此时形参a所指的数组的第一个元素和第二个元素分别为aa[2]和aa[3],故执行完该函数后将aa[3]的值赋给aa[2],即aa[1]=aa[3]=4,当i=1时,调用函数sum(&aa[1]),主函数中将&aa[1]作为实参传给行参a,所以此时形参a所指的数组的第一个元素和第二个元素分别为aa[1]和aa[2],故执行完该函数后将aa[2]的值赋给aa[1],即aa[1]=aa[2]=4;当i=0时;调用函数sum(&aa[0]),,主函数中将&aa[0]作为实参传给行参a,所以此时形参a所指的数组的第一个元素和第二个元素分别为aa[0]和aa[1],故执行完该函数后将aa[1]的值赋给aa[0],即aa[0]=aa[1]=4;故最后输出的aa[0]的值为4,所以,4个选项中选项A符合题意。

44.C

45.A解析:正确输入各变量的值,输入的格式应该和输入语句中的“格式控制”字符串的格式对应一致。

46.A解析:根据共用体的定义可知:共用体r的成员k和成员i[2]是共用同—段内存空间,所以,当程序给r.i[0]赋值后,实际上,共用体成员k的值也确定了,为2。所以打印输出的结果应当为2。

47.C解析:题目fun()函数中while循环的意思是:判断s所指内容是否为数字字符,如果是数字字符,则计算表达式n=10*n+*s-'0';。其中*s-'0'的作用是将相应的数字字符转换为数值,例如字符'8'减去字符'0'后,得到的结果就是数值8了。n=10*n+的作用是将累计变量n中原来内容乘以10,然后再加上刚转换的数字字符的数值,例如原来n的值为1,*s现在的内容为'2',那么执行了n=10*n+*s-'0';语句后,n的值变为12,如果接下来再来一个'8'字符,执行n=10*n+*s-'O';语句后,n的值就是128了。故不难看出fun()函数的作用是“将数字字符串转换为相应的十进制数值,碰到非数字字符时结束”。从主函数中定义的字符数组s的初始化内容可以看出,fun()函数返回值应该是61。故应该选择C。

48.B解析:j=&i,j的值就是i的地址,*j=100,将j的地址赋给k,这时*k=j,那么,**k=*j,而*j=100,所以**k=100,最后的打印结果应当为100。

49.D自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此B错误。笛卡儿积是用R集合中的元素为第一元素,s集合中的元素为第二元素构成的有序对,因此C错误。根据关系T可以很明显地看出是从关系R与是系s中取得相同的关系组,所以使用的是交运算,选择D。

50.D解析:选项A定义了一个整型变量i,并且初始化让它指向NULL,接着通过seanf()函数,改变i指向的存储空间的值,选项A中首先定义了整型指针变量i并初始化为NULL,即表示指针i不指向任何内存,即此时程序还没有为i在内存中开辟存储单元,而在scanf()函数中笫;个参数是地址参数,显然在这里i不在表示地址,所以下面的scanf('%d',i)语句是不正确的,故选项A不正确;选项B定义了一个浮点型变量f并初始化让它指向NULL,而当一个指针变量指向NULL以后不能在给它赋值,而按下来的程序中为其赋了一值,故选项B错误;选项C中首先定义了一个字符变量t并给它赋初值\'m\',然后定义一个字符型指针c并让它指向了变量t,这一部分正确,然后接着用了一个语句“c=&t;”应该特该语句中c前的“*”去掉,故选项c运用指针变量不正确。所以,4个选项中选项D符合题意。

51.B解析:在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量,而选项B)是用双引号括起来的字符,表示一个字符串常量。

52.C解析:在C语言中,数组元素的下标只能是整型常量或整型表达式。

53.C

54.B解析:本题考查do-while语句。当n=-1时,s+=1,s=1;a=a-2=-1;a!=n不成立,结束循环,此时s值为1,不符合题意;当n=-3时,s+=1,s=1;a=a-2=-1;a!=n成立,继续循环,s=s+1=2,a=a-2=-3;a!=n不成立,此时s值为2,符合题意。

55.D解析:C语言把文件看成是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为ASCII文件和二进制文件。ASCII文件又称文本文件,它的每一个字节放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。

56.A解析:在C语言中,模运算(即取余运算%)的运算对象必须是整型数据(常量、变量或表达式)。

57.D解析:第一个while循环是字符串a的长度,第二个while是将字符串b接在a的后面,num在a串长度上继续累计,为两个字符串长度之和。

58.D解析:先算括号内的表达式,即先对b进行左移运算:b的二进制为00000010,左移后变为00001000,然后再与a进行异或运算(参与运算的两个对应位相同,则为0,相异则为1),结果为00001001,换算成十进制数结果为9。对于左移运算也可直接用此规则:左移1位相当于该数乘以2,左移2位相当于该数乘以22=4,依此类推。

59.D解析:因为题目给出的命令行为tt12345678,所以main函数的两个参数分别为4和{'tt','12','345','678')。程序中,通过一个for循环,遍历了后面的三个参数字符串,每次将n自乘10,然后累加*argv[i]-\'0\',即第i个参数字符串的首字符减去\'0\'。一个数宁字符减去,O字符,即可得到这个数字字符的实际数值,因此三次循环的结果是让n的值变为136,故本题应该选择D。

60.B解析:选项B中for循环了5次,而每次循环的时候,都将p的值重新赋值为1后,再乘以当前数字i,所以最后的结果为5,显然不是5!的值,同样的分析可知选项A、选项C和选项D计算的都是5!。所以,4个选项中选项B符合题意。

61.D

\nM(a+b,b+C,c+a)=a+b*b+c+c+a=1+2*2+3+3+1=12,注意x*y+z而不是(x)*(y)+z。

\n

62.Ac语言约定分号为一条语句的结束。因此for(i=0;i<4;i++,i++)for(k=1;k<3;k++);是完整的语句,对研nd();没有任何影响,最后一nff(”·’),执行一次。因此答案为A选项。

63.C该题目所要求的是最大数的位置(下标),而不是最大数的数值。因此,在进行逐个比较的过程中,需要记录最大数的下标i。根据给出的程序可知,该下标记录在变量p中,所以,如果a[i]>a[p]这一关系成立,应该把i的值赋给p,这样才满足题目的要求。

64.C

65.A函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化,所以数组c中的元素的值并没有变化,选择A。

66.C

67.A赋值语句,从右向左执行,先执行a=9,再执行a一:a,a为o,再执行结果仍为0,所以A)正确。

68.B函数调用的一般形式为:函数名(形参表)若函数无形参,调用形式为:函数名,当所调用的函数用于求出某个值时,函数的调用可作为表达式出现在允许表达式出现的任何地方,本题中调用语句的参数个数为2个。

69.C

70.C

\n本题考查按位异或运算,异或就是相同为0,不同为1(化为二进制00001101),017的二进制为000001111,两者异或结果为00000010。

\n

7

温馨提示

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

评论

0/150

提交评论