2022-2023年四川省南充市全国计算机等级考试C语言程序设计真题(含答案)_第1页
2022-2023年四川省南充市全国计算机等级考试C语言程序设计真题(含答案)_第2页
2022-2023年四川省南充市全国计算机等级考试C语言程序设计真题(含答案)_第3页
2022-2023年四川省南充市全国计算机等级考试C语言程序设计真题(含答案)_第4页
2022-2023年四川省南充市全国计算机等级考试C语言程序设计真题(含答案)_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年四川省南充市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列数据结构中,按先进后出原则组织数据的是()。

A.循环队列B.栈C.顺序表D.循环链表

2.程序运行后的输出结果是()。A.10B.30C.0D.64

3.下列程序执行输出的结果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}

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

4.若有定义“intb[8],*p=b;”,则p+6表示()。

A.数组元素b[6]的值B.数组元素b[6]的地址C.数组元素b[7]的地址D.数组元素b[0]的值加上6

5.下列叙述中,不符合良好程序设计风格的是()。

A.程序的效率第一,清晰第二B.程序的可读性好C.程序中有必要的注释D.输人数据前要有提示信息

6.以下叙述中正确的是()。

A.预处理命令行必须位于C源程序的起始位置

B.在C语言中,预处理命令行都以“#”开头

C.每个C程序必须在开头包含预处理命令行:#include

D.C语言的预处理不能实现宏定义和条件编译的功能

7.在一个无向图中,所有顶点的度数之和等于所有边数的()倍。

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

8.软件生命周期是指()。A.软件产品从提出、实现、使用维护到停止使用退役的过程

B.软件从需求分析、设计、实现到测试完成的过程

C.软件的开发过程

D.软件的运行维护过程

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

A.在C语言中,预处理命令行都以“#”开头

B.预处理命令行必须位于C语言源程序的起始位置

C.“include<stdio.h>”必须放在C语言程序的开头

D.C语言的预处理不能实现宏定义和条件编译的功能

10.以下说法错误的是A.A.高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式

B.计算机只能处理由0和1的代码构成的二进制指令或数据

C.C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件

D.每一种高级语言都有它对应的编译程序

11.设有下列二叉树:

对此二叉树后序遍历的结果为

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

12.下面关于图的存储的叙述中正确的是()。

A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与顶点个数无关

B.用邻接表法存储图,占用的存储空间大小与图中边数和顶点个数都有关

C.用邻接矩阵法存储图,占用的存储空间大小与图中顶点个数和边数无关

D.用邻接矩阵存储图,占用的存储空间大小只与图中边数有关,而与顶点个数无关

13.有以下程序

voidss(char*s,chart)

{while(*s)

{if(*s==t)*s=t-′a′+′A′;

s++;}}

main()

{charstr1[100]="abcddfefdbd",c=′d′;

ss(str1,c);printf("%s\n",str1);}

程序运行后的输出结果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

14.有以下程序

prt(int*m,intn)

{

inti;

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

m[i]++;

}

main()

{

inta[]={1,2,3,4,5},i;

prt(a,5);

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

printf("%d,",a[i]);

}

程序运行后的输出结果是A.A.1,2,3,4,5,

B.3,4,5,6,7,

C.2,3,4,5,6,

D.2,3,4,5,1,

15.

16.现有1GB数据进行排序,计算资源只有1GB内存可用,下列排序方法中最可能出现性能问题的是()

A.堆排序B.插入排序C.归并排序D.快速排序E.选择排序F.冒泡排序

17.定义int*swap()指的是______。

A.—个返回整型值的函数swap()

B.一个返回指向整型值指针的函swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

18.数据处理的最小单位是()。

A.数据B.数据元素C.数据项D.数据结构

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

A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA

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

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

B.C程序中的变量,代表内存中的一个存储单元,它的值可以根据需要随时修改

C.在C程序中,无论是整数还是实数,都能准确无误地表示

D.在C程序中,一个正整数可以用十进制、八进制和十六进制的形式来表示

二、2.填空题(20题)21.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

22.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

ginclude"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{doublex,y1,y2;

pfintf("Enterx:");scanf("%lf"&x);

y1=fun([10]);y2=fun([11]);

pin

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

main()

{inti=10,j=0;

do

{j=j+i;i-;}

while(i>2);

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

}

24.以下程序的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。请填空。#include<stdio.h>main(){longs,t,s1=10;pfintf("\n.Pleaseenters:");scanf("%1d",&s);t=s%10;while(s>0){s=s/100;t=();s1=s1*10;}printf("Theresultis:%1d\n",t);}

25.下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变。

#include<stdio.h>

#include<string.h>

main()

{chara[]="clanguage",t;

inti,j,k;

k=strlen(a);

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

for(j=i+2;j<=k;【】)

if(【】)

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

puts(a);

printf("\n");

}

26.以下程序运行后的输出结果是______。

#include<string.h>

voidfun(char*s,intp,intk)

{inti;

for(i=p;i<k-1;i++)s[i]=s[i+2];

}

main()

{chars[]="abcdefg";

fun(s,3,strlen(s));puts(s);

}

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

main()

{intx=10,y=20,t=0;

if(x==y)t=x;x=Y;Y=t;

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

}

28.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。

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

30.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。

main()

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

p=a;

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

printf("%x\n,p+9);

}

31.对软件是否能达到用户所期望的要求的测试称为【】。

32.若有如下定义:

intx=2,y=3,z=4;

则表达式!(x=y)||x+z&&y-z的值是【】。

33.下面程序的运行结果是:【】。

typedefunionstudent

{charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{STUa[5];

Printf(“%d\n”,sizeof(a));

}

34.下面程序的功能是:计算1~10之间的奇数之和与偶数之和,请填空。

#include<stdio.h>

main()

{inta,b,c,i;

a=c=0;

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

{a+=i;

【】;

c+=b;}

printf("偶数之和=%d\n",a);

printf("奇数之和=%d\n",c-11);}

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

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

intmystrlen(char*str)

{inti;

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

return(i);}

37.以下程序用于判断a、b、c能否构成三角形,若能,输出YES,否则输出NO。当给a、b、c输入三角形三条边长时,确定a、b、c能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。

main()

{floata,b,c;

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

if(【】)printf("YES\n");/*abc能构成三角形*/

elseprintf("NO\n");/*abc不能构成三角形*/

}

38.在两种基本测试方法中,【】测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。

39.在程序设计阶段应该采取______和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成程序。

40.下列程序的功能是把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中。请填空。

#include"stdio.h"

FILE*fp;

{charch;

if((fp=fopen("bi.dat","w"))==NULL)exit(0);

while(______)fputc(ch,fp);

______;

}

三、1.选择题(20题)41.有以下程序:main(){chark;inti;for(i=1;i<3;i++){scanf("%c",&k);switch(k){case'0':printf("another\n");case'1':printf("number\n");}}}程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是

A.anothernumber

B.anothernumberanother

C.anothernumbernumber

D.numbernumber

42.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是()。

A.auto和register

B.extern和register

C.auto和static

D.static和register

43.以下能正确定义一维数组的选项是

A.inta[5]={0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A''B''C');

D.inta[5]="0123";

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

A.4个字节B.5个字节C.6个字节D.7个字节

45.有以下程序:#include<stdio.h>main(){chars[]="159",*p;p=s;printf("%c",*p++);printf("%~",*p++);}程序运行后的输出结果是()。

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

46.在深度为6的满二叉树中,结点的个数为()。

A.32B.31C.16D.15

47.当执行下面的程序时,如果输入ABC,则输出结果是()#include<stdio.h>#include<string.h>main(){charss[10]="12345";gets(ss);strcat(ss"6789");printf("%s\n",ss);}

A.ABC6789B.ABC67C.12345ABC6D.ABC456789

48.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>A)||(m=a<B);printf("%d,%d\n",k,m);}程序运行后的输出结果是

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

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

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

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

A.在C语言中,可以使用动态内存分配技术,定义元素个数可变的数组

B.在C语言中,数组元素的个数可以不确定,允许随机变动

C.在C语言中,数组元素的数据类型可以不一致

D.在C语言中,定义了一个数组后,就确定了它所容纳的元素的个数

51.以下程序的输出是______。structst{intx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[1],60,&dt[2],60,&dt[3]};main(){p=aa;printf("%d\n",++(p->X));}

A.51B.11C.50D.60

52.C语言中不合法的字符串常量是

A.\121B.'Y'C.\n\nD.ABCD\x6d

53.有以下程序:voidswap(char*x,char*y){cbart;t=*x;*x=*y;*y=t;}main(){char*s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序执行后的输出结果是()。

A.123,abcB.abc,123C.1bc,a23D.321,cba

54.设有以下定义:inta=0;doubleb=1.25;charc='A';#defined2则下面语句中错误的是()。

A.a++;B.b++;C.c++;D.d++;

55.设下面程序段中调用fun函数传送实参a和b,main(){chara[10],b[10]┇fun(a,b);┇}则在fun函数首部中,对形参错误的定义是()

A.fun(chara[10],b[10]){…}

B.fun(chara1[],chara2[]){…}

C.fun(charp[10],charq[10]){…}

D.fun(char*s1,char*s2){…}

56.结构化程序设计的3种基本结构是()。

A.过程、子程序和分程序B.顺序、选择和重复C.递归、堆栈和队列D.调用、返回和转移

57.若变量c为char类型,能正确判断出c为小写字母的表达式是______。

A.'a'<=c<'z'

B.(c>='a')||(c<='z')

C.('a'<'c')and('z'>=C)

D.(c>='a')&&(c<='z')

58.下列选项中,当x为大于1的奇数时,值为0的表达式是()。

A.x%2==1B.x/2C.x%2!=0D.x%2==0

59.若有以下定义;chara;intb;floatc;doubled;则表达式“a*b+d-c”值的类型为()

A.floatB.intC.charD.double

60.在下列定义中的共用体所占内存字节数是()Union{chark[6];struct{intm;floatf;}a;doubled;}b;

A.8B.14C.18D.10

四、选择题(20题)61.(67)数据处理的最小单位是()

A.数据

B.数据元素

C.数据项

D.数据结构

62.以下关于return语句的叙述中正确的是()。A.一个自定义函数中可以根据不同情况设置多条return语句

B.一个自定义函数中必须有一条return语句

C.定义成void类型的函数中可以有带返回值的retum语句

D.没有return语句的自定义函数在执行结束时不能返回到调用处

63.

64.有以下程序

main()

{inta[3][2]={0},(*ptr)[2],i,j;

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

{ptr=a+i;scanf("%d",ptr);ptr++;}

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

{for(j=0;j<2;j++)printf("%2d",a[i][j]);

printf("\n");

}

}

若运行时输入123<回车>,则输出结果为

65.以下定义语句中正确的是()。

A.

B.

C.

D.

66.设有定义:charpE]={’1’,‘2’,’3’},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是()。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

67.计算机的内存储器比外存器()

A.价格便宜B.存储容量大C.读写速度快D.读写速度慢

68.

69.已知inta=15,执行语句a=a<<2以后,变量a的值是()。

A)20B)40

C)60D)80

70.

71.有以下程序

structst

{intx;

int*y;

}*p;

intdt[4]={1,2,3,4};

structstaa[4]={10,&dt[0],20,&dt[1],30,&dt[2],40,&dt[3]};

main()

{p=aa;

printf("%d\n",++p->x);

printf("%d\n",(++p)->x);

printf("%d\n",++(*p->y));

程序的运行结果是

72.

73.

74.

75.

76.软件详细设计生产的图如右图:该图是()。

A.N—S图B.PAD图C.程序流程图D.E—R图

77.

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

A.17B.16C.15D.14

79.以下选项中,能用作用户标识符的是()。A._0_B.8—8C.voidD.unsigned

80.sizeof(float)是

A.一个双精度表达式B.一个整型表达式

C.一种函数调用D.一个不合法的表达式

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(Z转换A,z转换a),其他字符不变。

请修改函数fun()中的错误,得出正确的结果。

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

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件析下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),tt指向一个M行N列的二维数组,求出二维数组每列中值最大的元素,并依次放入pp所指的一维数组中。二维数组中的元素已在主函数中给出。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#defineM3#defineN4voidfun(inttt[M][N],intpp[N]){}voidmain(){ intt[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}}; intp[N],i,j,k; ystem(“CLS”); printf(“Theoriginaldatais:\n”); for(i=0;i<=""p=""> { for(j=0;j<=""p=""> printf(“%6d”,t[i][j]); printf(“\n”n); } fun(t,p); printf(“\nTheresultis:\n”); for(k=0;k<n;k++)<p=""></n;k++)<> printf(“%4d”,p[k]); printf(“\n”);}

参考答案

1.B解析:循环队列是队列的一种顺序存储结构,队列是以先进先出为原则组织数据的一种特殊线性表,选项A错误;栈是以先进后出为原则组织数据的一种特殊线性表,选项B正确;顺序表是线性表的顺序存储结构,选项C错误;循环链表是一般线性表的一种链式存储结构,选项D错误。

2.D[解析]本题目中静态局部变量x,在静态存储区内分配存储单元。在程序整个运行期间都不释放。所以第一次循环s的值为2.第二次循环中,返回的x的值为4.所以s的值为8.第三次循环,返回的x的值为8.所以s的值为64.

3.B解析:本题考查函数调用时的参数传递。在函数调用时,static变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。

在主函数中,第一次循环,i=0,调用k-f(a++)=f(2),调用完之后才将a加1,a变为3,在f(2)中,先将c=3赋值给a返回,然后将c加1,得到k=a=3,c=4。

第二次循环,i=1,调用k=f(a++)=f(3),调用完之后才将a加1,a变为4,在f(3)中,先将c=4赋值给a返回,然后将c加1,得到k=a=4,c=5。

4.B指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中“P+6”指的是将指针向后移动了6个存储单元,即指向uE63,存放的是b[6]的地址。

5.A一般来讲,程序设计风格首先应该简单和清晰,其次程序必须是可以理解的,可以概括为“清晰第一,效率第二”。

6.B本题是对基本知识点的理解,预处理命令行的位置没有规定,只是习惯写在起始位置而已,当需要时才用#include<stdio.h>头文件,预处理的作用就是实现宏定义和条件编译。

7.A

8.A通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。

9.A预处理命令以“#”开头,一般在源文件的最前面书写,但不是必须在起始位置书写,所以B、C选项错误。C语言的预处理能够实现宏定义和条件编译的功能,所以D选项错误。故本题答案为A选项。

10.C本题主要考查我们对C语言一些基础知识的掌握情况。下面分别分析本题的四个选项。

由于高级程序设计语言具有可读写、可理解性好等特点,这就要求高级程序设计语言用接近人们习惯的自然语言和数学语言作为语言的表达形式,选项A的说法正确。

在计算机中,机器可以接受和处理的只能是由0和1组成的二进制代码,用高级语言编写的程序都需要经过编译和连接,使其转化为二进制代码才能被机器执行。因此,选项B的说法正确。

C语言源程序经过C语言编译程序编译之后生成一个后缀为.OBJ的二进制文件(称为目标文件);最后要由“连接程序”把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。因此,选项C的说法不正确。

由于高级语言编写的程序都需要经过编译和连接,才能被计算机执行,因此,每一种高级语言都有它对应的编译程序,D选项的说法正确。

11.D解析:二叉树的遍历分为先序、中序、后序三种不同方式。本题要求后序遍历,其遍历顺序应该为:后序遍历左子树->,后序遍历右子树->,访问根结点。按照定义,后序遍历序列是DEBFCA,故答案为D。

12.B

13.B解析:在内存中,字符数据以ASCII码存储,它的存储形式与整数的存储形式类似。C语言中,字符型数据和整型数据之间可以通用,也可以对字符型数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。

14.C用数组名作为函数实参时,不是把数组的值传递给形参,而是把实参数组的起始地址传递给形参数组,这样两个数组就共同占用同一段内存单元。本题通过“prt(a,5);”将数组a的首地址传递给了指针变量m,使指针变量m指向数组a的首地址,那么,对指针变量所指向的存储单元的内容的改变就是对数组a中的元素的改变。题中函数prt的作用是将指针变量m所指向的存储单元中的元素值各加上1,故数组a中的值也随之变化,所以。输出的数组元素的值为2,3,4,5,6,。

15.D

16.C

17.B解析:—个函数可以带回—个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是—个返回整型指针的函数。

18.C解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。

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

20.C

21.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。

22.用x+8代替函数fun(doublex)中形式参数x。用sin(x)代替函数fun(doublex)中形式参数x。

23.5252解析:do...while语句的形式为:

do

{

语句;

}while(条件表达式)

当条件表达式为非零时,继续执行循环体,直到条件表达式为零时退出循环。

24.s%10*s1+t

25.j=j+2或j+=2a[j]<a[i]或a[i]>a[j]j=j+2或j+=2\r\na[j]<a[i]或a[i]>a[j]

26.abcfgabcfg解析:本题考查的是字符数组用作函数参数。C语言中数组名可以看作该数组首地址的常量指针、因此可以直接传递给指针类型的参数。本题的主函数调用fun(s,3,strlen(s));后,函数中for循环就是for(i=3;i<strlen(s)-1;i++),即i从3递增到字符数组s的长度-2位置,循环中让s[i]=s[i+2],所以函数fun()实现的功能简单来说就是将字符串s下标为p+2~k范围的字符整体复制到字符串s下标为p~k-2的位置上。在本题中strlen(s)返回s的长度7,所以复制的字符为s[5]~s[7],即'f'、'g','\\0'三个字符,复制到s[3]~s[5],故最终输出的字符串为abcfg(因为s[5]为'\\0',所以后面的字符不会输出)。

27.20020,0解析:在主函数中首先定义了三个整型变量x、y、t,并分别给它们赋初值为10,20,0,接着执行if语句,在if后面括号内的条件表达式中,条件“x==y”即“10==20”不成立,则不执行其后的语句“t=x”,然后退出if语句,顺序执行语句x=Y;Y=t;。执行完这两条语句后x的值变为20,y的值变为0,所以最后输出x,y的值为20和0。

28.自然连接自然连接解析:在关系运算中,自然连接运算是对两个具有公共属性的关系所进行的运算。

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

30.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。

31.有效性测试有效性测试

32.11解析:运算符的优先级次序由高到底是!,算术运算符,&&,||。先运算!(x=y),由于x=3非零,则表达式!(x=y)的值为0。再运算x+z,x+z=3+4=7,非零则运算y-z,y-z=3-4=-1,非零则表达式x+z&&y-z的值为1。0||1=0,则表达式!(x=y)||x+z&&y-z的值是1。

33.8080解析:数组a是共用体变量,共用体类型变量所占的内存长度为最大成员的长度,即单精度数组的长度,为4×4=16,因此,数组a所占的内存长度为5×16=80,所以最后输出的s的值为80。

34.b=i+1b=i+1解析:本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2之后和累加至a,所以a的值就是1~10之间的偶数之后;b的值是1~11之间的奇数和,但在输出b值时c去掉多加的11,即为1~10之间的奇数之和。

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

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

37.(a+b>c)&&(a+c>b)&&(b+c>a)(a+b>c)&&(a+c>b)&&(b+c>a)解析:三角形形式的条件是两边之和大于第三边。要用'&&'指令连接三个条件,表示三个条件都要满足。

38.白盒或白箱或白盒子或WhiteBox白盒或白箱或白盒子或WhiteBox解析:本题考查软件工程的测试。测试一般有两种方法:黑盒测试和白盒测试。黑盒测试不考虑程序的内部逻辑结构和处理过程,只着眼于程序的外部特性。用黑盒测试来发现程序中的错误,必须用所有可能的输入数据来检查程序能否都能产生正确的输出。白盒测试是在了解程序内部结构和处理过程的基础上,对程序的所有路径进行测试,检查路径是否都能按预定要求正确工作。因此,划线处应填入“白盒(箱)”或“WhiteBox”。

39.自顶向下自顶向下解析:在程序设计时,应先考虑总体,后考虑细节,逐步使问题具体化,对复杂的问题,应该设计一些子目标作为过渡,上述方法概括为:自顶向下,逐步细化。

40.(ch=getchar())!='@'fclose(fp)。(ch=getchar())!='@',fclose(fp)。解析:表达式z-=x<y?x++:++y相当于先执行++y,再执行z-=x<y?x:y,最后执行x++,其中z-=x<y?x:y等价于z=z-(x<y?x:y),由于x值为3,y值为3,x<y不成立,返回y的值,z-y的值为-2,赋给z。

41.C解析:switch语句的执行过程是:在switch后面的表达式的值和case后面常量表达式的值吻合时,就执行后面的语句.如果在该语句的后面没有break语句,则继续执行下一个case,直到遇到break语句或switch多分支的结束,在switch语句中,break语句的作用是使流程跳出switch结构,终止Switch语句的执行.本题中在for循环中嵌套了swish语句,每循环一次通过scanf()函数从键盘上输入一个k值,然后执行switch语句。for循环共循环了2次,当i=1时,从键盘上输入0,使得k的值为0,执行switch语句中case:0后面的语句,输出another,接着执行case:0下面的语句输出number,退出switch语句,当i=2时,从键盘上输入1,使得k的值为1,执行switch语句中case1后面的语句,输出number,退出switch语句.当i=3时退出循环.故最后的输出为another、number和number,所以,4个选项中选项C符合题意。

42.A解析:在C语言中,动态存储区域中存放的变量在使用时才分配内存空间,函数调用时返回的地址和自动类局部变量等存放在动态存储区域中。auto变量和register变量都属于自动类局部变量,因此选项A正确。static说明的变量为静态变量,静态变量在内存的静态存储中占据着永久的存储单元,直至程序运行结束。extern说明的变量为外部变量,属于全局变量,全局变量在整个程序运行期间都占用内存空间。

43.B解析:本题考查的是一维数组的定义及初始化。定义并初始化一维数组的一般形式如下:

类型名数组名[常量表达式]={初始化列表};

当使用初始化列表初始化数组时,需要注意以下几点:初始化列表项的个数必须小于等于常量表达式的值,因此选项A是错误的;常量表达式可以省略,但不能省略其外面的中括号,因此选项C是错误的;特殊的,当类型名为char时,{初始化列表}可以用一个字符串常量来代替,由于字符串常量必须以'\\0',结尾,所以此时的初始化列表项的个数是字符串常量的长度加1,选项D的类型是int,使用字符串常量来初始化数组是错误的。所以,4个选项中选项B符合题意。

44.C解析:在定义字符数组时,可以用一个字符串作为初值,对数组进行初始化。要注意的是,数组array的长度不是5,而是6,因为系统将自动在字符串常量的后面加上一个'\\0',因此,题干中的初始化语句与chararray[]={'C','h','i','n','9','\\0'};等价。

45.A解析:语句p=s将指针变量p指向字符数组s,第一次输出时,由于++和*为同一优先级,而结合方向为自右向左,所以,*p++相于*(p++)。但又因为“++”在p的右侧,所以,先输出*p,得到s[0]的值,然后P++,P指向s[1],故第二次输出时,输出s[1]的值,所以输出结果为15。

46.A解析:深度为m的二叉树最多有2m-1个结点,满二叉树中叶子结点的个数为2m-1个。本题中,26-1=25=32。

47.A

48.C解析:本题考查“逻辑或”运算的特例。本题中执行语句k=(n=b>a)||(m=a<b)时,首先计算表达式(n=b>a)||(m=a<b)的值,因b=2,a=1,所以b>a成立,即得n=1,故表达式(n=b>a)||(m=a<b)的值为真,不再执行表达式m=a<b,故执行完表达式k=(n=b2>a)||(m=a<b)后,n=1、m=0、k=1。

49.B解析:选项A和C一望而知其错;对于表达式a=a+7=c+b(答案D),是先执行赋值表达式a+7=c+b,再把这个表达式的值赋给a,显然,表达式a+7=c+b非法,因为赋值表达式的左侧不能为常量或表达式。

50.D解析:本题考查数组的两个知识点:①在C语言中,数组元素的个数是确定的,不允许随机变动,数组定义好之后,它所能容纳的元素的个数也就确定了;②同一个数组中所有元素的类型是一样的。

51.A解析:p是指向结构aa的结构指针,++(p->x)是对p的x成员的值进行加1。p=aa使得p指向aa的首地址,p->x的值为50,那么++(p->X)就等于51。

52.B解析:字符串常量是由双引号括起来的一串字符,其中的双引号不可缺少。由此可知,选项A)、C)、D)都是含法的字符串常量,而选B)是一个字符常量。

53.C解析:函数swap()实现的功能为交换字符指针x和y首位的数值。

54.D解析:本题考核的知识点是在自加运算符的运算对象。自加运算对象可以是整型变量也可以是实型变量,但不能是表达式和常量。本题中,#defined2定义了d为常数2,不能在对d进行自加运算.故选项D是个不正确的语句,所以,4个选项中选项D符合题意。

55.A

56.BB。【解析】程序的三种基本控制结构包括:顺序、选择和重复(循环),这三种结构就足以表达出各种其他形式的结构。

57.D

58.D解析:因为x的值为大于1的奇数,所以x除以2的余数等于1。所以选项D)等于关系表达式的结果为假,即等于0。

59.D解析:参加运算的数据类型不同,要转换为统一的数据类型,double在数据类型转换中的级别最高,其他数据类型都要转化为double,因此表达式值的类型为double。

60.A

61.C注:数据项不可再分割

62.A一个函数可以有多个return语句,所以选择A)。

63.A

64.B主函数中首先定义了一个3行2列的数组a,初始时各元素的值为0。定义了一个指向数组的指针ptr[2],并用该指针指向数组a,因为该指针为指向有2个元素的数组的指针,故只能指向数组a的前2行,虽然在第一个for语句中有语句ptr=a+2,指向数组a的第3行,并对该指针所指的数组赋值,实际上这条语句是无效的,超过了指针ptr的定义范围。对指针输入1,2,3时,只有1和2有效,通过指针ptr只能更改数组的前2行元素的数据。ptr=a指向a[0],即第1行的起始地址。ptr=a+1指向a[1],即第2行的起始地址。

后面的2个for循环是将数组a进行输出,最后结果为

10

20

00

65.C解析:选项A中两个变量的定义应当以逗号隔开;选项B中a和b应当分开赋值;选项D中变量类型不相匹配,b应当是指针

温馨提示

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

评论

0/150

提交评论