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

下载本文档

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

文档简介

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

一、单选题(20题)1.若有以下说明:chars1[]={"tree"},s2[]={"flower"};,则以下对数组元素或数组的输出语句中,正确的是()。

A.printf("%s%s",s1[5],s2[7]);

B.printf("%c%c",s1,s2);

C.puts(s1);puts(s2);

D.puts(s1,s2);

2.有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);}程序运行后的输出结果是

A.12B.123C.234D.345

3.表达式“(int)((double)9/2)-9%2”的值是()。

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

4.两个或两个以上模块之间关联的紧密程度称为()。

A.耦合度

B.内聚度

C.复杂度

D.数据传输特性

5.若要用函数fopen打开一个新的二进制文件,该文件要既能读也能写,则应以哪种方式打开文件()。

A.wbB.wb+C.rb+D.rb

6.十六进制数BB转换成十进制数是()

A.192B.256C.187D.121

7.

8.x>0||y==5的相反表达式为()。

A.x<=0||y!=5B.x<=0&&y!=5C.x>0||y!=5D.x>0&&y==5

9.有以下程序:#include<stdio.h>main(){structSTU{charname[9];charsex;doublescore[2];};structSTUa={“Zhao”,‘m’,85.0,90.0},b={“Qian”,‘f’,95.0,92.0};b=a;printf(“%s,%c,%2.0f,%2.0f\n”,,b.sex,b.score[0],b.score[1]);}程序的运行结果是()。

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

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

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

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

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

12.同一个关系模型的任意两个元组值()。

A.可以全相同B.不能全相同C.必须全相同D.以上都不对

13.在C++中,一个函数带有参数说明时,则参数的默认值应该在()中给出。A.函数定义B.函数声明C.函数定义或声明D.函数调用

14.

15.数据结构通常研究数据的()及运算。

A.物理结构和逻辑结构B.存储和抽象C.理想和抽象D.理想与逻辑

16.

17.有以下程序:#include<stdio.h>main(){inta;scanf("%d",&a);if(a++<9)printf("%d\n",a);clscprintf("%d\n",a--);}程序运行时从键盘输入9<回车>,则输出结果是()。A.10B.11C.9D.8

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

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

19.有如下程序:#include<stdio.h>msin(){chars[]="ABCD",*P;for(p=s+1;p<s+4;p++)Printf("%s\n",p);}该程序的输出结果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

20.有以下程序:#include<stdio.h>main(){charch=‘1’;while(ch<‘9’){printf(“%d”,ch-‘0’);ch++;}}程序运行后的输出结果是()。

A.12345678B.01234567C.0D.1

二、2.填空题(20题)21.数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、数据独立性和数据统一管理与控制。

22.衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准,其中()是度量一个模块功能强度的一个相对指标。

23.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。

24.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。

#include<stdio.h>

main()

{inti,j;

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

{j=i*10+6;

if(【】)continue;

printf("%d",j);

}

}

25.数据库系统中实现各种数据管理功能的核心软件称为【】。

26.关系模型的数据操作即是建立在关系上的数据操作,一般有【】、增加、删除和修改四种操作。

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

28.算法的复杂度主要包括时间复杂度和______复杂度。

29.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。

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

intx=0,y=0;

while(x<15)y++,x+=++y;

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

31.若运行输入:3<回车>,则以下程序的输出结果是()。main(){inta,b;scanf("%d",&A);b=(a>=0)?a:-a;printf("b=%d",B);}

32.软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于【】阶段。

33.以下程序的输出结果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}

34.在计算机软件系统的体系结构中,数据库管理系统位于用户和【】之间。

35.语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个血型数据。

36.函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,当s<t时返回负值。请填空。

my_cmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}return【】;

}

37.关系数据库的关系演算语言是以【】为基础的DML语言。

38.设有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

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

39.若有如下程序:

main()

{intx=4,y=1;

printf("%d\n",sub(x,sub(x,y)));}

sub(inti,intj)

{staticinta=0;

intb=2;

a+=i+b;

b+=j+a;}

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

40.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

三、1.选择题(20题)41.若已定义

inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;

其中则对a数组元素不正确的引用是

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

42.当k的值不为0时,在下列选项中能够将k的值赋给变量m,n的是

A.m=k=n

B.(m=k)&&(n=k)

C.(m=k)||(n=k)

D.(k=m)&&(n=k)

43.语句“printf("%d\n",12&012);”的输出结果是______。

A.12B.8C.6D.12

44.下面程序段中c的二进制值是______。chara=3,b=6,c;c=a^b<<1;

A.1011B.1111C.11110D.11100

45.有以下程序:main(){intx=3,y=2,z=1;printf("%d\n",x/y&~z);}程序运行后的输出结果是()。

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

46.下列语句所定义字符串在内存中占的字节数是______。char*s="\'Name\'\\\'Age\'\n";

A.定义中有语法错误B.20C.19D.14

47.设变量已正确定义,则以下能正确计算f=n!的程序段是______。

A.f=0;for(i=1;i<=n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

48.若定义inta=10,则表达式a+=a-*=a的值是()。

A.0B.-180C.-100D.-90

49.以下程序段的执行结果为#definePLUS(X,Y)X+Ymain(){intx=1,y=2,z=3,sum;sum=PLUS(x+y,z)*PLUS(y,z);printf("SUM=%d",sum);}

A.SUM=9B.SUM=12C.SUM=18D.SUM=28

50.程序中若有如下说明和定义语句:charfun(chat*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;}以下选项中对函数fun的正确调用语句是()。

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

51.设x=011050,则x=x&01252的值是()。

A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

52.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}该程序的输出结果是______。

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

53.若有下面的程序片段:

int[12]={0},*p[3],**pp,i;

for(i=0;i<3;i)

p[i]=&a[i*4];

pp=p;

则对数组元素的错误引用是

A.pp[0][1]B.a[10]C.p[3][1]D.*(*(p+2)+2)

54.两次运行下面的程序,如果从键盘上分别输入3和2,则输出结果是()。#include<stdio.h>main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf(“%d\n",x--);}

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

55.有以下程序;charfun(charx,chary){if(x<y)returnx;returny;}main(){inta='9',b='8',c='7';printf("%c\n",fun(fun(a,B),fun(b,C)));}程序的执行结果是

A.函数调用出错B.8C.9D.7

56.设有定义:intn=0,*p=&n,**q=&p;则下列选项中正确的赋值语句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

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

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

58.下面叙述正确的是______。A.算法的执行效率与数据的存储结构无关

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

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

D.以上三种描述都不对

59.下面程序的输出结果是()main(){intx=10,y=3;printf("%d\n",y=x/y);}

A.0B.1C.3D.不确定的值

60.C语言提供的合法关键字是()

A.switchB.cherC.caseD.default

四、选择题(20题)61.有以下程序段

#include"stdio.h"

main()

{intj,i,k=0;

for(j=50;j<=60;j++)

{if(!(k%10))printf("\n");

for(i=2;i<j;i++)if(!(j%i))

break;

if(i>=j-1)

{printf("%d",j);

k++;}

}

}

程序执行后输出的结果是

A.5359B.5953

C.3595D.9535

62.(33)有以下程序段

inti,n;

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

{n=rand()%5;

switch(n)

{case1:

case3:printf("%d\n",n);break;

case2:

case4:printf("%d\n",n);continue;

case0:exit(0);

}

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

}

以下关于程序段执行情况的叙述,正确的是

A)for循环语句固定执行8次

B)当产生的随机数n为4时结束循环操作

C)当产生的随机数n为1和2时不做任何操作

D)当产生的随机数n为0时结束程序运行

63.main(intargc,char*argv[]){while(--argc>0)printf("%s",argv[argc]);printf("\n");}假定以上程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入PROGABCDEFGHIJKL,则输出结果为______。

A.ABCDEFGB.IJHLC.ABCDEFGHIJKLD.IJKLABCDEFGH

64.

65.

66.

有以下程序:

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.编译有错

67.有以下程序:

#include<stdio.h>

#defineS(x)4*(x)*x+1

main()

{intk=5,j=2;

printf("%d\n",S(k+j));

}

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

A.197B.143C.33D.28

68.有以下程序程序的运行结果是()

A.8,5,4,2,B.8,7,5,2C.9,7,6,4,D.7,4,2,

69.当变量c的值不为2、4、6时,值也为”真”的表达式是()。

A.(c>=2&&c<=6)&&(c%21=1)

B.(c==2)ll(e==4)II(C==6)

C.(C>=2&&c<=6)&&!(c%2)-

D.(c>=2&&c<=6)Il(c!=3)I|(C!=5)

70.

71.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。

A.-369B.369C.0.369D.整数集合{1,2,3,4,5}

72.

73.有以下程序

#include<stdio.h>

main

{intn,*p=NULL;

*p=&n;

printf("Inputn:");

scanf("%d",&p);

printf("outputn:");

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

}

该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是

A.intn,*p=NULL;B.*p=&n;

C.scanf("%d",&p)D.printf("%d\n",p);

74.以下程序中,函数sort的功能是对a数组中的数据进行由大到小的排序。

voidsort(inta[],intn)

{inti,j,t;

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

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

if(a[i]<a[j])

{t=a[i];a[i]=a[j];a[j]=t;}

}

main()

{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;

sort(&aa[3],5);

for(i=0;i<10;i++)printf("%d,",aa[i]);

printf("\n");

}

程序运行后的输出结果是

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

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

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

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

75.

76.已知inti=10;表达式“20-0<=i<=9”的值是()。

A.0B.1C.19D.20

77.阅读下列程序,当运行函数时,输入abcdefgzl0,则输出为()。

A.abcB.zl0C.abcdefgzl0abcdefgzl0D.abcdefgzl0

78.对如下二叉树进行后序遍历的结果为()。

A.A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

79.设有数组定义:chararray[]="China";则数组array所占的空间为()。

A.4个字节

B.5个字节

C.6个字节

D.7个字节

A.EFGHIJABCD

B.bcdefghij

C.abdefCghij

D.不确定的值

80.(70)需求分析阶段的任务是确定()

A.软件开发方法

B.软件开发工具

C.软件开发费用

D.软件系统功能

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:根据输入的:个边长(整型值),判断能否构成三角形:若能构成等边三角形,则返回3;若是等腰三角形,则返回2;若能构成三角形则返回l;若不能,则返回0。

例如,输入3个边长为3,4,5,实际输入时,数与数之间以Enter键分隔而不是逗号。

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

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

试题程序:

#include<stdio.h>

#include<math.h>

intproc(inta,intb,intc)

{

if(a+b>c&&b-c>a&&a+c>b)

{

if(a==b&&b==c)

//****found****

return1;

elseif(a==b||b==C||a==c)

return2;

//****found****

elsereturn3;

}

elsereturn0;

}

voidmain

{

inta,b,c,shape;

printf("\nInputa,b,c:");

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

printf("\na=%d.b=%d,c=%d\n",a,b,c);

shape=proc(a,b.c):

printf("\n\nTheshape:%d\n",shape);

}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),该函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如,若二维数组中的值为13579299946999813570则函数值为61。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include2#include3#include4#defineM45#defineN56intfun(inta[m][n])7{89}10voidmain()11{12FILE*wf;13intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};14inti,j,y;15system("CLS");16printf("Theoriginaldatais:\n");17for(i=0;i<m;i++)18{for(j=0;j<n;j++)19printf("%6d",aa[i][j]);20printf("\n");21}22y=fun(aa);23printf("\nThesum:%d\nM,y);24printf("\n");25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%d",y);28fclose(wf)29/******************/30}

参考答案

1.C

2.D解析:本题考查的是二维数组元素在内存中的排列形式。虽然二维数组成多维数组从结构上来看不是线性的,但是在C语言中,这些数组元素在内存中的排列是连续线性存放的。它们的排列规则是:第一维下标变化最慢,最右边的下标变化最快.例如本题中定义的二维数组a[3][3]中9个元素在内存中的排列顺序是:a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],a[2][0],a[2][1],a[2][2]。在主函数中,首先定义了二维数组a[3][3],然后定义了一个指针p指向数组a的第1个元素a[0][0]。在第一个for循环中,依数组a在内存中的排列顺序为其元素赋从0~8九个值,然后用第二个for循环依次输出a[1][0],a[1][1],a[1][2]三个元素的值。所以,4个选项中选项D符合题意。

3.B先将int型数据9强制转换成double型,然后除以2,得到的结果与double型保持一致,即4.5;然后将4.5强制转换成int型数据4,再计算9%2的值为1;最后计算4-1的值为3。故本题答案为B选项。

4.A解析:本题考核模块独立性的评价。评价模块独立性的主要标准有两个;一是模块之间的耦合,它表明两个模块之间互相独立的程度,也可以说是两个或两个以上模块之间关联的紧密程度(所以,本题的正确答案为选项A);二是模块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。

5.B解析:本题考查文件使用方式标识符。方式“wb”为输出打开一个二进制文件;方式“wb+”为读写建立一个新的二进制文件;方式“rb+”为读写打开一个二进制文件:方式“rb”为输入打开一个二进制文件。

6.C

7.C

8.B

9.B在main函数中将结构体变量a赋值给变量b。输出结构体变量b的值为:Zhao,m,85,90。故本题答案为8选项。

10.B

11.A

12.B关系具有以下7个性质。①元组个数有限性:二维表中元组的个数是有限的。②元组的唯一性:二维表中任意两个元组不能完全相同。③元组的次序无关性:二维表中元组的次序,即行的次序可以任意交换。④元组分量的原子性:二维表中元组的分量是不可分割的基本数据项。⑤属性名唯一性:二维表中不同的属性要有不同的属性名。⑥属性的次序无关性.二维表中属性的次序可以任意交换。⑦分量值域的同一性:二维表属性的分量具有与该属性相同的值域,或者说列是同质的。满足以上7个性质的二维表称为关系,以二维表为基本结构所建立的模型称为关系模型。本题答案为B选项。

13.CC程序中函数可以在说明或定义时给一个或多个参数指定默认值,但是不能在函数说明定义时同时指定默认参数,默认参数值应该在函数名第一次出现时指定。

14.A

15.A

16.D

17.A本题考查简单的运算符操作.当输入9时,(a++<9)为假,所以执行else语句中的printf("%d\n",a--),在执行时此时a经过a++操作a=10,所以答案为A。

18.A

19.D解析:本题考查指向字符串指针的运算方法。执行p=s+1后,指针变量p就指向字符串中的第二个字符“B”,然后输出字符串“BCD”并换行;下面继续执行循环语句,指针变量p指向下一个字符“C”,输出字符串“CD”,最后一次循环,p指向字符“D”,输出字符串“D”。

20.A表达式“ch-‘0’’将数字字符转为数字。输出的格式为%d。while循环从‘1’~‘8’,因此输出的结果是12345678。故本题答案为A选项。

21.共享性共享性解析:数据库技术的主要特点有以下几个方面:数据的集成性,数据的高共享性与低冗余性,数据的独立性,数据统一管理与控制。

22.内聚性内聚性解析:模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。内聚性是度量一个模块功能强度的一个相对指标,耦合性则用来度量模块之间的相互联系程度。

23.交换排序交换排序解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。

24.i<=9或i<10或9>=i或10>ij%3!=0或j%3i<=9或i<10或9>=i或10>i\r\nj%3!=0或j%3

25.数据库管理系统数据库管理系统(DBMS)

26.查询查询解析:关系模型的数据操作即是建立在关系上的数据操作,一般有查询、增加、删除和修改四种操作。数据查询是指用户可以查询关系数据库中的数据,它包括一个关系内的查询以及多个关系间的查询。数据删除的基本单位是一个关系内的元组,它的功能是将指定关系内的指定元组删除。数据增加仅对一个关系而言,在指定关系中插入一个或多个元组。数据修改是在一个关系中修改指定的元组和属性。

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

28.空间空间解析:算法的复杂度主要包括时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量。一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

29.类类解析:在面向对象方法中,类描述的是具有相似属性与操作的一组对象。

30.8208,20解析:本题考查while循环和++运算符的运用。x=0符合条件x<15,则执行y++,x+=++y后,y=1,x=0+2=2后y=2,符合条件继续循环,y=3,x=x+4=6后y=4,再循环y=5,x=x+6=6+6=12后,y=6,继续循环y=7,x=x+8=12+8-20,此时y=8。

31.b=3b=3解析:条件表达式的基本格式为:“表达式1?表达式2:表达式3”;其功能是:表达式1的值若非0,则计算表达式2的值,且为最终结果;若表达式1的值为0,则计算表达式3的值,且为最终结果。因为a=3,则a>=0成立,所以b=a=3。

32.开发开发解析:软件生命周期(SDLC,软件生存周期)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,其中的编码和测试属于开发阶段。

33.JD

34.操作系统或OS操作系统或OS解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务。位于用户和操作系统之间。

35.ptrptr解析:本题考查函数指针的概念。函数指针的定义格式是:类型标识符(叶旨针变量名)()。注:“类型标识符”为函数返回值的类型。

36.*s-*t*s-*t解析:两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回0值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回。所以在空框处应填入*s-*t,保证在e>t时返回正值,当s<t时返回负值。

37.谓词演算谓词演算

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

39.19

40.静态分析静态分析解析:程序测试分为静态分析和动态测试。其中,静态分析是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

41.D解析:通常,引用一个数组元素可以用下标法,如a[p-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。

42.B解析:&&,‖在某种情况下会实行“短路规则”,即当逻辑与前面一个表达式的值为假的时候,后面一个表达式就不需要计算,这个逻辑表达式一定为假;当逻辑或前面一个表达式为真的时候,后面一个表达式就不需要计算,这个逻辑或表达式一定为真。选项A)是将n的值赋值给m和k。选项C)就是进行了短路规则,当m=k赋值后,m得到的新值不为0,即为真,逻辑或后面的表达式就不被计算,所以n没有被赋值。D)答案没有什么意义。

43.B解析:012是八进制数,转换成十进制为10,12&10转换成二进制为00001100&00001010=00001000,00001000转换成十进制为8。

44.B解析:C语言提供六种位运算符,按优先级由高到低的顺序分别为:取反(~)、左移(<<)和右移(>>)、按位与(&)、按位异或(∧)、按位或(|)。所以表达式c=a^b<<1先运算b<<1得二进制值为00001100,再运算a∧00001100,最后得二进制值00001111。

45.D解析:位与运算符“&”,按二进位进行“与”运算,如果两个相应的二进制位都为1,则该位的结果值为1,否则为0;取反运算符“~”,用来对一个二进制按位取反,即将0变1,1变0。在prinf()函数的表达式中,“&”前面表达式的值为1(3/2=1)表示为二进制为00000001,而按位取反运算符“~”的优先级高于按位与运算符“&”,先计算“&”后面的取反运算符“~”。z的二进制表示为00000001,取反后为11111110,最后进行“&”,即“00000001&11111110”可知结果为00000000,故最后的值为0。

46.D解析:转义字符在内存中占一个字节,字符串结束标志也占一个字节,实际存储空间是14个字节,但若用strlen函数求长度时,值为13,结束标志不算。

47.D解析:选项A中,f初值设为0。则执行循环体后,所得的乘积值始终为0,不符合题意。选项B中,for循环条件是i<n,则当i为n时即退出循环,所以求得的乘积值是(n-1)!,也不符合题意。选项C中,i的初值为n,且i在每次执行循环体后都增加1,则如果n为大于1的数,程序会陷入死循环。只有选项D符合题意,求得f的值为n*(n-1)*(n-2)*…*2,即n!。

48.B解析:算术运算符的运算规则是:从右到左的原则。所以表达式中先计算a=a-a*a的值是-90,再计算a=a+a的值是-180。

49.B解析:本题考查带参数的宏定义及应用方法,这种宏不只是进行字符串的替换,还要进行参数的替换。

格式为:#define宏名(参数表)字符串

我们先看一个简单的带参数的宏定义:#defineX(A,B)A*B*B并且在程序中有语句:y=X(4,3);经过替换后变为y=4*3*3;这就是带参数的宏定义的使用方法。注意:宏是按原形替换,本题替换后为sun=1+2+3*2+3;。

50.A

51.A解析:本题主要考查按位与运算,x=011050的二进制形式为0001001000101000,01252的二进制形式为0000001010101010,两者相与得00000010001010000。

52.B解析:函数fib内部有两个递归调用,当n=3时,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1)+fib(n-2)的值为4。

53.C解析:考查指向数组的指针。本题综合考查一维数组和多维数组指针变量的表示方法。在C语言中,引用数组元素的方法有两种,即下标法和指针法。下标法如a[i]形式;指针法如*(a+i)或*(p+1)。其中,a是数组名,p是指向数组的指针变量,其初值p=a。再如*(*(p+2)+2)是a[2][2]的值,注意语句中指针型数组的书写格式,不能写成'(*数组名)[长度]',因为这是定义指向含有'长度'个元素的一维数组的指针变量。例如有定义语句'inta,b,c,c,*p[3]={&a,&b,&c};',它定义了一个名为p的指针型数组,其3个元素p[0],p[1],p[2]分别指向f3个整型变量a,b,c。

54.A解析:本题考查if-else语句。首先,scanf函数通过键盘读入x的值。当x=3时,第一个if语句先判断条件,取x的值3和2比较,然后将x的值加1,if条件成立,执行下面的printf语句,输出x的值4。当x=2时,第一个if语句先判断条件,先取x的值2和2比较,然后将x的值加1(x的值变为3),if条件不成立,执行下面的else语句,先输出x的值3,再将x的值减1。

55.D解析:本题考核的知识点是函数的返回值以及返回值作为函数的参数。经过分析得出函数fun()的功能是比较形参x和形参y的大小,返回较小的一个.函数fun()有两个参数.本题中,首先定义了三个整型变量a、b和c,分别赋初值为9、8和7.然后执行函数fun(fun(a,b),fun(b,c))。在该函数中分别将fun(a,b)和fun(b,C)函数的返回值作为该函数的两个实参。在函数fun(a,b)中,由于a>b,故返回较小值b即8,在函数fun(b,C)中,由于b<c,故返回较小值c即为7,因此调用函数fun(fun(a,b),fun(b,C))相当于执行函数fun(8,7),返回较小值即7。所以,4个选项中选项D符合题意。

56.D解析:选项A),B),C)的指针赋值表达方式都不正确,*p=5表达整数5放到指针p所指向的存储单元中。注意:通过指针引用一个存储单。

57.B

58.C解析:算法的执行效率与数据的逻辑结构和存储结构都有很紧密的关系。算法的空间复杂度是指执行该算法需要的内存空间,并非算法程序中指令的条数。算法一般应该具有以下4个特征:可行性、确定性、有穷性和拥有足够情报。其中,有穷性是指算法必须能在执行有限个步骤之后终止,否则可能失去实际意义。

59.C

60.C

61.A在本题中,程序首先定义了三个整型变量,并将变量k赋值为0,然后开始循环,循环开始时变量j的值为50,结束时变量j的值为60,每循环一次,变量j自加1,即循环10次。

当j=50,k=0时,“!(k%10)”为真,输出换行,即循环开始时,输出从新的一行开始,执行第二重循环,此时的i=2,“!(j%i)”为真,运行break语句,即跳出本层循环(从这里我们可以看出,j如果可以被i整除,则跳出本层循环),然后判断i是否不小于j-1,如果是,则输出此时j的值,否则k自加1。

从程序执行的过程来看,这个题目确实非常复杂,循环的次数太多,但经过对上面一次循环过程的分析,我们可以发现,其实这个程序的作用是找出50~60之间除1和本身外,不能被其他小于本身的数据整除的数,并从小到大输出这样的数。这样就能很容易地得到答案是5359。因此本题的正确答案是A。

62.D

63.C解析:本题主函数带有两个参数,一个int型变量argc,另一个是char型的一维一级指针数组argv。当主函数被执行时,系统自动将根据命令行的情况,分别给主函数的两个参数赋值。Argc中存放命令行中命令字和参数的总和的个数,argv用来存放命令行中命令字和所有参数的字符串的,并规定avgv[0]存放命令字字符串,argv[1]用来存放第一个参数的字符串,argv[2]用来存放第2个参数的字符串,依此类推。题中argc的值是2,执行完--argc后为1,输出argv[1],此数组存在第一个参数的字符串ABCDEFGHIJKL。

64.C

65.C

66.D

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

\n

67.B\n此程序考查带参数的宏定义,S(k+j)展开后即4*(k+j)*k+j+1,所以结果为l43,答案为B。

\n

68.A第一次x为8,输出8,第二次x为6,输出5,第三次x为4,输出4,第四次x为2,输出2,循环结束,所以答案选择A)

69.D逻辑或运算符中只要有一个运算量为真结果就是真,当c>=2&&C<=6条件不成立时c的值肯定不是2、3、4…56所以C!=3,与C!=5均成立。所以D选项的结果一定为真。

70.C

71.BB【解析】只有B选项369可以用无符号整

温馨提示

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

评论

0/150

提交评论