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.若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch语句是()。

A.switch(a+9){casecl:y=a-b;casec2:y=a+b;}

B.switcha*b{casel0:x=a+b;default:y=a-b;}

C.switch(a+b){casel:case3:y=a+b;break;case0:case4:y=a-b;}

D.switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}

2.若有定义“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

3.设有如下函数定义:#include<stdio.h>intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若执行调用语句“n=fun(3);”,则函数fun总共被调用的次数是()。

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

4.有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&i,&y,name);当执行上述程序段,从键盘上输入555667777abc后,y的值为()。A.55566.0B.566.0C.7777.0D.566777.0

5.下列叙述中正确的是()。A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对

6.以下对结构体类型变量的定义中,不正确的是()。

A.typedefstruetaa{intn;floatm;}AA;AAtdl;

B.#defineAAstructaaAA{intn;floatm;}tdl;

C.struct{intn;floatm;}aa;structaatdl;

D.struct{intn;floatm;}tdl;

7.用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时()。

A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都要修改D.队头,队尾指针都可能要修改

8.有以下程序intfun(intx,inty){return(x+y);}main{inta=1,b=2,C=3,sum;sum=fun((a++,b++,a+b),c++printf("%d\n",sum);)执行后的输出结果是()。A.6B.7C.8D.9

9.

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

11.设有定义语句

则以下叙述正确的是().

A.f是指向函数的指针变量,该函数具有_个int类型的形参

B.f是基类型为int的指针变量

C.f是指向int类型一维数组的指针变量

D.f是函数名,该函数的返回值是基类型为int类型的地址

12.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩.,则表SC的关键字(键或码)为()

A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩

13.已知函数的调用形式:fread(buffer,size,count,fp);其中buffer代表的是()。

A.一个整型变量,代表要读入的数据项总数

B.一个文件指针,指向要读的文件

C.一个指针,是指向的输入数据放在内存中的起始位置

D.一个存储区,存放要读的数据项

14.

15.下面程序的输出结果是

#include<stdio.h>

main()

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

p=a;

printf("%d\n",*p+9);}

A.0B.1C.10D.9

16.有以下程序段:intx=3;do{printf("%d",x-=2);)while(!(--x));其输出结果是()。A.1B.30C.1-2D.死循环

17.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()

A.每个元素都有一个直接前件和直接后件

B.线性表中至少要有一个元素

C.表中诸元素的排列顺序必须是由小到大或由大到小

D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件

18.在结构化程序设计中,模块划分的原则是()。

A.各模块应包括尽量多的功能

B.各模块的规模应尽量大

C.各模块之间的联系应尽量紧密

D.模块内具有高内聚度,模块间具有低耦合度

19.

20.若有定义:int*p[3];,则以下叙述中正确的是()。

A.定义了一个基类型为int的指针变量p,该变量具有三个指针

B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针

C.定义了一个名为*p的整型数组,该数组含有三个int类型元素

D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素

二、2.填空题(20题)21.有下列程序;

#include<stdio.h>

main()

{charc;

while((c=getchar())!=',')putchar(++C);

}

程序运行时,如果从键盘输入:A,B,<CR>,则输出结果为______。

22.若a是int型变量,则表达式(a=2*3,a*2),a+6的值为______。

23.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护o

24.下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】=='')flag=0;

elseif(【】){flag=1;num++}

}

return【】;}

25.下列程序的输出结果是【】。

main()

{inta=1,b=2;

a=a+b;b=a-b,a=a-b;

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

}

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

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}}

27.算法的复杂度主要包括【】复杂度和空间复杂度。

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

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

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

请填空。

#include"math.h"

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

main()

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun(【】);

y2=fun(【】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

29.设有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

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

30.以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件中,形成文本文件,并将字符的个数写到文件的尾部。请填空。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[32];intcount=0;

printf(”Inputthefilename:");

scanf("%s",fname);

if((fp=fopen(【】,"w+"))==NULL)

{printf("Can'topenfile:%s\n",fname);exit(0);}

printf("Enterdata:\n");

while((ch=getchar())!='#')

{fputc(ch,fp);count++;}

fprintf(【】,"\n%d\n",count);

fclose(fp);

}

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

32.二叉树的遍历可以分为三种:前序遍历、()遍历和后序遍历。

33.对长度为10的线性表进行冒泡排序,对坏情况下需要比较的次数为______

34.若变量x、y已定义为int类型且X的值为33,y的值为3,请将输出语句printf((),x/y);补充完整,使其输出的计算结果形式为:x/y=11。

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

main()

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

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

printf("\n");}

36.顺序存储方法是把逻辑上相邻的结点存储在物理位置______的存储单元中。

37.有以下程序:

fun(inta,intb)

{if(a>b)return(a);

elsereturn(b);

}

main()

{intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);

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

}

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

38.以下程序的运行结果是【】。

#include<string.h>

typedefstructstudent{

charname[10];

longsno);

floatscore

}STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90}

c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(,)>0)d=b;

if(strcmp(,)>0)d=c;

printf("%1d%s\n",d.sno,p->name);

}

39.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【】。

40.下列程序的输出结果是______。

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

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

printf("\n");

}

三、1.选择题(20题)41.以下程序的输出结果是_______。#include<stdio.h>main(){inti;for(i=1;i<5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("$\n");}

A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$

42.“年龄在18-25之间”这种约束是属于数据库当中的

A.原子性措施B.一致性措施C.完整性措施D.安全性措施

43.设有以下语句charx=3,y=6,Z;z=x^y<<2;则z的二进制值是

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

44.若要求定义具有10个血型元素的一维数组a,则以下定义语句中错误的是()。

A.#definmeN10inta[N];

B.#definen5inta[2*n];

C.inta[5+5];

D.intn=10,a[n];

45.设有变量说明int(*p)[m],其中的标识符p是()。

A.m个指向整型变量的指针

B.指向m个整型变量的指针

C.一个指向具有m个整型元素的一维数组的指针

D.具有m个指针元素的一维指针数组,每个元素都指向整型变量

46.有以下程序:main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序运行后的输出结果是______。

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

47.下列程序的执行结果是()。#include<stdio.h>main(){inta,b,c;a=b=2;c=(a++)-1;printf("%d,%d",a,c);c+=-a+++(++b);printf("%d,%d",a,c);}

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

48.有以下程序

#include<stdio.h>

voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/

{intt,i,j;

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

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

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()

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

fun(c+4,6);

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

printf("\n");

}

程序的运行结果是

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

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

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

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

49.以下程序(程序左边的数字为符加的行号)。1#include<str.h>2#include<stdio.h>3main()4{chars[]="string";5puts(s);6strcpy(s,"hello");7printf("%3s\n",s);}

A.没有错B.第1行有错C.第6行有错D.第7行有错

50.以下不能正确计算代数式

值的C语言表达式是()。

A.1/3*sin(1/2)*sin(1/2)

B.sin(0.5)*sin(0.5)/3

C.pow(sin(0.5),2)/3

D.40546.0*pow(sin(1.0/2),2)

51.结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法

A.对象B.数据结构C.数据流D.目标

52.在C语言中,下列关于文件操作的叙述正确的是()。

A.对文件操作必须先关闭文件B.对文件操作必须先打开文件C.对文件操作顺序没有统一规定D.以上三种说法全错

53.如果一个算法显式地调用自己则称为()

A.直接递归B.自用递归C.间接递归D.外用递归

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

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

55.表达式'8'-'2'的值是()。

A.整数6B.字符6C.表达式不合法D.字符8

56.表达式3.6-5/2+1.2+5%2的值是A.4.3B.4.8C.3.3D.3.8

57.设函数fun的定义形式为voidfun(charch,floatx){…}则以下对函数fun的调用语句中,正确的是

A.fun("abc",3.0);

B.t=fun('D',16.5);

C.fun('65',2.8);

D.fun(32,32);

58.C语言中,组成数据文件的成分是()。A.A.记录

B.数据行

C.数据块

D.字符(字节)序列

59.有以下程序

#include<stdio.h>

main()

{FILE*fp;intk,n,a[6]={1,2,3,4,5,6};

fp=fopen("d2.dat","w");

fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);

fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);

fclose(fp);

fp=fopen("d2.dat","r");

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);

}

程序运行后的输出结果是

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

60.设变量已正确定义,则以下能正确计算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;

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

62.在下列语句中,其含义为“q是一个函数指针,该指针指向整型数据”的定义语句是()。

A.int**q;B.int(*q);C.int*q;D.int*q;

63.

64.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

65.在HTML文档中,应该在下列哪个部分引用外部样式表?()A.A.文档的末尾

B.<title>部分

C.<body>部分

D.<head>部分

66.以下对一维数组c进行正确的定义初始化的语句是

A.intc[10]=0;B.intc[10]={0}*10;

C.intc[1]={0,0,0,0,0,0,0};D.intc[10]={0};

67.

68.在URL中,默认的Web服务器的端口是()。

A.80B.8080C.1024D.2048

69.

70.

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

#include<stdio.h>

voidp(int*x)

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

}

voidmain()

{inty=3;

p(&y);

}

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

71.有以下程序:

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

A.7.5B.31.5C.程序有错无输出结果D.14.0

72.有以下程序main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}程序运行后的输出结果是______。

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

73.

74.

75.有以下程序

76.

数字字符0的ASCII值为48,运行以下程序的输出结果是()。

main

(chara=1,b=2;

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

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

77.有以下程序:

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

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

78.在软件开发中,需求分析阶段产生的主要文档是()。

A.可行性分析报告B.软件需求规格说明书C.概要设计说明书D.集成测试计划

79.

有以下程序

#include<stdio.h>

main

{inty=9;

for(;y>0;y--)

if(y%3==0)printf("%d",--y);

}

程序的运行结果是()。

A.741B.963C.852D.875421

80.

五、程序改错题(1题)81.下列给定程序中,函数fun的功能是:计算整数n的阶乘。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是实现B=A+AT,即将矩阵A加上A的转置,结果存放在矩阵B中。计算结果在main()函数中输出。举例如下。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>voidfun(inta[3][3],intb[3][3]){}voidmain(){ inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3]; inti,j; system(“CLS”); fun(a,t); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%7d”,t[i][j]); printf(“\n”); }}

参考答案

1.D选项A,当cl和c2相等时,不成立;选项B,a*b要用括号括起来;选项C,case与后面的数字用空格隔开。

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

3.B执行调用语句“n=fun(3);”,3被当作实参传递进去,进行了一次调用。3被当作实参传进去后,程序会执行“elsereturnfun(k-1)+1;”,函数被调用了第2次,参数是3-1,也就是2。2被当作参数传进去后,程序会执行“elsereturnfun(k-1)+1;”函数被调用了第3次,参数是2-1,也就是1。1被当作实参传进去后,程序会执行“elseif(k==1)return1;”,函数不再被递归调用。所以最终结果为3次。故本题答案为B选项。

4.B变量J只接收输入数据的前两位,从第三位开始直到空格之间的输入整数都会被保存到浮点型变量Y中。

5.D算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法,所以A错误。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。故答案为D选项。

6.C解析:定义结构体类型的变量有如下几种方法:

①定义结构体类型的同时,定义结构体类型的变量,如:

stractaa

{…}tdl;

选项B)中将宏名AA用宏体structaa替换后,与该定义形式一样,因此是正确的。在这一定义形式中,结构体类型名aa是可以省略的,因此,D)项也是正确的。

②先定义结构体类型,然后再定义结构体类型的变量,形式如下:

structaa

{…};

strnctaatdl;

这种定义形式也可演变为:先用类型定义语句typedef将该结构体类型定义成一个类型名AA,然后直接用该类型名AA定义一个结构体变量(这时不再需要使用关键字struct)。因此选项A)正确。

7.D

8.Csum=fun((a++,b++,a+b),c++)中a++,b++,a+b为逗号表达式,运算后取a+b的值为5,c++为3,故函数调用后输出结果为8。

9.B

10.C

11.A

12.C学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C项。

13.C解析:数据块输入/输出函数的调用形式为:fread(buffer,size,count,fp)。fread函数参数说明:“buffer”是一个指引,对fread来说,它是读入数据的存放地址;“size”是要读写的字节数;“count”是要进行读写多少个size字节的数据项;“fp”是指文件型指针。

14.C

15.C解析:此题考查了指针引用一维数组元素的方法。*p+9因为运算符'*'的优先级高于'+',所以输出结果为p指向的元素1,然后加9,值为10。

16.C本题考查do-while循环,先执行d0输出的x的值为1,接着执行while语句,此时--x的值为0,x也为0,而非0为1,循环成立,接着执行do输出X值为-2,执行--x后,表达式为-2,而!(--x)为0,退出循环。

17.D解析:线性表可以为空表,排除选项B。第一个元素没有直接前件,最后一个元素没有直接后件,故排除选项A。线性表的定义中,元素的排列没有规定大小顺序,故选项C也有误,只有D项是正确的。

18.D解析:本题考查软件工程中软件设计的概念和原理。人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得到如下的启发式规则:

(1)改进软件结构,提高模块独立性;通过模块的分解或合并,力求降低耦合提高内聚。低耦合也就是降低不同模块间相互依赖的紧密程度,高内聚是提高一个模块内各元素彼此结合的紧密程度。

(2)模块的规模应适中。一个模块的规模不应过大,过大的模块往往是由于分解不够充分:过小的模块开销大于有益操作,而且模块过多将使系统接口复杂。因此过小的模块有时不值得单独存在。

(3)模块的功能应该可以预测,但也要防止模块功能过分局限。如果模块包含的功能太多,则不能体现模块化设计的特点:如果模块的功能过分的局限,使用范围就过分狭窄。

经过上述分析,本题的正确答案是选项D。

19.D

20.B解析:当一个数组中的元素均为指针类型数据时,该数组就称为指针数组。int*p[3]表示此数组是指针类型的,每个数组元素(指针变量)都是指向一个整型的指针变量。

21.BB解析:因为c是字符类型变量,它只能接收一个字符,所以c=A,字符型变量在参与算术运算的时候是用其相应的ASCII码参与运算的,这样++c得到字母B的ASCII码,用putchar函数输出是输出其相应的字符,所以是B。

22.1212解析:本题考查逗号表达式的运算规则。逗号表达式的基本格式为:“表达式1,表达式2,…”,其整个表达式的结果取最后一个子表达式的值。本题中首先计算逗号表达式中的第1个表达式a=2*3=6,然后计算第2个表达式a*2,这时整个表达式的值为12,但要注意,因为第2个表达式并没有给a赋值,因此a的值不变;接下来执行最后一个表达式a+6=12,所以整个表达式最后的值为12。

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

24.*s++flag==0或*(s-1)==''num*s++\r\nflag==0或*(s-1)==''\r\nnum解析:在统计字符串单词个数的算法中,本题的flag是为了记录一个单词是否结束。第18空应填*s++;如果某个字符不是空格,则必需判断它是否是单词,如是,则使得flag的标志为1,num的值加1。本题判断方法是:先判断s所指向的字符是否为空格,如果是则使得flag=0,否则判断前一个字符是否是空格,如果是则说明这个字符是一个单词的开始,将flag标志为1,num的值加1,如果不是,则不必记录。故第19空应flag==0或*(s-1)=='';最后一个空格需填写的是返回的单词的个数,即num。

25.21

26.852852解析:循环前,变量y的值为9,其中的循环语句在y大于0情况下循环,每次循环后y的值减1。循环体是当y能被3整除时输出表达式--y,输出的是减1后的y值。这样,第一次循环因y为9,能被3整除,输出8,y也变成8。又经两次循环,y的值变为6,又让y减1变成5,并输出5;又经两次循环,y的值变成3,让y减1变成2,输出2;再经两次循环后,y的值变成0,结束循环。所以程序输出852。

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

28.x+8sin(x)x+8,sin(x)解析:考查考生对函数调用相关知识的了解。用x+8代替函数fun(doublex)中形式参数x;用sin(x)代替函数fun(doublex)中形式参数x。

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

30.fnamefpfname\r\nfp解析:fopen()函数实现打开文件的功能,通常的调用方式为:FILE*fp;fp=fopen(文件名,使用文件方式),因此,第一个横线处要求填写要打开文件的名字fname。fprintf()函数的—般调用方式为:fprintf(文件指针,格式字符串,输出表列),所以第二个横线处应填写fp。

31.s%10*s1+t

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

33.在最坏情况下冒泡排序法需要比较的次数为n(n-1)/2。

34.x/y=%dx/y=%d解析:本题考查prinff语句的输出格式。printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:printf('<格式化字符串>”,<参最表>)其中,格式化字符串包括两部分内容。一部分足正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以“%”开始,后跟一个或几个规定字符,用来确定输出内容格式。参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用“,”分开,且顺序一一

35.

36.相邻相邻

37.1212解析:函数fun的功能是求两个数当中的最大值。语句r=fun(fun(x,y),2*z)的执行过程为:首先计算fun(x,y),因x=3、y=8,所以结果为8;然后计算fun(8,2,*z),即计算fun(8,12),所以r=12。

38.2002shangxian2002shangxian解析:\'B\'的ASCII值是66。本题中指针变量p指向d,执行第一个if语句时,条件成立,d=b;执行第二个if语句时,条件不成立,故d=b,所以d.sno=2002,p->name'Shangxian'。

39.33解析:本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后一个表达式的值。本题中,首先i被赋值为2,再自加1,最后i++的值计算为3。

40.3691236912解析:本题考查最基本的for循环:for(cc=1;cc<5;cc++)规定循环次数为4次,每次a+=3即每次a的值增3,但因为fun函数中变量a为static类型,所以每次调用完于函数之后,变量a所做的改变都要保存。

41.C解析:当i不可以整除2时打印“*”然后打印“#”,不能整除2则执行continue,跳挝printf('#');语句,结束本次循环,返回到循环的起始点。当循环结束后,打印“$”。

42.C解析:对数据库各种特性必须有正确的理解。@解析@数据库的完整性是指数据的正确性和相容性(如学生的学号必须惟一,性别只能是女或男等),数据库是否具备完整性关系到数据库系统能否真实反映现实世界,因此维护数据库的完整性是非常重要的。注意:数据库的各种特性及表达形式。

43.B解析:本题考查两个位运算符。

按位异或运算符“^’是双目运算符,其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异或时,结果为1。

左移运算符“<<”是双目运算符,其功能是把“<<”左边的运算数的各二进位全部左移若于位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0,并且“<<”运算符的优先级高于“^’。

44.D解析:C语言规定,在定义数组时数组名后的方括号中必须是常量表达式,不能包含变量。因此,选项D中用变量n来定义数组的大小是错误的。故应该选择D。

45.C解析:本题考查指向数组的指针变量的声明。这里的p表示一个指向数组的指针;*p表示指针p指向地址的内容。

46.B解析:主函数中先定义了一个整型变量a,一个字符变量c并赋初值10,一个浮点型变量f并赋初值100.00和一个double型x,接着执行a=f/=c*=(x=6.5),该语句从右向左计算,先把6.5赋值给x(该括号表达式的值也为6.5),此时x的值变为6.5,然后执行c*=(x=6.5)相当于执行c=c*(x=6.5),此时c的值为65,接着向左执行f/c*=(x=6.5),语句相当于执行f=f/c,所以f的值为100/65≈1.538。接着向最右边执行“a=f”,由于a是整型变量,所以a最后去f的整数部分为1。程序最后输出的a、c、f和x的值(f和x只保留小数点后面1位)分别为1、65、1.5、6.5。所以,4个选项中选项B符合题意。

47.A解析:本题主要考查自加运算符(++、--)的使用。①前缀变量“++i、--i”,在使用i之前,先使i的值加1或者减1,再使用此时的表达式的值参与运算;②后缀变量“i++、i--”,先使用此时的表达式的值参与运算,在使用i之后,再使i的值加1或者减1。本题中计算表达式c=(a++)-1时先使用a的值进行计算,结果为c=2-1=1,然后将a的值加1,即执行完此语句后a的值是3;表达式c+=-a+++(++b)等价于c=c+(-a++)+(++b),c=1+(-3)+3=1,此时a=4,b=3。

48.D解析:在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

49.B解析:字符串复制函数strcpy包含在头文件string.h中,因此,程序中的第1行文件包含命令是错误的。

50.A

51.CC。【解析】结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

52.B解析:本题考查对文件的操作。文件打开后才可以对文件进行操作,使用结束后要关闭文件。对文件的操作都是顺序读写,即从文件的第一个数据开始,依次进行读写。

53.A

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

55.A解析:在C语言中,虽然字符都是变为其对应的ASCII码值来参与算术运算的,但字符间的相对位置关系还是不变的,字符8和字符2的ASCII码值相差仍是6。

56.D解析:*、/和%的优先级要高于+和—,同级别的运算符从左至右运算。所以本题首先计算5/2和5%2,虽然我们都知道5/2的结果应该是2.5,但C语言中规定了两个整数相除的结果为整数,而且是截尾取整,所以5/2的结果是2;5%2表示的是5除以2所得的余数,其结果为1。计算完后,表达式变为3.6-2+1.2+1,从左至右计算不难得出结果为3.8,故应该选择D。

57.D解析:题目中定义的函数fun()有两个参数,一个是字符型变量ch,另一个是浮点型变景x,函数类型是void即无返回值。选项A调用fun的第1个参数是字符串常量与字符变量不匹配,所以不正确。选项B是有返回值函数的调用形式,不正确。选项C的第1个参数是错误的字符常量,字符常量是用单引号括起来的—个字符(是转义字符可能有多个字符),故也不正确。选项D使用两个整型常量调用fun这在C语言中是允许的。因为整型到字符型可以自动转换,整型到浮点型也可以自动转换。故应该选择D。

58.D解析:C语言中的文件是流式文件。流式文件是一种无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为单位。

59.D解析:将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。

60.D解析:A选项,将f赋值为0,结果得到0,因为0乘任何数都为0;B选项,i<n,计算的是(n-1)!

温馨提示

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

最新文档

评论

0/150

提交评论