2021-2022年湖南省湘潭市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第1页
2021-2022年湖南省湘潭市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第2页
2021-2022年湖南省湘潭市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第3页
2021-2022年湖南省湘潭市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第4页
2021-2022年湖南省湘潭市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第5页
已阅读5页,还剩34页未读, 继续免费阅读

下载本文档

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

文档简介

2021-2022年湖南省湘潭市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序:#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(“d1.dat”,“w”);for(i=0;i<3;i++)fprintf(fp,“%d”,a[i]);fprintf(fp,“\n”);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d”,&n);fclose(fp);printf(“%d\n”,n);}程序的运行结果是()。

A.321B.12300C.1D.123

2.有以下程序main(){intx,y,z;x=y=1;z=X++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运行后的输出结果是

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

3.当输入为"hello?"时,下面程序的执行结果是()。#include<stdio.h>main{charc;c=getchar;while(c!=?){putehar(e);break;}}A.RvfsuB.hC.?D.hello

4.以下叙述中正确的是()A.当对文件的读(写操作完成之后,必须将它关闭,否则可能导致数据丢失

B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

D.语言中的文件是流式文件,因此只能顺序存取数据

5.

6.冒泡排序在最坏情况下的比较次数是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

7.设在C语言中,float类型数据占4个字节,则double类型数据占()个字节。

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

8.在学生管理的关系数据库中,存取一个学生信息的数据单位是()。

A.文件B.数据库C.字段D.记录

9.以下有关宏替换的叙述不正确的是()。A.A.使用宏定义可以嵌套

B.宏定义语句不进行语法检查

C.双引号中出现的宏名不替换

D.宏名必须用大写字母表示

10.

11.

12.以下不能输出字符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);

13.已知字母a的ASCII码为十进制数97,下面程序的输出结果是()。#include<stdio.h>main(){charc1,c2;c1='a'+'6'-'0';c2='a'+'3'-'0';printf("%c,%c\n",c1,c2);}

A.输出无定值B.d,eC.e,fD.g,d

14.

15.对于循环队列,下列叙述中正确的是()。

A.队头指针是固定不变的

B.队头指针一定大于队尾指针

C.队头指针一定小于队尾指针

D.队头指针可以大于队尾指针,也可以小于队尾指针

16.请选出以下程序的输出结果()#include<stdio.h>sub(x,y,z)intx,y,*z;{*2=y-x;}main(){inta,b,c;sub(10,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

17.

18.设a和b均为double型变量,且a=5.5,b=2.5,则表达式(int)a+b/b的值是A.6.5B.6C.5.5D.6

19.若在线性表中采用折半查找法查找元素,该线性表应该()A.元素按值有序B.构采用顺序存储结C.元素按值有序且采用顺序存储结构D.元素按值有序且采用链式存储结构

20.下列叙述中正确的是A.程序设计就是编制程序

B.程序的测试必须由程序员自己去完成

C.程序经调试改错后还应进行再测试

D.程序经调试改错后不必进行再测试

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

#include<stdio.h>

fun()

{inta=0;

a+=3;

printf("%d",A);

}

main()

{intcc;

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

fun();

printf("\n");

}

22.以下程序的功能是:将输入的正整数按逆序输出。例如:若输入135则输出531。请填空。

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);[];}

while(n!=0);

printf("\n');

}

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

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

24.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

25.下列函数从字符数组s[]中删除和c一样的字符,请在下面横线处填空。voiddelete(s,C)chars[],c;{inti,j;for(i=j=0;();i++)if(s[i]!='c')s[j++]=s[i];s[j]="\0";}

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

#include<stdio.h>

main()

{staticchara[]="language",b[]="program";

char*ptr1=a,*ptr2=b;

intk;

for(k=0;k<7;k++)

if(*(ptr1+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

27.在先左后右的原贝吓,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、【】遍历和后序遍历。

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

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

printf("%d%d%d\n",a,b,C);

}

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

30.下面程序的输出结果是______。

main()

{staticchara[]="language",b[]="program";

char*ptrl=a,*ptr2=b;

intk

for(k=0;k<7;k++)

if(*(ptrl+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

31.对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【】。

32.现有两个C程序文件T18.c和myfun.c同在TC系统目录(文件夹)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();printf("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!=′\n′)s[n++]=c;

n--;

while(n>=0)printf("%c",s[n--]);

}

当编译连接通过后,运行程序T18时,输入Thank!,则输出结果是【】。

33.下面程序的运行结果是______。

voidswap(int*a,int*B)

{

int*t;

t=a;a=b;b=t;

}

main()

{

intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}

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

unsignedfun6(unsignednum)

{unsignedk=1;

do{k*=hum%10;

num/=10;}while(num);

return(k);}

main()

{unsignedn=26;

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

35.已定义charch='$';inti=1,j;,执行j!=ch&&i++以后,i的值为______。

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

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);}

37.若有定义doublea[5];,则a数组元素下标的上限为______。

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

39.以下程序的功能是:从低位开始取出长整型变量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);}

40.有以下语句段

intnl=10,n2=20;

printf("______",n1,n2);

要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。

n1=10

n2=20

三、1.选择题(20题)41.整型变量x和y的值相等并且为非零值,则下面选项中,结果一定为零的表达式是()。

A.x|yB.xy

C.x||yD.x&y

42.设有以下程序:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0\},*p;p=&a[0];下面其值为6的表达式为______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

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

A.软件交付使用后还需要进行维护

B.软件一旦交付使用就不需要再进行维护

C.软件交付使用后其生命周期就结束

D.软件维护是指修复程序中被破坏的指令

44.以下程序的输出结果是()structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n"h[0].p)->x,(h[1].p)->y);}

A.12B.23C.14D.32

45.在面向对象的程序设计中,下列叙述中错误的是()。

A.对象是面向对象软件的基本模块

B.对象不是独立存在的实体,各个对象之间有关联,彼此依赖

C.下一层次的对象可以继承上—层次对象的某些属性

D.同样的消息被不同对象接受时,可导致完全不同的行动

46.以下有4组用户标识符,其中合法的—组是______。

A.FOR-subCase

B.4dDOSize

C.f2_G3IFabc

D.WORDvoiddefine

47.下列关于标识符的说法中错误的是

A.合法的标识符是由字母、数字和下划线组成

B.C语言的标识符中,大写字母和小写字母被认为是两个不同的字符

C.C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符

D.用户标识符与关键字不同时,程序在执行时将给出出错信息

48.下面程序的输出结果是()。#include<stdio.h>main(){intx=7,y=3;printf("%d",y=x/y);}

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

49.以下4个选项中,不能看作一条语句的是

A.;B.a=5,b=2.5,c=3.6;C.if(a<5);D.if(b!=5)x=2;y=6;

50.若已定义x和y为double类型,则表达式“x=1,y=x+3/2”的值是()。

A.1B.2C.2D.2.5

51.在结构化设计方法中生成的结构图(SC)中,带有圆圈的小箭头表示()。

A.模块B.数据的流向C.模块间的信息传递D.模块之间的调用关系

52.以下程序运行后,输出结果是#definePT5.5#defineS(x)PT*x*x#include<stdio.h>main(){inta=1,b=2;printf("%4.1f\n",s(a+b));}

A.49.5B.9.5C.22D.45.0

53.信息隐蔽的概念与下述______概念直接相关。

A.软件结构定义B.模块独立性C.模块类型划分D.模拟耦合度

54.下列程序执行后的输出结果是()。voidfuncl(inti);voidfunc2(inti);charst[]="hello,friend!";voidfuncl(inti){printf("%C",st[i]);if(i<3){i+=2;func2(i);)}voidfunc2(inti){printf("%c",st[i]);if(i<3){i+=2;func1(i);}}main(){inti=0;funcl(i);printf("\n");)

A.hlmB.hloC.helloD.he1

55.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

56.下面程序的功能是输出以下形式的金字塔图案:****************main(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=4-i;j++)printf("");for(j=1;j<=();j++)printf("*");printf("\n");}}在下划线处应填入的是()。

A.iB.2*-1C.2*i+1D.i+2

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

A.C程序由函数组成

B.C程序由主函数构成

C.C程序由函数和过程构成

D.在C程序中无论是整数还是实数,都可以正确无误的表示出来

58.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。下列不能将变量c中的大写字母转换为对应小写字母的语句是()。

A.c=(c-'A')%26+'a'

B.c=c+32

C.c=C-'A'+'a'

D.c=('A'+C)%26-'a'

59.若x=2,y=3,则x&y的结果是()。

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

60.以下叙述中错误的是A.gets函数用于从终端读入字符串

B.getchar函数用于从磁盘文件读入字符

C.fputs函数用于把字符串输出到文件

D.fwrite函数用于以二进制形式输出数据到文件

四、选择题(20题)61.

62.设“intx=2,y=1;”,则表达式(!x||Y--)的值是()。

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

63.以下叙述中错误的是()。A.可以通过typedef增加新的类型

B.可以用typedef将已存在的类型用一个新的名字来代表

C.用typedef定义新的类型名后,原有类型名仍有效

D.用typedd可以为各种类型起别名,但不能为变量起别名

64.以下程序的功能是计算:s=1+12+123+1234+12345

A.tB.t*10C.t*100D.t+10

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

A.a=10b=50c=10

B.a=10b=50c=30

C.a=10b=30c=lO

D.a=50b=30c=50

66.

67.以下选项中正确的定义语句是()。

A.doublea;b;B.doublea=b=7;C.doublea=7,b=7;D.double,a,b;

68.有以下程序:

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

A.22B.76C.72D.62

69.

70.

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

main

{charst[20]="hello\0\t\\\";

printf("%d%d\n",strlen(st).sizeof(st));

}

A.99B.520C.1320D.2020

71.下列说法中不正确的是

A.C语言规定,不能在一个函数的内部再定义函数

B.在没有声明函数返回值类型的情况下,默认的函数返回值类型为int型

C.函数的类型可以是整型、实型、字符型,但不能是指针型

D.函数可以没有形参,但函数名后的一对圆括号不能省略

72.

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

main

{intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;

while(i++<7)

if(p[i]%2)j+=p[i];

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

}

A.42B.45C.56D.60

73.以下不合法的字符常量是()。

A.

B.

C.

D.

74.

75.

76.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。

A.函数的实参和其对应的形参共占同一存储单元

B.形参只是形式上的存在,不占用具体存储单元

C.同名的实参和形参占同一存储单元

D.函数的形参和实参分别占用不同的存储单元

77.执行以下程序段后,T的值为

intT=’a’,x=12,y=5;

T=((x||y)&&(T>’A’));

A.1B.NULLC.-lD.0

78.下列叙述中正确的是()。A.栈是“先进先出”的线性表

B.队列是“先进后出”的线性表

C.循环队列是非线性结构的线性表

D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

79.设j为Int型变量,则下面for循环语句的执行结果是()。

for(j=10;j>3;j--)

{if(j%3)j--;

--j;--j;

printf("%d",j);

}

A.63B.74C.62D.73

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是l5。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。

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

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

试题程序:

六、程序设计题(1题)82.下列程序定义了MM的二维数组,并在主函数中自动赋值。请编写函数proc(inta[][M]),该函数的功能是:使数组左下半三角元素中的值全部置成0。例如,a数组中的值为:

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。

试题程序:

参考答案

1.D程序首先将数组a中的元素1、2、3分别写入了d1.dat文件中,再将d1.dat文件中的数据“123”整体写到变量n的空间中,所以输出的数据为123。故本题答案为D选项。

2.C解析:整型变量x、y的初值都为1,“x++,y++,++y”是一个逗号表达式,程序执行“z=x++,y++,++y”后,x的值为2,y的值为3,z取豆号表达式中第二个表达式的值,为1。

3.A本题考查getchar函数与putchar函数,通过9etchar函数读入字符,并通过putchar函数将字符逐个输出,当用户输入“?”时停止输出,且c是一个字符变量只占一个字节。

4.AB)选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。C)选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。D)选项中,C语言中的文件可以进行随机读写。

5.D

6.C冒泡排序的基本思想是:将相邻的两个元素进行比较,如果反序,则交换;对于一个待排序的序列,经一趟排序后,最大值的元素移动到最后的位置,其他值较大的元素也向最终位置移动,此过程称为一趟冒泡。对于有n个数据的序列,共需n-1趟排序,第i趟对从l到n-i个数据进行比较、交换。冒泡排序的最坏情况是待排序序列逆序,第l趟比较n-1次,第2趟比较n-2次。依此类推,最后趟比较1次,一共进行n-l趟排序。因此,冒泡排序在最坏情况下的比较次数是(n-1)+(n-2)+…+l,结果为n(n-1)/2。本题的正确答案是选项C。

7.C

\n在C语言中各种数据类型在内存中所占的字节数与机器的位数有关,16位机中(也就是在标准c中),若int类型数据占2个字节,则float类型数据占4个字节,double类型数据占8个字节。

\n

8.D解析:在关系数据表中,行称为元组,对应存储文件中的记录,列称为属性,对应存储文件中的字段,所以本题答案为D。

9.D解析:本题考查宏替换的规则。宏替换有两类:简单的字符替换和带参数的宏替换。使用宏应注意:①宏定义仅仅是符号替换,不是赋值语句,因此不做语法检查:②为了区别程序中其他的标示符,宏名的定义通常用大写字母,但不是必须用大写;③双引号中出现的宏名不替换;④使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。

10.B

11.A

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

13.D解析:C语言规定,所有字符常量都可以化为整型常量来处理,因而字符常量也可以参与算术运算。注:字符常量参与算术运算时,其实是使用其对应的ASCII码值进行计算。本题中,'a'对应的ASCII码值是97。题中虽然没有给'6'和'0'的ASCII码值,但应该知道'6'-'0'是将字符'6'转换成整数6的表达式,所以c1='a'+'6'-'0'=103,c2='a'+'3'-'0'=100,按照字符型输出分别是g和d。

14.B

15.D循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。

16.B

17.D

18.D解析:本题考查的知识点是运算符的优先级。在这个表达式中,优先级最高的是(int)a,也就是对5.5取整,结果是5,其次是b/b,即2.5/2.5,结果是1.000000,最后相加结果为6.000000(表达式的最终结果为实型),所以4个选项中D正确。

19.C

20.C解析:软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,软件没计是确定系统的物理模型。软件测试即使用人工或自动手段来运行或测定某个系统的过程,其日的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件调试后要进行回归测试,防止引进新的错误。

21.33333333解析:本题考查for循环,for(cc=1;cc<=4;cc++)表示循环4次,a+=3表示每次a的值增加3,但是子函数中没有将变量a定义为static类型,所以每次调用完子函数之后,变量a所做的改变都不能保存,这样在下一次调用子函数时,a的初值仍是0,所以不管调用多少次,子函数输出始终是3。

22.n/=10或n=n/10或n=(n-s)/10或n=(n-n%10)/10n/=10或n=n/10或n=(n-s)/10或n=(n-n%10)/10解析:根据s=n%10可知:此操作可以将输入的数据n的最后—位赋给s,根据题目的要求是要将输入的数据逆序输出,现在已经将原数据的个位输出,在其后如果执行n/=10司将原数据的个位数去掉,满足do....while的条件继续s=n%10操作,此时可求出十位上的数进行输出,继续执行n/=10操作,与上相同最后将百位上的数进行输出,所以该题答案为:\u3000n/=10。

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

24.350350解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的结点。因此,设一棵完全二叉树具有n个结点,若n为偶数,则在该二叉树中有n/2个叶子结点以及n/2-1个度为2的结点,还有1个是度为1的结点:若n为奇数,则在该二叉树中有[n/2]+1个叶子结点以及[n/2]个度为2的结点,没有度为1的结点。本题中,完全二叉树共有700个结点,700是偶数,所以,在该二叉树中有350个叶子结点以及349个度为2的结点,还有1个是度为1的结点。所以,本题的正确答案为350。

25.s[i]!='\0's[i]!='\\0'解析:本题是要删除字符数组中和c一样的字符,for循环实现的功能是逐个读出字符数组s中的元素,并和字符c做比较,直到遇到字符串结束标志'\\0',结束循环,所以横线上应该填s[i]!='\\0'。

26.gaga解析:考查了用字符指针处理字符串的方法。用字符指针处理字符串,首先要使指针指向这个字符串,即题中的ptr1=a和ptr2=b,然后就是通过指针的移动可以引用到字符串中的每一个字符。题中的*(ptr1+k)是使指针ptr1向后移动k个位置,然后取出指向的字符。

27.中序中序解析:在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历。前疗遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然先遍历右子树,然后访问根结点,最后遍历左子树。

28.252137252137解析:本题中先定义了整型变量a、b和c,然后分别给赋值a为25,b为八进制的025,c为十六进制0x25。然后调用pruntf()函数将a、b和c分别用十进制输出,且中间用空格隔开,八进制025转换为十进制的值为21,十六进制的0x25转换为十进制的值为37,故最后的输出结果为252137。

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

30.

31.n/2n/2解析:删除一个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2;所以总体平均移动元素个数为n/2。

32.!knahT!knahT解析:此程序是一道次序颠倒题,即输入'Thank!',则输出'!knahT'。

33.3535解析:在主函数中通过定义和赋初值使p和q分别指向了x和y,执行函数调用“swap(p,q)”,把p和q中的地址值传给了形参指针变量a和b,a和b分别指向7实参x和y。在函数swap()中交换了指针变量a和b的值,并没有交换a和b指向的实参的值,所以函数调用返回后x和y依旧是原来的值。

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

35.11解析:在执行逻辑表达式“j=!ch&&i++”时,首先判断j=!ch的值,因为“ch='$'”不为0,所以“j=!ch=0”,编译系统便不再计算表达式“i++”的值,i的值不变,仍为1。

36.k=p;k=p;解析:为要寻找数组中的最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查是从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k)更大时,应该用p更新k。所以在空框处应填入代码“k=p;”。

37.44解析:一维数组元素的定义形式为:数组名[N],则该数组中元素的下限是0,上限是N-1。

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

39.s%10*s1+t

40.n1=%d\nn2=%d\n或n1=%d\nn2=%d或n1=%2d\nn2=%2d\n或n1=%2d×nn2=%2dn1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d×nn2=%2d解析:printf函数有两种参数:格式控制参数和输出项参数,其中格式控制参数由两种成分组成;格式说明和普通字符,普通字符将被简单地复制显示,格式说明项将引起一个输出参数项的转换与显示,它是由“%”引出并以一个类型描述符结束的字符串。本题中,n1=和n2=就是普通字符,可以直接显示,又因为n1,n2为整数,所以格式说明项为%d,也可以在%与d之间加上域宽,另外还要在每行输出结束时加转义字符\\n进行换行。所以,应填写n1=%d\\nn2=%d\\n,n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d\\nn2=%2d。

41.B解析:两个相同的数位或和位与的结果还是这个数,所以选项A和D都不正确。两个非0的数逻辑或的结果为真,也就是1,所以选项C不正确。位异或是当两个数对应位的值不同时该位结果为1,相同时该位结果为0,两个相同的数的所有对应位都相同,所以结果肯定为0。故应该选择B。

42.D解析:p指向数组的第1个元素,由于运算符->优先级高于运算符++,可知选项A应先取p->n的值5,再使p++指向下一个元素;选项B,先取p->n的值5作为表达式的值,再使p->n的值加1;选项C与选项B等价:选项D,先使p->n的值增1(即值为6),再以此值作为表达式的值,本题应选择选项D。

43.A解析:维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段。软件工程学的目的就在于提高软件的可维护性,同时也要设法降低维护的代价。

软件维护通常有以下四类;

①为纠正使用中出现的错误而进行的改正性维护;

②为适应环境变化而进行的适应性维护;

③为改进原有软件而进行的完善性维护;

④为将来的可维护和可靠而进行的预防性维护。

软件维护不仅包括程序代码的维护,还包括文档的维护。文档可以分为用户文档和系统文档两类。但无论是哪类文档,都必须与程序代码同时维护。只有与程序代码完全一致的文档才有意义和价值。由此可知,本题中选项B、C、D中的说法都是错误的。

44.D解析:本题中是一个含有两个结点的循环链表。

C语言中结构体的定义为:

struct结构题类型名

{

成员项表;

};

45.B解析:在面向对象的程序设计中,一个对象是一个可以独立存在的实体。各个对象之间相对独立,相互依赖性小。所以,选项B错误,应为本题的正确答案。

46.C解析:C语言的标识符的定义为:以字母或下划线开头的由字母、数字字符、下划线组成的字符串。而且标识符不能与关键字相同。

47.D解析:用户标识符与关键字相同时,程序在编译过程中将给出出错信息。注意:选项D)应该改为用户标识符与关键字相同,程序在编译时将给出出错信息。注意:合法的标识符第一个字符必须为字母或下划线。

48.B解析:程序运行初始时,x被赋值7,y被赋值3,因为y为整型变量,因此表达式:y=x/y=7/3=2。

49.D解析:选项D)为两条语句。

50.C解析:在表达式中3/2是一个整型表达式,它的运算结果应该为整型,值为1。当变量x与其相加时转换为双精度实型即y=1.000000+1.000000=2.000000。所以,4个选项中选项C符合题意。

51.C解析:在结构化设计方法中生成的结构图(SC)中,包括以下4种成分:模块(用矩形框表示)、调用(带有箭头的连线)、模块间信息传递(带有圆圈的小箭头)、辅助符号(如菱形符号表示有条件的选择,循环调用符号表示循环调用下层模块等)。

52.A

53.B解析:信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不合晰问的。模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。衡量软件的模块独立性的度量标准是耦合性和内聚性。一个模块的内聚性越强,则该模块的模块独立性越强。而内聚性是信息隐蔽和局部化概念的自然扩长。

54.B解析:本题定义了两个很相似的子函数互相调用,子函数首先输出st[i],然后判断i是否小于3,是的话就让i增2后调用另一个子函数。在主函数中只调用了一次funcl(0),funcl()输出st[0],然后调用func2(2),func2()输出st[2],又调用func1(4),此时i不小于3,所以funcl()只输出st[4]就返回了。故最终输结果为h1o,正确答案为B。

55.D解析:在格式输入中,要求给出的是编译的地址,而D)答案中给出的s[1]是一个值的表达式。

56.B解析:观察可知图形共4行,主函数中通过一个for5循环循环4次,输出4行。第1行输出3个空格和1个*,第2行输出2个空格和3个*,第3行输出1个空格和5个*,第4行输出7个*,主函数中通过第2个循环控制每行的输出空格数,第3个for循环控制输出*的个数,总结规律:每行输出*的个数,总比前一行的多2个,且第1行的个数为1,可以断定每行输出*的个数组成了一个公差为2的等差数列,所以每行输出。的个数即该等差数列的通项,故该空白处应该填写2*i-1,所以,4个选项中选项B符合题意。

57.A解析:本题涉及C语言最基本的两个知识点:①C程序是由函数构成的,有且仅有一个主函数,也可以有其他的函数;②整数在允许的范围内可以准确无误的表示出来,但计算机的存储能力有限,不能表示无限精度的实数。

58.D解析:由题意可知,小写字符a和大写字符A的ASCII代码相差为32,所以选项C)能将大写字符c的ASCII代码转换为小写字符c的ASCⅡ代码;选项A)和C)左侧的表达式都是大写字符c与大写字符A的差与'a'的ASCII代码的和就是小写字符c的ASCII代码。而选项D)中应该是加上'a',而不是减去'a'。

59.B解析:本题主要考查按位与(&)运算的知识点。“&”是对两个运算量相应的位进行逻辑与,“&”的规则与逻辑与“&&”相同。x=2的二进制为00000010,y=3的二进制为00000011,x&y=00000010,转化为十进制即为2。

60.B其中B选项的getchar函数用于从终端读入字符。故本题答案为B选项。

61.A

62.B因X为2,所以!X时表达式值为0,因Y为1,y--表达式的值为1然后自减1,y为0,所以!x||y--时表达式的值为1。

63.Atypede伪原类型起个别名,并没有增加新的类型,所以答案选择A)。

64.B1、12、123、1234、12345可以写成l=0*10+1、12=1*10+2、123=12*10+3、1234=123*10+4、12345=1234*10+5,按照这种规律后一项可以等于前一项乘以10再加上循环变量。这属于循环里面比较难的题目,需要考生找出其数据的内在规律,并转化为计算机语言,基本上都是累加和累乘两种。

65.A本题中a>b的!条件不满足,因此不执行逗号表达式“a=b,b=-c;”的操作,而是执行“c=a”的操作,即c的值为10。’故本题答案为A)。

66.A

67.C解析:C语言规定,每个语句和数据定义以分号结束,则说明选项A是两条语句,前—条是对变量a作双精度型定义的语句,而后一个“b;”是一个缺少类型的不正确的定义形式,如果是定义多个变量,则应用逗号隔开;当定义多个变量赋同—个值时,不能用等式连写的方式,如选项B的“double\u3000a=b=7;”应写成“double\u3000a=7,b=7;”所以选项B错误,选项C正确;在定义语句时,类型与变量名之间应用空格分隔,而

温馨提示

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

评论

0/150

提交评论