2021-2022年山西省太原市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2021-2022年山西省太原市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2021-2022年山西省太原市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2021-2022年山西省太原市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2021-2022年山西省太原市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年山西省太原市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列程序的输出结果是()。

intf1(intx,inty){returnx>y?x:y;}

intf2(intx,inty){returnx>y?y:x;}

main()

{inta=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,B),f1(c,D));

f=f1(f2(a,B),f2(c,D));

g=a+b+C+d-e-f;

phntf("%d,%d,%d\n",e,f,g);

}

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

2.算术运算符和圆括号有不同的运算优先级,对于表达式“a+b+c*(d+e)”,关于执行顺序,以下说法正确的是()。

A.先执行“(d+e)”得r2,再执行“c*r2”得r3,再执行“a+b”得r1,最后执行“r1+r3”得表达式最后结果

B.先执行“a+b”得r1,再执行“(d+e)”得r2,再执行“c*r2”得r3,最后执行“r1+r3”得表达式最后结果

C.先执行“(d+e)”得r2,再执行“c*r2”得r3,再执行“b+r3”得r4,最后执行“a+r4”得表达式最后结果

D.先执行“a+b”得r1,再执行“r1+c”得r5,再执行“(d+e)”得r2,最后执行“r5*r2”得表达式最后结果

3.以下选项中非法的字符常量是A.A.'\101'

B.'\65'

C.”\xff'

D.'\019'

4.在循环队列中,若front与rear分别表示对头元素和队尾元素的位置,则判断循环队列空的条件是()。

A.front==rear+1B.rear==front+1C.front==rearD.front==0

5.关于指针,以下说法正确的是()。A.可以直接向指针中写入数据

B.若指针指向变量,则可以向指针所指内存单元写入数据

C.指针可以指向内存中任何位置,并写入数据

D.两个指针可以通过加运算求和,形成一个功能更强大的指针

6.设某文件内排序后得到100个初始归并段(初始顺串),若使用多路归并排序算法,且要求三趟归并完成排序,问归并路数最少为()

A.5B.6C.7D.8

7.第

42

若有说明语句

chara[]="Itismine";

char*p="Itismine";

则以下不正确的叙述是

A.a+1表示的是字符t的地址

B.p指向另外的字符串时,字符串的长度不受限制

C.p变量中存放的地址值可以改变

D.a中只能存放10个字符

8.以下描述中正确的是

A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B.do-while循环由d。开始,用while结束,在while(表达式)后面不能写分号

C.在do-while循环体中,是先执行一次循环,再进行判断

D.do-while循环中,根据情况可以省略while

9.下面说法正确的是()。A.A.一个C程序可以有多个主函数

B.一个C语言的函数中只允许有一对花括号

C.C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内

D.在对C程序进行编译时,可以发现注释行中的拼写错误

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

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

11.在有序双向链表中定位删除一个元素的平均时间复杂度为()

A.O(1)B.O(N)C.O(logN)D.O(N*logN)

12.以下说法错误的是:()

A.全局变量就是在函数外定义的变量,因此又叫做外部变量

B.一个函数中既可以使用本函数中的局部变量,也可以使用全局变量

C.局部变量的定义和全局变量的定义的含义不同

D.如果在同一个源文件中,全局变量和局部变量同名,则在局部变量的作用范围内,全局变量通常不起作用

13.对包含N个元素的散列表进行检索,平均检索长度________

A.为o(log2N)B.为o(N)C.不直接依赖于ND.上述三者都不是

14.已知各变量的类型说明如下则以下符合C语言语法的表达式是()。A.a+=a-=(b=4)*(a=3)B.a=a*3=2C.x%(-3)D.y=f1oat(i)

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

A.使用三种基本结构构成的程序只能解决简单问题

B.结构化程序由顺序、分支、循环三种基本结构组成

C.C语言是-种结构化程序设计语言

D.结构化程序设计提倡模块化的设计方法

16.以下属于C语言实型常量的是()。

A.+6eB.e6+6C.6e+6D..e+6

17.若有语句“typedefstructTT{charc;inta[4];}CIN;”,则下列叙述中正确的是()。

A.CIN是structTT类型的变量

B.TT是struct类型的变量

C.可以用TT定义结构体变量

D.可以用CIN定义结构体变量

18.以下有4组用户标识符,其中合法的一组是()。

A.FOr-subCase

B.4dDOSize

C.f2_G3IFabc

D.WORDvoiddefine

19.视图设计一般有3种设计次序,下列不属于视图设计次序的是()。

A.自顶而下B.由内向外C.由外向内D.自底向上

20.以下程序拟实现计算sum=1+1/2+1/3+…+1/50。#include<stdio.h>main(){inti;doublesum;sum=1.0;i=1;do{i++-;sum+=1/i;}while(i<50);printf(“sum=%lf\n”,sum);}程序运行后,不能得到正确结果,出现问题的语句是()。

A.sum+=1/i;B.while(i<50);C.sum=1.0D.i++;

二、2.填空题(20题)21.执行以下“for(i=1;i++<=4;i++);”语句后,变量i的值是()。

22.以下程序的输出结果是______。

main()

{inta=1,b=2;

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

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

}

23.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【】。

24.以下程序输出的最后一个值是【】

intff(intn)

{staticintf=1;

f=f*n;

returnf;

}

main()

{inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i));

}

25.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

【】

if(s[*k]<s[i])*k=i;

return【】;}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

clrscr();

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);}

26.若有以下程序

main()

{chara;

a='H'-'A'+'0';

printf("%c\n",A);

}

执行后输出结果是【】。

27.一张3.5英寸软盘大约能存储140万个ASCⅡ字符,若存放汉字大约能存放【】个。

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

#include<stdio.h>

intfun(intx)

{intp;

if(x==0‖x==1)

return3;

else

p=x-fun(x-2);

returnp;

}

voidmain()

{printf("\n%d",fun(11));

29.数据管理技术发展过程经过人工管理、文件系统和数据库系统这3个阶段,其中数据独立性最高的阶段是【】。

30.近年来形成了软件开发的多种模式,大致有3种类型:基于瀑布模型的结构化生命周期方法、基于动态定义需求的【】方法和基于结构的面向对象的软件开发方法。

31.以下程序的输出结果为【】。

main()

{intk=1;

white(k<=15)

if(++k%3!=2)continue;

elseprintf("%d",k);

printf("\n");

}

32.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。

voidsstrcpy(char*s,char*t)

{while(*s++=______);}

main()

{charstr1[100],str2[]="abcdefgh";

sstrcpy(str1,str2);

printf("%s\n",str1);

}

33.以下程序的输出结果是______。

main()

{chars[]="abcdef";

s[3]='\0';

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

}

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

35.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是

【】。

#include<stdio.h>

main()

{chara,b;

a=getchar();scanf("%d",&b);

a=a-'A'+'0';b=b*2;

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

}

36.数据结构分为线性结构和非线性结构,线性表、栈和队列都属于【】。

37.单元测试又称模块测试,一般采用【】测试。

38.若有语句:

inti=-19,j=i%4;

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

则输出结果是【】。

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

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

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

main()

{

intp[7]={11,13,14,15,16,17,18};

inti=0,j=0;

while(i<7&&p[i]%2==1)j+=p[i++];

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

}

三、1.选择题(20题)41.下列程序的输出结果是()。

main

{

doubled=3.2;intx,y;

x=1.2;y=(x+3.8)/5.0;

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

}

A.3B.3.2C.0D.3.07

42.下面描述中,不符合结构化程序设计风格的是

A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑

B.注重提高程序的可读性

C.模块只有一个人口和一个出口

D.使用goto语句

43.有以下程序:main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,B);}程序运行后的输出结果是()。

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

44.有以下程序,程序运行后的输出结果是______。intf(intb[][4]){inti,j,s=0;for(j=0;j<4;j++){i=j;if(i>2)i=3-j;s+==b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}};printf("%d\n",f(a));}

A.22B.11C.18D.16

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

A.34B.42C.43D.33

46.结构化程序设计主要强调的是

A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性

47.有以下程序:voidf(inty,int*x){y=y+*x;*x;=*x+y;}main(){intx=2,y=4;f(y,&x);-printf("%d%d\n",x,y);}执行后的输出结果是______。

A.84B.88C.48D.42

48.设intx=7,则~x的值是()。

A.-8B.-7C.-1D.1

49.有如下程序:main(){intn=9;while(n>6){n--;printf("%d",n);}}该程序的输出结果是

A.987B.876C.8765D.9876

50.以下程序运行后,输出结果是#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

51.阅读以下程序及对程序功能的描述,其中正确的描述是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf("Entertheinfilename:\n");scanf("%s",infile);printf("Entertheoutfilename:\n");scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL){printf("cannotopeninfile\n");exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("cannotopenoutfile\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}

A.程序完成将磁盘文件的信息在屏幕上显示的功能

B.程序完成将两个磁盘文件合二为一的功能

C.程序完成将一个磁盘文件复制到另一个磁盘文件中

D.程序完成将两个磁盘文件合并并在屏幕上输出

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

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

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

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

53.下列数据中,不合法的C语言实型数据的是()。

A.0.123B.123e3C.2.1e3.5D.789.0

54.若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是

A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)

55.下列程序段中,不能正确赋值的是

A.char*p,ch;p=&ch;scanf("%c,&p")

B.char*p;p=(char*)malloc(1)scanf("%c",p);

C.char*p*p=getchar();

D.char*p,ch;p=&ch;*p=getchar();

56.下列叙述中正确的是______。

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

B.数据库设计是指设计数据库管理系统

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

D.数据库系统中,数据的物理结构必须与逻辑结构一致

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

A.耦合性B.内聚性C.复杂性D.数据传输特性

58.若输入bcdefgh、m、abcdefg,以下程序的输出结果为()。#include<stdio.h>#include<string.h>main(){inti;charstring[20],str[3][20];for(i=0;i<3;i++)gets(str[i]);if(strcmp(str[0],str[1])>0)strcpy(string,str[0]);elsestrcpy(string,str[1]);if(strcmp(str[2],string)>0)strcpy(string,str[2]);printf("%s",string);}

A.bcdefghB.mC.abcdefgD.bcdefgh或abcdefg

59.下面关于完全二叉树的叙述中,错误的是______。

A.除了最后—层外,每—层上的结点数均达到最大值

B.可能缺少若干个左右叶子结点

C.完全二叉树—般不是满二叉树

D.具有结点的完全二叉树的深度为[log2n]+1

60.下面程序的输出结果是_______。#include<stdio.h>main(){char*p[]={"DOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}

A.SOB.SPC.SPOPKD.SHOB

四、选择题(20题)61.下列函数的功能是()。

A.将a所指字符串赋给b所指空间

B.使指针b指向a所指字符串

C.将a所指字符串和b所指字符串进行比较

D.检查a和b所指字符串中是否有‘、O’

62.有以下程序:

#include<stdio.h>

#include<string.h>

main()

{charstr[][20][{"One*World","One*Dream!"},*p=str[1];

prinft("%d,",strlen(p));printf("%s\n",p);

}

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

A.9,0ne*World

B.9,0ne*Dream!

C.10,One*Dream!

D.10,Ome*World

63.下列关于C语言文件的叙述中正确的是()。A.文件睦数据序列组成,可以构成二进制文件或文本文件

B.文件由结构序列组成,可以构成二进制文件或文本文件

C.文件由一系列数据依次排列组成,只能构成二进制文件

D.文件由字符序列组成,其类型只能是文本文件

64.在数据库设计中,用E-R图来描述信息结构,但不涉及信息在计算机中的表示,它是数据库设计的()阶段。

A.需求分析B.概念设计C.逻辑设计D.物理设计

65.

A.a=50b=50(空格分开.B.5050(空格分开.C.a=50,b=50D.50,50

66.有以下程序:

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

A.4B.10C.14D.6

67.

68.

69.

70.

71.以下选项中与

72.为了避免嵌套的条件分支语句if—else的二义性,C语言规定:C程序中的else总是与_____组成配对关系。

A.缩排位置相同的ifB.在其之前未配对的ifC.在其之前未配对的最近的ifD.同一行上的if

73.

74.非空的循环单链表head的尾结点(由p所指向)应该满足

A.p->next==NULLB.p==NULLC.p->next=headD.p=head

75.以下符号C语言语法的实型常量是()。

A)1.2E0.5B)3.14159E

C)5E-3D)E15

76.

77.有定义:“inta=2,b=3,c=4;”,则下列选项中值为0的表达式是()。

A.(!a==1)&&(!b==0)B.(a<b)&&!cC.D.1E.a&&bF.aG.H.(b+b)&&(c-a)

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

A.inta=b=0;

B.charA=65+1,b=’b’;

C.floata=1,*b=*a,*C=&b;

D.doublea=0.0;b=1.1;

79.有以下程序

main()

{chara[]={’a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’\0’};

inti,j;

i=sizeof(a);

j=strlen(a);

printf("%d,%d\b",i,j);

}

程序运行后的输出结果是

A.9,9B.8,9C.1,8D.9,8

80.

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:逐个比较P.q所指两个字符串对应位置上的字符,并把ASCIl值大或相等的字符依次存放到C所指的数组中,形成一个新的字符串。

例如,若主函数中a字符串为“aBCDeFgH”,b字符串为“Abed”,则C中的字符串应为“aBcdeFgH”。请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将a、b两个两位正整数合并成一个新的整数放在c中。合并的方式是将a中的十位数和个位数依次放在变量c的百位和个位上,b中的十位数和个位数依次放在变量c的千位和十位上。例如,当a=45,b=12,调用该函数后c=1425。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}

参考答案

1.A解析:根据函数intf1(intx,inty){returnx>y?x:y;}和int馒(intx,inty){retumx>y?y:x;}的定义可知,如果x>y成立,则函数n返回x的值,函数C返回y的值。所以n(a,B=4,n(c,d)=5,C(a,B=3,f2(c,d)=2,故e=f2(4,5)=4,f=n(3,2)=3,g=4+3+5+2-4-3=7。

2.B题干表达式中,圆括号的优先级最高,乘法运算符次之,加法运算符最低。同优先级中,加法运算符的结合性从左向右结合,所以题干中的表达式执行顺序是:先执行“a+b”得r1,再执行“(d+e)”得r2,再执行“c*r2”得r3,最后执行“r1+r3”得表达式最后结果。故本题答案为B选项。

3.D【答案】D

【知识点】字符常量的考察

【解析】在C语言中要求八进制字符常量的表示为\\ddd形式,但是八进制中只有0~7,7个数字,没有9这个数字,所以选择D。

4.C

5.BC语言中指针就是变量的地址,它必须有确定的基类型。当指针指向某个变量时,才能向其中写入数据,选项A错误,选项B正确;指针除了指向变量外,还可以赋值为NULL,表示未指向任何地址,此时不能写入数据,另外指针必须有基类型,只能指向基类型相同的变量,选项C错误;指针只能与一个整数进行运算,即移动指针,两个指针不能运算,选项D错误。本题答案为B选项。

6.A

7.D在C程序中,可以用字符数组存放一个字符串,然后输出该字符串,也可以用字符指针指向一个字符串。

题目中用字符数组a[]来存放字符串'Itismine',a为数组名,表示首元素的地址,即字母I的地址。a+1表示数组中第二个元素t的地址,选项A正确。当用字符串指针指向字符串时,只是将字符串的第一个元素的地址赋给指针,当该指针指向其他字符串时,只需将该字符串的第一个元素地址赋给这个指针即可,和字符串的长度没有关系,选项B也是正确的。指针变量的值为元素的地址,和元素具体的值没有关系,当指针指向不同的元素时,存放的地址也会发生改变,故选项C是正确的。数组a初始化时没有指定数组长度,系统自动根据初值个数确定数组长度,题目中只是将10个有效字符存放到数组中,不能说明这个数组只能存放10个字符。

8.C解析:do-while语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。

9.C解析:本题涉及C语言基本的3个知识点:①C语言规定一个程序只允许有一个主函数,一个函数内可以允许有多个花括号;②C程序的注释部分仅仅是方便程序员阅读,提高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释中的错误。

10.B

11.B

12.A

13.C

14.A

15.A使用顺序,选择(分支),循环三种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以A错误。

16.CC语言的实型常量可以用小数形式、指数形式来表示。题中的选项都是指数形式,指数形式的一般形式为:尾数E(或e)整型指数。C语言规定,字母E或e之前必须要有数字,且E或e后面的指数必须为整数,E或e的前后以及数字之间不得插入空格。故本题答案为C选项。

17.DCIN为结构体类型名,而不是结构体变量。故本题答案为D选项。

18.C解析:选项A中for和case为C语言中的保留字,不能作为用户标志符,故A错误。选项B中的4d其开头的第一个为数字,而在C语言中规定,第一个字符必须为字母或者下划线,故B错误;选项D中void为C语言中的保留字,不能作为用户标志符,故D错误。所以,4个选项中选项C符合题意。

19.C视图设计的设计次序分3种:自顶向下、自底向上和由内向外。它们为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握。

20.A选项A中,“sum+=1/i;”中的i为整型,因此“1/i”是整型类型,当“1/i”有小数时。会被截断。因此“1/i”结果始终为0,导致结果出错。应该改为“sum+=1.0/i”。故本题答案为A选项。

21.6

22.21

23.88解析:在一般系统中,一个float型数据在内存中占4个字节(32位),一个double型数据占8个字节。

24.120120解析:静态变量的类型说明符是static,静态局部变量属于静态存储方式,它具有以下特点:

①静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。

②对静态局部变量是在编译时赋初值的,即只赋初值—次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。

③如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。(注意:C语言中的非静态变量在定义时,系统并不会自动给它赋初值)

④虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。

本题中函数的功能是:与for语句一起求一个整数的阶乘。

25.for(i=0;i<t;i++)0for(i=0;i<t;i++)\r\n0解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应使*k的值为数组中的某一下标值,即*k=0。

26.77解析:字符型数据可作为整型参加算术运算,其值为其对应的ASCII码。'H'-'A',的结果是7,加'0'后是'7'的ASCII码,所以输出的是字符'7'。

27.70万70万

28.44解析:本题考查函数的递归调用。在主函数中第1次调用子函数是调用的fun(11),返回11-fun(9):第2次调用子函数是调用的fun(9),返回9-tim(7);第3次调用子函数是调用的fun(7),返回7-fun(5);第4次调用子函数是调用的fun(5),返回5-fun(3);第5次调用子函数是调用的fun(3),返回3-fun(1);第6次调用子函数是调用的fun(1),返回3。总的返回值是:11-(9-(7-(5-(3-3))))=4。

29.数据库系统数据库系统解析:在数据库系统管理阶段,通过系统提供的映像功能,数据具有两方面的独立性:一是物理独立性,二是逻辑独立性。数据独立性最高的阶段是数据库系统阶段;

30.原型化原型化

31.25811142581114解析:本题通过while和if语句,求得出1~15之间与3取模为2的整数,并依次输出。

32.*t++或*(t++)*t++或*(t++)解析:主函数中定义了两个字符型数组st1l和str2,并且给str2赋初值“abcdefgh”,接着调用函数sstrcpy(str1,str2),将字符串str2的值赋给str1.在函数sstrcpy(*s,*t)中,用了一个while循环,每循环一次将形参指针t所指的字符赋给形参指针s所指向的存储空间,然后指针s和指针t都下移到下一个元素。所以空格处应该填*t++或*(t++)。

33.abcabc解析:字符串的结束标记'\\0',当输出一个存放在字符数组中的字符串时,只需输出到'\\0'为止,而不管其后有什么数据。本题给字符数组s的元素s[3]赋值为'\\0',故只能输出3个字符“abc”。

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

35.1B1B解析:从键盘输入后,a='B',b=33,之后进行运算,a='B'-'A'+'0'='1';b=33*2=66。C语言规定,整型和字符型可以相互转换,已知字符A的ASCII码值为65,所以字符B的ASCII码值为66,所以b='B',最后以字符形式输出a和b,所以输出为1B。

36.线性结构线性结构解析:本题考查了数据结构的基本概念。与栈类似,队列也是线性表,可以采用链式存储结构,所以带链的队列属于线性结构。

37.白盒法白盒法

38.-3-3解析:%运算符是求两个数相除的余数,其结果与被除数的符号一致,本题中“-19%4”的值为“-3”。

39.30253025解析:本题考核的知识点是变量的存储属性和算术运算的应用。本题涉及了自动变量、静态变量和外部变量。外部变量是定义在所有函数之外的变量,本题中inta=5定义了一个外部变量a,它是一个全局变量,即作用域是从定义的位置开始到本文件的结束;静态变量的存储空间在程序的整个运行期间是固定的(static),本题函数fun()中staticinta=10定义个一个静态变量a,此静态变量a是个静态的局部变量,即它的值只能在本函数中使用;自动变量是C程序中使用最多的一种变量,它的建立和撤消都是由系统在程序执行过程中自动进行的,auto是自动变量的存储类别标识符,如果省略auto,系统隐含认为此变量为auto,本题中main()中intc=20定义了一个自动变量c,此自动变量c是个静态的局部变量.算术运算中a+=b++相当于a=a+b,b=b+1.所以,在第一个ptine('%d',a)中a=a+b=10+20=30,第二个printf('%d',a)中a=a+c=5+20=25,即输出3025。

40.2424解析:本题程序定义了一维数组p,有七个数组元素,整型变量i,j初值分别为0,当while的条件表达式(i<7&&p[i]%2==1)的值为真时,执行语句j+=p[i++];,如:当i=0时,i<7为真,p[i]%2=11%2=1,表达式(p[i]%2==1)的值为真,所以整个表达式(i<7&&p[i]%2==1)的值为真,执行j=j+p[i++]=0+11=11,i=1;,依此类推可以得出答案24。

41.C解析:本题中,程序先执行语句x=1.2;,根据赋值运算的类型转换规则,先将double型的常量1.2转换为int型,即取整为1,然后将1赋值给变量x。接下来执行语句y=(x+3.8)/5.0;根据运算符的优先级,先计算小括号内,再计算除法,最后执行赋值运算。小括号内的运算过程:先将整型变量x的值1转换为double型1.0,然后与3.8进行加法运算,得到中间结果4.8。接着进行除法运算4.8/5.0,其结果小于1.0,这里没有必要计算出精确值,因为接着进行赋值运算,赋值号左边的变量y的类型为整型,于是对这个小于1.0的中间结果进行取整,结果为0,于是变量y的值为0,d*y的值也为0。注意:格式输出语句printf的使用。

42.D解析:在结构化程序设计中,应严格控制使用GOTO语句,必要时才可以使用。

43.B解析:本题的考点是关于C语言的整数运算和逻辑运算。由于d初值为25,“a=d/10%9中d/10”整除结果是2,再用9求余结果仍是2,因此a的值为2。而对于“b=a&&(-1)”,由于a值为2不为0,-1也不为0,因此“a&&(-1)”结果为真,b值是1。输出结果应该是2、1。正确选项是B。

44.D解析:本题通过函数调用对数组[0][0]、a[1][1]、a[2][2]、对a[0][3]进行求和,然后用return语句返回s的值。

45.D

46.D结构化程序设计由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主张“清晰第一,效率第二”,以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变得单纯而明确,为设计一些较大的软件打下了良好的基础。

由于模块相互独立,因此,在设计其中一个模块时,不会受到其他模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为可以充分利用现有的模块作为积木式的扩展。

结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。自顶向下、逐步求精的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图;“单入口单出口”的思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出结构良好、易于调试的程序。

47.A解析:函数{的形参Y是简单变量,x是地址变量,故Y=4,x=2+4+2=8

48.A解析:本题主要考查按位求反运算和C语言中正负数的表示,“0”代表正数,“1”代表负数;x=7的二进制为00111,第一个0代表正数,~x为11000,第一个1代表负数,值为8。

49.B解析:该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。第一次进入循环时,n的值是9,循环体内,先经过n--运算,n的值变为8,所以第一次的输出值是8,由此可以排除选项A)和D)。由循环条件n>6可以知道,最后一次循环开始时,n的值应该为7,所以最后一次执行循环时,输出为6,由此可以排除选项C)。

50.A

51.C解析:本题中,最主要的是掌握几个有关文件的函数的应用。

函数名:fopen功能:打开一个文件调用方式FILE*fp;fp=fopen(文件名,使用文件方式);

函数名:feof功能:检查文件是否结束调用方式:feof(FILE*fp);

函数名:fputc功能:把一个字符写到磁盘文件上去调用方式:fputc(ch,fp)(ch是要输出的字符,fp是从指定的文件读入一个字符,该文件必须是以读或读写方式打开的调用方式:ch=fgetc(fp)(ch是字符变量,fp是文件指针变量);

函数名:fclose功能:关闭一个文件调用方式:fclose(文件指针)。

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

53.C解析:在C语言中,实数有两种表示形式。即十进制数形式和指数形式,在指数形式中,字母e的前面必须有数字,且e的后面必须是整数。e3,2.1e3.5,e3,e等都是不合法的指数形式,而123e3或123E3都代表123乘以10的3次方。

54.B解析:条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式17表达式2:表达式3其求解顺序是:先求解表达式1,若为非O(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。并且注意++、--的用法。

55.C解析:本题考查了字符的输入函数getchar和利用scanf函数输入一个字符。用scanf输入字符时,格式说明字符应该为%c。本题选项C)因为指针p没有赋初值,所以是一个不定值,不能直接将getchar读入的字符赋给指针p所指向的字符,所以选项C错误。

56.C解析:数据库不是一个独立的系统,它需要操作系统的支持,选项A错误;设计数据库的目的是设计出满足实际应用需求的实际关系模型,选项B错误;数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价,选项C正确。数据库系统中,数据的物理结构和逻辑结构可以相互独立,选项D错误。

57.A解析:耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。

[知识拓展]模块的独立程序是评价设计好坏的一个重要标准,衡量软件的模块独立性有两个定性的度量标准。其中内聚性是指一个模块内部各个元素间彼此结合的紧密程度的度最,内聚性是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量,耦合性从整体的角度来度量模块间的联系。

58.B

59.B解析:满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后—层上只缺少右边的若干子结点(叶子结点)的二叉树。

60.A解析:p[0]存放的是“BOOL\\0”的首地址;p[1]存放的是“OPK\\0”的首址等。在printf语句中输出的*p[i]表示p[i]字符串的第一个字符。在for循环中,i的初值为3,那么输出的第一个字符为“S”,接

温馨提示

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

评论

0/150

提交评论