2021年福建省厦门市全国计算机等级考试C语言程序设计_第1页
2021年福建省厦门市全国计算机等级考试C语言程序设计_第2页
2021年福建省厦门市全国计算机等级考试C语言程序设计_第3页
2021年福建省厦门市全国计算机等级考试C语言程序设计_第4页
2021年福建省厦门市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩103页未读, 继续免费阅读

下载本文档

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

文档简介

2021年福建省厦门市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有说明:charw;intx;f1oaty;doublez;则表达式w*x+z-y值的数据类型为()。

A.floatB.charC.intD.double

2.

3.下述程序的输出结果是()。#include<stdio.h>voidmain(){chara=1,b=2;charc=a^b<<2;printf("\n%d",C);}

A.9B.10C.12D.2

4.下面不正确的字符赋值或赋初值的方式为()。

A.chars[10]=”hello!”

B.chars[10]={‘h’,‘e’,‘l’,‘l’,‘o’,‘!’}

C.chars[10];s=”hello”

D.char[]=”hello!”

5.算法的时间复杂度是指______。

A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数

6.有以下程序#include<stdio.h>main{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是()。A.741B.963C.852D.875421

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

8.设有以下语句

charx=3,y=6,z;

z=x^y<<2;

则z的二进制值是

A.00010100B.00011011C.00011100D.00011000

9.若输入“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

10.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()。

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

11.

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

B.1111110100011001

C.0000001011100010

D.1100000000101000

13.在inta=3,int*p=&a;中,*p的值是()。

A.变量a的地址值B.无意义C.变量p的地址值D.3

14.设二维数组A[1...m,1...n]按行存储在数组B中,则二维数组元素A[i,j]在一维数组B中的下标为()。A.A.n*(i-1)+jB.n*(i-1)+j-1C.i*(j-1)D.j*m+i-1

15.执行下面程序中的输出语句后,输出结果是()。A.65B.20C.15D.10

16.

17.在一个有头结点的链队列中,假设f和r分别为队首和队尾指针,则插入s所指的结点的运算是()。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.s->next=r;r=s;

D.s->next=f;f=s;

18.广义表((a),a)的表头是()。

A.aB.()C.(a)D.((a))

19.将线性表中的结点信息组织成平衡的二叉树,其优点之一是总能保证任意检索长度均为log2n量级(n为线性表中的结点数目)()

A.对B.错

20.

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

#include<stdio.h>

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

22.函数pi的功能是根据以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+…+1(n*n)

现在请你在下面的函数中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*3));

}

23.下面程序的运行结果是()。

#include<stdio.h>

main()

{inta=25;

fun(&A);

}

fun(int*x)

{printf("%d\n",++*x);

}

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

#include<stdio.h>

main()

{inta=5,b=4,c=3,d;

d=(a>b>c);

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

}

25.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。

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

inta=1234;

printf("%2d\n",a);

27.与表达式a+=b等价的另一书写形式是______。

28.以下程序用来输出结构体变量student所占存储单元的字节数,请填空。

structst

{charname[20];doublescore;

};

main()

{structststudent;

printf("studentsize:%d\n",sizeof(【】));

}

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

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

prind("\n");

}

30.己定义charch='$';inti=l,j;,执行j=!ch&&ii++以后,i的值为【】。

31.在对文件进行操作的过程中,若要求文件的位置指针重新指向文件的开头,应当调用的函数是【】函数。

32.软件结构是以【】为基础而组成的一种控制层次结构。

33.fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{

introw,col,max,min;

for(row=0;row<N;row++

{

for(max=a[row][0],col=1;col<N;col++)

if(【】)max=a[row][col];

if(row==0)min=max;

elseif(【】)min=max;

}

returnmin;

}

34.以下函数的功能是求x的y次方,请填空。

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

returnz;

}

35.【】是数据库设计的核心。

36.在面向对象方法中,类之间共享属性和方法的机制称为______。

37.当线性表的元素总数基本稳定,且很少进行插入和删除操作,并要求以很快的速度存取线性表中的数据元素时,应采用【】存储结构。

38.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【】。

39.以下程序的功能是根据输入的“y”(“Y”)与“n”(“N”),在屏幕上分别显示出“ThisisYES.”与“ThisisNO.”。空白处需要填入的内容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case'y':

case'Y':printf("\nThisisYES.\n");

case'n':

case'N':Printf("\nThisisNO.\n");}}

main()

{charch;

printf("\nEnte

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

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf('%s\n",p);

}

三、1.选择题(20题)41.请选出以下程序的输出结果______。#include<stdio.h>sub(x,y,z)intx,y,*z;{*z=y-x:}main(){inta,b,c;sub10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%d,%d,/%d\n",a,b,c);}

A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7

42.下列对于软件测试的描述中正确的是()。

A.软件测试的目的是证明程序是否正确

B.软件测试的目的是使程序运行结果正确

C.软件测试的目的是尽可能多地发现程序中的错误

D.软件测试的目的是使程序符合结构化原则

43.以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=16,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}

A.16B.2C.9D.1

44.下列字符数组初始化语句中,不正确的是()。

A.charc[]=\goodmorning';

B.charc[20]="goodmorning";

C.charc[]={'a','b','c','d');

D.charc[]={"goodmorning");

45.若有定义:"inta[2][3];"则对a数组的第i行第j列无素的正确引用为()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

46.有以下程序:voidswapl(intc0[],intc1[]){intt;t=co[o];co[o]=o1[o];c1[o]=t;}voidswap2(int*c0,int*c1){intt;t=*c0;*c0=*c1;*c1=t;}main(){inta[2]={3,5},b[2]=A{3,5);swapl(a,a+1);swap2(&b[0],&b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}程序运行后的输出结果是______。

A.3553B.5335C.3535D.5353

47.下列叙述中正确的是()。

A.算法的执行效率与数据的存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.以上三种描述都不对

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

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

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

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

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

49.有如下程序段:#include<stdio.h>#defineMax(a,b)a>b?a:bmain(){inta=5,b=6,c=4,d;d=c+Max(a,b);printf("%d",d);}其输出结果为______。

A.10B.5C.6D.编译错误

50.如下程序的输出结果是#include<stdio.h>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

51.若有如下程序;main(){intm=-i;printf("%d,%u,%o,%X",m,m,m,m);}则程序运行后的输出结果是()。

A.-1,65535,177777,ffff

B.-1,-1,177777,fffe

C.-1,1,177777,ffff

D.-1,65535,177776,fffe

52.若变量已正确定义并赋值,下面符合C语言语法的表达式是______。

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

53.以下不正确的叙述是A.A.在C程序中,逗号运算符的优先级最低

B.在C程序中,APH和aph是两个不同的变量

C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变

D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

54.设有以下语句,其中不是对a数组元素的正确引用的是:______(其中O≤i<10)inta[10]={0,1,2,3,4,5,6,7,8,9,},*p=a;

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

55.设有如下定义:structsk{intn;floatx;}data,*p;若要使p指向data中的n域,正确的赋值语句是

A.p=&data.n;

B.*p=data.n;

C.p=(structsk*)&data.n;

D.p=(structsk*)data.n:

56.关系代数运算是以______为基础的运算。

A.关系运算B.谓词运算C.集合运算D.代数运算

57.在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示______。A.A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向

58.已知字母A的ASCII码值是65,字母a的ASCII码值是97,以下程序______。main(){chara='A';intb=20;printf(%d,%0",(a=a+a,a+b,B),a+'a'-'A',B);}

A.表达式非法,输出零或不确定值

B.因输出项过多,无输出或输出不确定值

C.输出结果为20,141

D.输出结果为20,141,20

59.算法的时间复杂度是指______。

A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数

60.以下能正确表示x在-5到-1或5到1范围(含5和1)内,值为“真”的表达式是()

A.(x>=-5)||(x<=-1)&&(x<=5)&&(x>=1)

B.!(x>=-5||x<=-1&&x<=5||x>=1)

C.x<-5&&x>-1||x<1&&x>5

D.(x<-5)||(x>-1&&x<1)||(x>5)

四、选择题(20题)61.以下选项中不能作为c语言合法常量的是()。.

A.0.1e+6B.’cd’.C.”、a”D.’\011

62.有以下程序则以下函数调用语句错误的是()。

A.k=*f(a,b);B.k=add(a,b);C.k=(*f)(a,b);D.k=f(a,b);

63.若有定义“floata=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为()。

A.两个语句都是将变量a的值赋予变量P

B.*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P

C.*p=a是将变量a的值赋予变量b,而&a是使P指向变量a

D.两个语句都是使P指向变量a

64.以下函数返回a所指数组中最小的值所在的下标值:fun(int*a,intn){inti,j=0,P;p=j;for(i=j;i<n;i++)if(a[i]<a[j])____return(p);}在下划线处应填入的是()。A.i=PB.a[p]=a[i]C.p=jD.p=i

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

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

B.1,2,3,4,10,12,14,16,9,10,

C.1,2,6,8,10,12,7,8,9,10,

D.1,2,6,8,10,12,14,16,9,10,

66.若有定义intx'y;并已正确给变量赋值。则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x_y)等价的是()。

A.(x-y011x-y>0)B.(x-y<0)C.(x-y>0)D.(x-y=o)

67.

68.下列叙述中正确的是()。

A.数据库系统是一个独立的系统,不需要操作系统的支持

B.数据库技术的根本目标是要解决数据的共享问题

C.数据库管理系统就是数据库系统

D.以上三种说法都不对

69.

70.有以下程序

voidfunc(int*a,intb[])

{b[0]=*a+6;}

main()

{inta,b[5]={0};

a=0;b[0]=3;

func(&a,b);

rintf("%d\n",b[0]);

}

程序的运行结果是

A.6B.7

C.8D.9

71.若有定义语句:intX=10;,则表达式x-=x+x的值为()。

A.0B.-20C.-10D.10

72.

73.

74.

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

A.21B.11C.20D.10

76.有以下程序:

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

A.12B.14C.1234D.123456

77.有以下定义语句,编译时会出现编译错误的是()。

78.有以下程序,其输出结果是()。

voidmain()

{

floarx=1;

inty;

x++;

y=x+1;

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

}

A.x=2,y=3

B.x=2,y=3.0

C.x=2.0,y=3

D.x=0,y=0.000000

79.

80.

有下列程序:

#include<stdio.h>

main

{inta=6,b=7,m=1;

switch(a%2)

{case0:m++;break;

case1:m++;

switch(b%2)

{default:m++;

case0:m++;break;

}

}

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

}

程序的运行结果是()。

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

五、程序改错题(1题)81.下列给定程序中,函数proc()的作用是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。

例如,若输入“I,anl,A,Student”,则输出“i,am,a,student”。

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

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

试题程序:

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

参考答案

1.D

2.C

3.A

4.C

5.C解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算的工具以及程序员的水平无关。选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误,因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。选项D错误,因为根据一个算法所编制出的程序之中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。所以,本题正确答案为C。

6.C在for循环中,当y的值为9、6或3时,执行输出语句,输出表达式--Y的值。Y先自减l,然后再输出y的值。

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

8.B本题主要考查位运算。“按位异或”运算(^)是双目运算符,其功能是把参与运算的两数各对应的二进制位相异或,它在操作时,两对应位相同结果为0,不同则为1。“左移”运算(<<)的功能是把“<<”左边的运算数的各二进制位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。左移时,若左端移出的部分不包含有效二进制数1,则每左移一位,相当于移位对象乘以2。

本题中,有三个字符型的变量x,y,z,其中x和y的值分别为3和6。先转换为二进制数分别为00000011和00000110。本题中需要注意的是逻辑左移运算符的优先级比按位异或运算符的优先级高,因此,先将y进行运算逻辑左移2位操作,得到的结果为00011000,然后进行按位异或运算,得到最后的结果是00011011。本题正确的答案选B。

9.A

10.C

11.D

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

13.D

14.A

15.B

16.D

17.B

18.C

19.A

20.C

21.246246解析:本题考查静态(static)局部变量的使用。fun函数中的静态局部变量a所占用的存储单元在程序运行过程中始终不释放,即当下一次调用该函数时,该变量仍然保留上一次函数调用结束时已有的值,3次调用fun函数分别得到2,4,6。

22.1.0/(i*i)或(double)1/(i*i)1.0/(i*i)或(double)1/(i*i)解析:表达式1+1/(2*2)+1/(3*3)+…+1(n*n)可写为1/(1*1)+1/(2*2)+1/(3*3)+…+1(n*n)

n

即;∑1÷(i×i)

i=1

对应的C语言的表达式s=s+1.0/(i*i)。注:必须要写成1.0的形式,否则1/(i*i)返回值为其值截尾取整,即恒为0。

23.2626解析:在主函数中只调用了fun函数,调用时把变量a的地址传递给形参。fun函数的形参x是一个指针,其基类型与主函数中a的类型一致,因此在调用时得到的是a的地址,输出项是++*x,*x代表的就是主函数中变量a的存储单元,++*x就是使主函数中a的值加1,输出26。

24.00解析:在本题中,d=(a>b>c);相当于d=(5>4>3);其计算过程为:先算5>4,结果为真,得1,即d=(1>3);然后计算1>3,结果为假,得0。

25.线性结构线性结构解析:数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。

26.12341234解析:在%与格式符之间插入一个整型数来指定输出宽度,当指定宽度小于输出数的实际宽度时,则按实际宽度输出。

27.a=a+ba=a+b解析:a+=b与a=a+b等价,作用是把变量a的值加b后再赋给变量a。

28.structst或studentstructst或student

29.1011121210111212解析:需要注意的是,函数fun()中的变量c为静态局部变量,在静态存储区内分配了存储单元,在程序整个运行期间不会释放,所以调用函数时,只赋初值一次,以后再调用函数时,c中的值为上次调用函数时的值。执行for循环,当i=0时,fun(5)=5+1+4=10,此时c=4;当i=1时,fun(5)=5+1+5=11,此时c=5;当i=2时,fun(5)=5+1+6=12;此时c=6:当i=3时,退出for循环,并输出回车换行符。

30.11解析:本题中的ch是一个字符变量,其初始值为'$'(非0值即为真),所以!ch的结果为假,此时&&右边的i++被“短路”,即不会被计算。由此可见,i的值不会改变,故本题应该填1。

31.rewind或fseekrewind或fseek解析:本题考查文件的定位。在对文件进行操作的过程中,若要求文件的位置指针回到文件的开头,可以调用rewind函数或fseek函数来完成。其中,rewind函数的作用是将位置指针重新返回文件的开头;而fseek函数也可以实现文件指针的定位。

32.模块模块

33.a[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)max<min或min>max或max<=min或min>=maxa[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)\r\nmax<min或min>max或max<=min或min>=max解析:本题有两层for循环,主函数中定义了整型变量row、col、max和min,其中row用来存放外循环中的循环次数,col用来存放内循环中的次数,max记录每行中的最大值,min记录所有行中最大值中的最小值。在内循环中,首先给max赋初值为每行的第0列元素值,然后从第一列开始依次与max进行比较。如果大于max则将其值赋给max,当每一行循环结束,max记录了每一行的最大值。所以第一个空应该填a[row][col]>max或a[row][col]>=max。退出内循环,在第一次退出内循环时,将min赋初值为第0行的max,然后在每次退出内循环时,将min和每行的max比较,如果大于max,则将max值赋min,所以第二个空应该填max>min或mm>max,当退出外循环时,min为所有行中的最大值的最小值。

34.xx解析:函数的定义形式为;

函数类型函数名(形参表)

{

类型说明语句;

执行语句;

}

本题中函数的功能是:累积变量以求得变量的Y次方。

35.数据模型数据模型

36.继承继承解析:在面向对象的程序设计方法中,某些属性和方法是可以共享的,由于类从父类中继承而来,这样提高了软件的可重用性。

37.顺序顺序

38.上溢上溢解析:入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rear+1),并当rear=m+1时置rear=1;然后将新元素插入队尾指针指向的位置。当循环队列非空(s=1)时且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为“上溢”。

39.

40.efghefgh解析:本题考核的知识点是通过指针引用字符串.函数“的作用是让形参指针s指向该字符串的右半部分.主函数中首先定义了一个字符型指针变量p和字符型指针str;并初始化为“abcdefgh”,然后调用函数ss,将实参str传给形参s,因此可知该函数返回的指针,指向str所指的字符串“abcdefgh”的右半部分,即指向字符串“efgh”,所以最后输出指针p(指针p的值为调用函数ss(sD)的返回值)所指向的字符串为“efgh。

41.B解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(0.,5,&a),10和5属于值传递,a是属于地址传递,也就是a与z指向了同一个存储单元,在执行函数后,a的值随*z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。

42.C解析:关于软件测试的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。本题答案为C。

43.B解析:C语言在预编译时遇到带实参的宏名,则按命令行中指定的字符串从左到右进行置换。在做这题时,也不妨运用置换法。得到a/=k+m*k+m/k+m*k+m=16/7=2。注:a为整型,所以在做除法时,自动取整。

44.A解析:本题考查两个概念:①用单引号括起来的一个字符常量只能存放一个字符;②C语言中没有字符串变量,只能用字符数组来存储字符串。

选项A)中一个单引号内放了若干个字符是错误的;选项B)和选项D)选项中将一个字符串赋值给一个字符数组是允许的。

45.A解析:本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有下列5种:①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

46.A解析:swapl(a,a+1)是将a,a+1的地址进行传递,运行swapl以后,a[0],a[1]的值不发生改变,而swap2(&b[0],&b[1])是将两个指针所指的元素进行传递,运行swap2后,b[0]与b[1]的值互换。

47.C解析:算法的执行效率与数据的存储结构密切相关。算法的空间复杂度是指算法执行过程中所需的存储空间。

48.CC。【解析】软件工程是指将工程化的思想应用于软件的开发、应用和维护的过程,包括软件开发技术和软件工程管理。

49.B解析:在C语言中,宏定义是直接替换的,所以在c+a>b?a:b这个条件表达式中,c+a>b为真,所以用a的值作为整个表达式的值,而a的值为5,所以整个表达式的值为5。

50.C解析:通过行指针p来实现数组元素的引用。注意:用格式说明符%s进行整串输入与输出。

51.A解析:-1为带符号的整型数,在内存中的存放形式为1111111111111111。按带爷号的整型格式输出仍为-1;按无带符号的整数输出为65535(将1111111111111111转换为十进制数);按八进制数输出为177777(将1111111111111111转换为八进制数,方法为由低位到高位,每三位一组,用一个八进制数代替);按八进制数输出为ffff(将1111111111111111转换为十六进制数,方法为由低位到高位,每四位一组,用一个十六进制数代替)。

52.B

53.D解析:在C语言所有的运算符中,逗号运算符的优先级最低。C语言中区分大小写,所以APH和aph是两个不同的变量。赋值表达式a=b表示将b的值付给a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。

54.D解析:观察程序可知,a实际上就是数组a的首地址,所以“*(a+i)”表示的就是数组a中的第i个元素的值,进而,我们可以知道*(*(a+i))必然不是对a数组元素的正确引用。

55.C解析:本题主要考查了结构体变量引用成员数据的方法,主要有以下几种:结构体变量名.成员名或结构体指针->成员名的方法来引用结构体成员。

56.C解析:关系代数是以集合代数为基础女发展起来的,它是以关系代数作为运算对象的一组高级运算的集合。它的基本操作是并、交、差、笛卡尔积,另外还包括针对数据库环境专门设计的操作,包括对关系进行垂直分割(投影)、水平分割(选择)、关系的结合(连接)等。

57.A解析:让考生对常用的软件结构设计工具要有较深入的了解。常用的软件结构设计工具是结构图(SC-structureChart),也称程序结构图。其中,矩形内用于注明模块的功能和名字;箭头表示模块间的调用关系,带实心圆的箭头表示传递的是控制信息,带空心圆的箭头表示传递的是数据。注意:根据结构图设计思想,了解结构图构成的基本形式。

58.C解析:本题中首先输出逗号表达式“a=a+a,a+b,b”的值,即20。然后以八进制的形式输出a+'a'-'A'的值为97对应的八进制数141,由于最后一个表达式b没有对应输出格式的输出项表列就不会输出。

59.C解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算的工具以及程序员的水平无关。选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误,因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。选项D错误,因为根据一个算法所编制出的程序之中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。所以,本题正确答案为C。

60.A

61.B要想表示字符串常量应该用双引号表示,即“cd”,单引号用于表示字符常量,所以B选项中的表示方法错误。

62.AA)选项中*f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,因此不能将其赋值给整型变量k。

63.C“P”是指针变量,指向一个地址:“*P”为P指针所指向地址的内容“&”是取变量地址。

64.Dp是存放最小下标的变量,而if后的表达就是实现这个}j的的,当if成立时,就把小的下标放到p中,故选择D选项。

65.C函数f的功能是将数组中第3、4、5、6个元素乘以2,因此f(a)操作的结果是将元素(3,4,5,6)乘以2,操作结束后,数组a为(1,2,6,8,10,12,7,8,9,10)。

66.A条件表达式:X----表达式l?表达式2:表达式3的含义是:先求解表达式1,若其值为非0(真),则求解表达式2,将表达式2的值赋给x,若表达式1的值为o(假),则求解表达式3,将表达式3的值赋给x。在本题中与表达式(x_y)等价的是(x—y<011x—y>0),A选项正确。

67.B

68.B解析:本题考查数据库系统的基本概念和知识。

数据库系统除了数据库管理软件之外,还心须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等。对于大型的多用户数据库系统和网络数据库系统,还需要多用户系统软件和网络系统软件的支持。因此,选项A的说法是错误的。

数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它们所需要的子集,而且容许子集任意重叠。数据库的根本目标是要解决数据的共享问题。因此,选项B的说法是正确的。

通常将引入数据库技术的计算机系统称为数据库系统。一个数据库系统通常由五个部分组成,包括相关计算机的硬件、数据库集合、数据库管理系统、相关软件和人员。

因此,选项C的说法是错误的。

因此,本题的正确答案是选项B。

69.A

70.A本题考查数组作为函数形参与实参的使用。题目给出的程序分为两个部分,一个是函数func,该函数有两个形参,一个为整型的指针a,一个为整型的数组b[],这里的b只是一个形参数组名,与main函数中的数组b没有关系。为了区别,将func函数中的数组b用b’表示。func函数实现的功能是将指针a所指向的整型值*a与6相加,并将结果放入数组b’[0]处。main函数首先对整型数据a和数组b进行初始化,初始化后a的值为0,数组b中第一个值b[0]=3。初始化结束后,对函数func进行调用。应当注意,调用函数func时,是将数组b的数组名作为函数的实参。这样调用的结果就是没有把数组元素的值传递给形参数组,而是把实参数组的起始地址传递给形参,b和b’共占有同一段内存,这样形参数组中的值发生变化也将导致实参数组中的值发生变化。题目中虽然main函数初始化使得b[0]=3,但是在调用func函数的过程中,作为该函数形参的数组b’有b’[0]=*a+6=6,故main函数中的实参数组b[0]值也发生改变,变为6。

71.C算术运算符+的优先级高于-=.且-=的结合方向为自右向左,所以表达式x-=x+x可以表示成;=x-(x+x)=10-(10+10)=-10,选择C。

72.D

73.D

74.B

75.A声明data是结构S的数组。初始化时data[0].a=10;data[0].b:104);data[1].a=20;data[1].b=200。主函数中p=data[1];即p.a=data[1].a;p.b=data[11.b;执行语句prinff(”%dkn”,++(p.A));打印输出时p.a先增l再打印。即p.a=data[1].a=20,先增1等于21,因此程序运行结果是21。

76.D本题考查的是文件的综合应用。本题首先以创建方式打开文件”d2.dat”,两次调用fprintf函数把a[O],a[1],a[2],a[3],a[4],a[5]的值写到文件”d2.d8t”中,文件”d2.dat”的内容为:1,2,3<回车>4,5,6。然后把该文件关闭再以只读方式打开,文件位置指针指向文件头,再通过fs-canf函数从中读取两个整数到k和n中,由于格式符之间无间隔,因此输入数据可以用回车隔开,故输入的k的值为123,n的值为456。

77.AA)选项:再能将一个字符串赋值给一个字符变量,所以选择A)。

78.Dfloat是4个字节,int是两个字节。当用int取float的值时,只取前两个字节

79.C

80.B

\n本题考查switch语句及break的用法。第一个switch语句,因为a=6.a%2=0,所以执行“case0,m++;”,将m加1,遇到break语句跳出switch语句,结束循环。不执行下面的switch。

\n

81.

82.

【解析】要删除字符串尾部的所有*,只要将尾部所有*中的第一个改为字符串结束符即可。首先,将字符串指针移动到字符串最后一个位置,检查最后一个字符,是*则将指针前移,否则将指针后移一个位置赋值作为结束符。

2021年福建省厦门市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有说明:charw;intx;f1oaty;doublez;则表达式w*x+z-y值的数据类型为()。

A.floatB.charC.intD.double

2.

3.下述程序的输出结果是()。#include<stdio.h>voidmain(){chara=1,b=2;charc=a^b<<2;printf("\n%d",C);}

A.9B.10C.12D.2

4.下面不正确的字符赋值或赋初值的方式为()。

A.chars[10]=”hello!”

B.chars[10]={‘h’,‘e’,‘l’,‘l’,‘o’,‘!’}

C.chars[10];s=”hello”

D.char[]=”hello!”

5.算法的时间复杂度是指______。

A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数

6.有以下程序#include<stdio.h>main{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是()。A.741B.963C.852D.875421

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

8.设有以下语句

charx=3,y=6,z;

z=x^y<<2;

则z的二进制值是

A.00010100B.00011011C.00011100D.00011000

9.若输入“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

10.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()。

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

11.

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

B.1111110100011001

C.0000001011100010

D.1100000000101000

13.在inta=3,int*p=&a;中,*p的值是()。

A.变量a的地址值B.无意义C.变量p的地址值D.3

14.设二维数组A[1...m,1...n]按行存储在数组B中,则二维数组元素A[i,j]在一维数组B中的下标为()。A.A.n*(i-1)+jB.n*(i-1)+j-1C.i*(j-1)D.j*m+i-1

15.执行下面程序中的输出语句后,输出结果是()。A.65B.20C.15D.10

16.

17.在一个有头结点的链队列中,假设f和r分别为队首和队尾指针,则插入s所指的结点的运算是()。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.s->next=r;r=s;

D.s->next=f;f=s;

18.广义表((a),a)的表头是()。

A.aB.()C.(a)D.((a))

19.将线性表中的结点信息组织成平衡的二叉树,其优点之一是总能保证任意检索长度均为log2n量级(n为线性表中的结点数目)()

A.对B.错

20.

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

#include<stdio.h>

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

22.函数pi的功能是根据以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+…+1(n*n)

现在请你在下面的函数中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*3));

}

23.下面程序的运行结果是()。

#include<stdio.h>

main()

{inta=25;

fun(&A);

}

fun(int*x)

{printf("%d\n",++*x);

}

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

#include<stdio.h>

main()

{inta=5,b=4,c=3,d;

d=(a>b>c);

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

}

25.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。

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

inta=1234;

printf("%2d\n",a);

27.与表达式a+=b等价的另一书写形式是______。

28.以下程序用来输出结构体变量student所占存储单元的字节数,请填空。

structst

{charname[20];doublescore;

};

main()

{structststudent;

printf("studentsize:%d\n",sizeof(【】));

}

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

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

prind("\n");

}

30.己定义charch='$';inti=l,j;,执行j=!ch&&ii++以后,i的值为【】。

31.在对文件进行操作的过程中,若要求文件的位置指针重新指向文件的开头,应当调用的函数是【】函数。

32.软件结构是以【】为基础而组成的一种控制层次结构。

33.fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{

introw,col,max,min;

for(row=0;row<N;row++

{

for(max=a[row][0],col=1;col<N;col++)

if(【】)max=a[row][col];

if(row==0)min=max;

elseif(【】)min=max;

}

returnmin;

}

34.以下函数的功能是求x的y次方,请填空。

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

returnz;

}

35.【】是数据库设计的核心。

36.在面向对象方法中,类之间共享属性和方法的机制称为______。

37.当线性表的元素总数基本稳定,且很少进行插入和删除操作,并要求以很快的速度存取线性表中的数据元素时,应采用【】存储结构。

38.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【】。

39.以下程序的功能是根据输入的“y”(“Y”)与“n”(“N”),在屏幕上分别显示出“ThisisYES.”与“ThisisNO.”。空白处需要填入的内容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case'y':

case'Y':printf("\nThisisYES.\n");

case'n':

case'N':Printf("\nThisisNO.\n");}}

main()

{charch;

printf("\nEnte

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

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf('%s\n",p);

}

三、1.选择题(20题)41.请选出以下程序的输出结果______。#include<stdio.h>sub(x,y,z)intx,y,*z;{*z=y-x:}main(){inta,b,c;sub10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%d,%d,/%d\n",a,b,c);}

A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7

42.下列对于软件测试的描述中正确的是()。

A.软件测试的目的是证明程序是否正确

B.软件测试的目的是使程序运行结果正确

C.软件测试的目的是尽可能多地发现程序中的错误

D.软件测试的目的是使程序符合结构化原则

43.以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=16,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}

A.16B.2C.9D.1

44.下列字符数组初始化语句中,不正确的是()。

A.charc[]=\goodmorning';

B.charc[20]="goodmorning";

C.charc[]={'a','b','c','d');

D.charc[]={"goodmorning");

45.若有定义:"inta[2][3];"则对a数组的第i行第j列无素的正确引用为()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

46.有以下程序:voidswapl(intc0[],intc1[]){intt;t=co[o];co[o]=o1[o];c1[o]=t;}voidswap2(int*c0,int*c1){intt;t=*c0;*c0=*c1;*c1=t;}main(){inta[2]={3,5},b[2]=A{3,5);swapl(a,a+1);swap2(&b[0],&b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}程序运行后的输出结果是______。

A.3553B.5335C.3535D.5353

47.下列叙述中正确的是()。

A.算法的执行效率与数据的存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.以上三种描述都不对

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

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

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

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

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

49.有如下程序段:#include<stdio.h>#defineMax(a,b)a>b?a:bmain(){inta=5,b=6,c=4,d;d=c+Max(a,b);printf("%d",d);}其输出结果为______。

A.10B.5C.6D.编译错误

50.如下程序的输出结果是#include<stdio.h>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

51.若有如下程序;main(){intm=-i;printf("%d,%u,%o,%X",m,m,m,m);}则程序运行后的输出结果是()。

A.-1,65535,177777,ffff

B.-1,-1,177777,fffe

C.-1,1,177777,ffff

D.-1,65535,177776,fffe

52.若变量已正确定义并赋值,下面符合C语言语法的表达式是______。

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

53.以下不正确的叙述是A.A.在C程序中,逗号运算符的优先级最低

B.在C程序中,APH和aph是两个不同的变量

C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变

D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

54.设有以下语句,其中不是对a数组元素的正确引用的是:______(其中O≤i<10)inta[10]={0,1,2,3,4,5,6,7,8,9,},*p=a;

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

55.设有如下定义:structsk{intn;floatx;}data,*p;若要使p指向data中的n域,正确的赋值语句是

A.p=&data.n;

B.*p=data.n;

C.p=(structsk*)&data.n;

D.p=(structsk*)data.n:

56.关系代数运算是以______为基础的运算。

A.关系运算B.谓词运算C.集合运算D.代数运算

57.在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示______。A.A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向

58.已知字母A的ASCII码值是65,字母a的ASCII码值是97,以下程序______。main(){chara='A';intb=20;printf(%d,%0",(a=a+a,a+b,B),a+'a'-'A',B);}

A.表达式非法,输出零或不确定值

B.因输出项过多,无输出或输出不确定值

C.输出结果为20,141

D.输出结果为20,141,20

59.算法的时间复杂度是指______。

A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数

60.以下能正确表示x在-5到-1或5到1范围(含5和1)内,值为“真”的表达式是()

A.(x>=-5)||(x<=-1)&&(x<=5)&&(x>=1)

B.!(x>=-5||x<=-1&&x<=5||x>=1)

C.x<-5&&x>-1||x<1&&x>5

D.(x<-5)||(x>-1&&x<1)||(x>5)

四、选择题(20题)61.以下选项中不能作为c语言合法常量的是()。.

A.0.1e+6B.’cd’.C.”、a”D.’\011

62.有以下程序则以下函数调用语句错误的是()。

A.k=*f(a,b);B.k=add(a,b);C.k=(*f)(a,b);D.k=f(a,b);

63.若有定义“floata=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为()。

A.两个语句都是将变量a的值赋予变量P

B.*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P

C.*p=a是将变量a的值赋予变量b,而&a是使P指向变量a

D.两个语句都是使P指向变量a

64.以下函数返回a所指数组中最小的值所在的下标值:fun(int*a,intn){inti,j=0,P;p=j;for(i=j;i<n;i++)if(a[i]<a[j])____return(p);}在下划线处应填入的是()。A.i=PB.a[p]=a[i]C.p=jD.p=i

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

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

B.1,2,3,4,10,12,14,16,9,10,

C.1,2,6,8,10,12,7,8,9,10,

D.1,2,6,8,10,12,14,16,9,10,

66.若有定义intx'y;并已正确给变量赋值。则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x_y)等价的是()。

A.(x-y011x-y>0)B.(x-y<0)C.(x-y>0)D.(x-y=o)

67.

68.下列叙述中正确的是()。

A.数据库系统是一个独立的系统,不需要操作系统的支持

B.数据库技术的根本目标是要解决数据的共享问题

C.数据库管理系统就是数据库系统

D.以上三种说法都不对

69.

70.有以下程序

voidfunc(int*a,intb[])

{b[0]=*a+6;}

main()

{inta,b[5]={0};

a=0;b[0]=3;

func(&a,b);

rintf("%d\n",b[0]);

}

程序的运行结果是

A.6B.7

C.8D.9

71.若有定义语句:intX=10;,则表达式x-=x+x的值为()。

A.0B.-20C.-10D.10

72.

73.

74.

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

A.21B.11C.20D.10

76.有以下程序:

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

A.12B.14C.1234D.123456

77.有以下定义语句,编译时会出现编译错误的是()。

78.有以下程序,其输出结果是()。

voidmain()

{

floarx=1;

inty;

x++;

y=x+1;

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

}

A.x=2,y=3

B.x=2,y=3.0

C.x=2.0,y=3

D.x=0,y=0.000000

79.

80.

有下列程序:

#include<stdio.h>

main

{inta=6,b=7,m=1;

switch(a%2)

{case0:m++;break;

case1:m++;

switch(b%2)

{default:m++;

case0:m++;break;

}

}

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

}

程序的运行结果是()。

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

五、程序改错题(1题)81.下列给定程序中,函数proc()的作用是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。

例如,若输入“I,anl,A,Student”,则输出“i,am,a,student”。

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

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

试题程序:

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

参考答案

1.D

2.C

3.A

4.C

5.C解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算的工具以及程序员的水平无关。选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误,因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。选项D错误,因为根据一个算法所编制出的程序之中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。所以,本题正确答案为C。

6.C在for循环中,当y的值为9、6或3时,执行输出语句,输出表达式--Y的值。Y先自减l,然后再输出y的值。

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

8.B本题主要考查位运算。“按位异或”运算(^)是双目运算符,其功能是把参与运算的两数各对应的二进制位相异或,它在操作时,两对应位相同结果为0,不同则为1。“左移”运算(<<)的功能是把“<<”左边的运算数的各二进制位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。左移时,若左端移出的部分不包含有效二进制数1,则每左移一位,相当于移位对象乘以2。

本题中,有三个字符型的变量x,y,z,其中x和y的值分别为3和6。先转换为二进制数分别为00000011和00000110。本题中需要注意的是逻辑左移运算符的优先级比按位异或运算符的优先级高,因此,先将y进行运算逻辑左移2位操作,得到的结果为00011000,然后进行按位异或运算,得到最后的结果是00011011。本题正确的答案选B。

9.A

10.C

11.D

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

13.D

14.A

15.B

16.D

17.B

18.C

19.A

20.C

21.246246解析:本题考查静态(static)局部变量的使用。fun函数中的静态局部变量a所占用的存储单元在程序运行过程中始终不释放,即当下一次调用该函数时,该变量仍然保留上一次函数调用结束时已有的值,3次调用fun函数分别得到2,4,6。

22.1.0/(i*i)或(double)1/(i*i)1.0/(i*i)或(double)1/(i*i)解析:表达式1+1/(2*2)+1/(3*3)+…+1(n*n)可写为1/(1*1)+1/(2*2)+1/(3*3)+…+1(n*n)

n

即;∑1÷(i×i)

i=1

对应的C语言的表达式s=s+1.0/

温馨提示

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

评论

0/150

提交评论