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.结构化程序设计的3种结构是()。

A.顺序结构、选择结构、转移结构

B.分支结构、等价结构、循环结构

C.多分支结构、赋值结构、等价结构

D.顺序结构、选择结构、循环结构

2.有以下程序#include<stdi0.h>main(){inta[]={2,3,5,4),i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;casel:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序运行后的输出结果是()。A.3344B.2050C.3040D.0304

3.若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。A.switch(x)

B.switch((int)x);{case1.0:printf("*\n");{case1:printf("*\n");case2.0:printf("**\n");}case2:printf("**\n");}

C.switch(a+B)

D.switch(a+B){case1;printf("*\n");{case1:printf("*\n");case2+1:printf("**\n");}casec:printf("**\n");)

4.设有一组关键字序列{5,8,14,20,31,55,78,81,93,97,111},使用二分(折半)法查找关键字93最少需要进行多少次比较()A.2B.3C.4D.5

5.下列程序段输出的字符串长度为()。printf("\\aaa\'ccc\bddd\'");

A.11B.12C.13D.17

6.下列给字符数组初始化中,()是正确的。

A.chars2[3]="xyz";

B.chars1[]="abcd";

C.chars3[][3]={'a','x','y'};

D.chars4[2][3]={"xyz","mnp"};

7.数据结构在计算机内存中的表示是指()。A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系

8.插入和删除只能在一端进行线性表,称为()。

A.队列B.循环队列C.栈D.循环栈

9.有以下程序:

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

A.45B.50C.60D.55

10.有以下程序

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,

11.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen(“d.dat”,“w+b”);for(i=0;i<6;i++)fwrite(&a[i],sizeof(int),1,fp);rewind(fp);fread(&a[3],sizeof(int),3,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,a[i]);}程序运行后的输出结果是()。

A.4,5,6,4,5,6,B.1,2,3,4,5,6,C.4,5,6,1,2,3,D.1,2,3,1,2,3,

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

13.在数据库设计中,将E-R图转换成关系数据模型的过程属于()。A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段

14.有以下程序:#include<stdio.h>#defineS(x)4*(x)*x+1main(){intk=5,j=2;printf("%d\n",S(k+j));}程序运行后的输出结果是()。A.197B.143C.33D.28

15.若要求从键盘读入含有空格字符的字符串,应使用函数

A.getc()B.gets()C.getehar()D.scanf()

16.有以下程序,其中函数f的功能是将多个字符串按字典顺序排序:#include<string.h>voidf(char*p[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)ifstrcmp(p[i],p[j])>0{t=p[i]p[i]=p[j];p[j]=t;}}main(){char*p[5]=("abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[1]));}程序运行后的输出结果是______。A.2B.3C.6D.4

17.算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是A.A.有零个输入或多个输入B.高效性C.有穷性D.确定性

18.设有以下函数:

voidfun(intn,char*$s){……}

则下面对函数指针的定义和赋值均正确的是A.void(*pf)();pf=fun;

B.void*Pf();pf=fun;

C.void*pf();*pf=fun;

D.void(*pf)(int,char);nf=&fun;

19.下列关于c语言用户标识符的叙述中正确的是()。

A.用户标识符中可以出现下划线和中划线(减号)

B.用户标识符中不可以出现中划线,但可以出现下划线

C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头

D.用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头

20.设x、y、z、t均为int型变量,则执行以下语句后,t的值是()x=y=z=l;t=++x||++y&&++z;

A.不定值B.2C.1D.0

二、2.填空题(20题)21.函数delete(s,i,n)的作用是从字符串s中删除从第i个字符开始的n个字符,请填空。

voiddelete(chars[],inti,intn)

{intj,k,length=0;

whiles(length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]='\0';

}

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

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

23.下列程序执行后输出的结果是【】。

main()

{intarr[10],i,k=0;

for(i=O;i<10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

24.软件是程序、数据和【】的集合。

25.若有如下结构体说明:

structSTRU

{inta,b;charc:doubled;

stmctSTRU*p1,*p2;

};

请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。【】t[20]

26.子程序通常分为两类:【】和函数,前者是命令的抽象,后者是为了求值。

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

main()

{chars[]="ABCD",*p;

for(p=s+1;p<s+4;p++)printf("%s\n",p);}

28.下面程序的输出是【】。

main()

{intarr[10],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

printf("%d\n"k);}

29.数据库管理系统常见的数据模型有层次模型、网状模型和【】3种。

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

31.软件定义时期主要包括______和需求分析两个阶段。

32.以下程序用业统计文件十字符个数。请填空。

#include"stdio.h"

main()

{FTLE*fp;longnum=OL;

if((fp=fopen("fname.dat","r"))==NUlL)

{pirntf("Openerror\n");exit(0);}

while()

{fgetc(fp);num++;}

printf("num=%1d\n",num-1);

fclose(fp);

}

33.以下函数的功能是求x的y次方,请填空。

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

returnz;

}

34.fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{

introw,col,max,min;

for(row=0;row<N;row++

{

for(max=a[row][0],col=1;col<N;col++)

if(【】)max=a[row][col];

if(row==0)min=max;

elseif(【】)min=max;

}

returnmin;

}

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

intword(char*s)

{intnum=0,flag=0;

while(*s)

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

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

}

return【】;}

36.为了便于对照检查,测试用例应由输入数据和预期的【】两部分组成。

37.有以下程序片段,请问执行后的输出结果是【】。

intn=10;

while(n>7)

{printf("%d",n--);

}

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

fun(intt[],intn)

{inti,m;

if(n==1)returnt[0];

elseif(n>=2){m=fun(t,n-1);returnm;}

}

main()

{inta[]={11,4,6,3,8,2,3,5,9,2};

printf("%d\n",fun(a,10));

}

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

main()

{chars[]="ABCD",*p;

for(p=s+1;p<s+4;p++)printf("%s\n",p);}

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

三、1.选择题(20题)41.以下叙述中错误的是______。A.C语言中对二进制文件的访问速度比文本文件快

B.C语言中,随机文件以二进制代码形式存储数据

C.语句FILEfp:定义了一个名为fp的文件指针

D.C语言中的文本文件以ASCII码形式存储数据

42.以下不能定义为用户标识符的是()。

A.scanfB.VoidC.3comD.int

43.若有定义floata[15],*p=a;,且数组a的首地址为300H,则p+13所指向的数组元素的地址为()。

A.334HB.30DHC.352HD.31AH

44.下面函数调用语句含有实参的个数为()。func((exp1,exp2),(exp3,exp4,exp5));

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

45.有三个关系R、s和T如下:

由关系R和s通过运算得到关系T,则所使用的运算为()。

A.并B.自然连接C.笛卡尔积D.交

46.软盘处于写保护状态时,其中记录的信息______。

A.不可能丢失

B.不能被擦除,但能追加新的信息

C.不能通过写磁盘操作被更新

D.不能以常规方式擦除,但可以通过操作系统的格式化功能擦除

47.以下程序的输出结果是main(){inta=0,i;for(i=1;i<5i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}printf("%d\n",A);}

A.31B.13C.10D.20

48.以下合法的C语言赋值语句是()。

A.a=b=58B.k=int(a-b):C.a=58,b=20D.++i;

49.已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是______。

A.kk>='A'&&kk<='Z'

B.!(kk>='A'‖kk<='Z')

C.(kk+32)>='a'&&(kk+32)<='z'

D.isalpha(kk)&&(kk<91)

50.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()。A.概要设计B.详细设计C.可行性分析D.需求分析

51.在C语言中,函数调用时()。

A.实参和形参各占独立的存储单元

B.实参和形参共用存储单元

C.由系统自动确定实参和形参是否共用存储单元

D.由用户指定实参和形参是否共用存储单元

52.C语言提供的合法的数据类型关键字是_______。

A.DoubleB.floatC.integerD.Char

53.实型数据在计算机中表示的方法有()。

A.双精度型和单精度型B.小数形式和ASCII码法C.BCD码法和指数形式D.小数形式和指数形式

54.有定义语句:“inta=1,b=2,c=3,x;”,则以下选项中各程序段执行后,x的值不为3的是()。

A.if(c<a)x=1;elseif(b<a)x=2;elsex=3;

B.if(a<3)x=3;elseif(a<2)x=2;elsex=1;

C.if(a<3)x=3;if(a<2)x=2;if(a<1)x=1;

D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;

55.以下程序的输出结果是()main(){charc='2';printf("%c",c-25);}

A.aB.ZC.z-25D.y

56.C语言中最简单的数据类型包括()。

A.整型、实型、逻辑型B.整型、实型、字符型C.整型、字符型、逻辑型D.字符型、实型、逻辑型

57.若有定义:inta=8,b=5,执行语句c=a/b+0.4;后,c的值为()

A.1.4B.1C.2D.2

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

59.以下数组定义中错误的是()。

A.intx[][3]={0};

B.intx[2][3]={{1,2},{3,4},{5,6}};

C.intx[][3]={{1,2,3},{4,5,6}};

D.intx[2][3]={1,2,3,4,5,6};

60.有以下程序:main(){charp[]={'a','b','c},q[]="abc";printf("%d%d\n",sizeof(p),sizeof(q));}程序运行后的输出结果是()。

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

四、选择题(20题)61.一间工厂可有多个工人,则实体工厂和工人之间的联系是

A.一对一B.一对多C.多对一D.多对多

62.设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是

63.

64.若某二叉树中的所有结点值均大于其左子树上的所有结点值,且小于右子树上的所有结点值,则该二叉树遍历序列中有序的是()。

A.前序序列B.中序序列C.后序序列D.以上说法均可以

65.

66.

67.有以下程序:

#include<<stdio.h>

structstu

{intnum;

charname[10]:

intage;}

voidfun(structstu*p)

{printf("%s\n",(*p).name);}

themain

{

structstustudents[3]={{9801,"Zhang".20},

{9802,"Wang",19},{9803,"Zhao",18}}

fun(students+2);

}

输出的结果是()。

A.ZhangB.ZhaoC.WangD.18

68.有以下程序

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

程序的运行结果是

A.9B.编译出错

C.21D.9.0

69.

70.

71.有如下程序段:inta=14,b=15,x;charc=A;x=(a&&b)&&(c<B):执行该程序后,x的值为()。A.trueB.falseC.0D.1

72.下列关于数据库设计的叙述中,正确的是()。

A.在需求分析阶段建立数据字典

B.在概念设计阶段建立数据字典

C.在逻辑设计阶段建立数据字典

D.在物理设计阶段建立数据字典

73.第

1

若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的正确排列次序是

A.sizeof,&=,<<,^

B.sizeof,<<,^,&=

C.^,<<,sizeof,&=

D.<<,^,&=,sizeof

74.若变量已正确定义为int型,要通过语句给a赋值l、+给b赋值2、给c赋值

3,以下输入形式中错误的是()(注:口代表一个空格符)。

75.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)当执行程序时,输出的结果是()。A.-1B.1C.4D.0

76.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}输出的结果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456

77.若有定义语句:“charS[3][10],(*k)[3],*p;”,则以下赋值语句正确的是()。

A.p=S;B.p=k;C.p=s[0];D.k=s;

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

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

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

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

79.若有以下程序:inta=1,b=2:a=a^b:b=b^a:则执行以上语句后a和b的值分别是()。

A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1

80.以下关于逻辑运算符两侧运算对象的叙述中正确的是()。

A.可以是任意合法的表达式B.只能是整数0或非0整数C.可以是结构体类型的数据D.只能是整数0或1

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:计算n!。例如,若输人:6,则输出:6!=720.000000。

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

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

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是根据以下公式求P的值,结果由函数值返回。m与n为两个正整数且要求m>n。例如:m=12,n=8时,运行结果为495.000000。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.D结构化程序设计的基本要点:①采用自顶向下、逐步求精的程序设计方法;②任何程序都可由顺序、选择和循环3种基本控制结构构造。

2.C本题考查嵌套分支语句。共输出4个值:当i=0时,i%2取余后还是0,则执行ease0语句,继续switch语句,此时i为0,数据的下标是从0开始的,a[03的值为2,则a[0]%2=0,继续执行case0,数组a[0]++,值变为3,执行break跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第一个值为3。i++后值为1,i%2=1%2取余后值为1,执行casel,将0赋给a[l],退出开关语句,输出第二个值为0。i++后值为2,i%2=2%2取余后值为0’a[2]的值为5,则a[2]%2=1,继续执行casel,数组a[2]--,值变为4,执行break跳出第二重开关语句。出来后继续执行break,跳出第一重开关语句,继续循环;输出第三个值为4。i++后值为3,i%2=3%2取余后值为1,执行casel,将0赋给a[3],退出开关语句,输出第四个值为0。结果为3040。

3.C

4.A

5.C解析:转义字符有1个\\\\、2个\\'、1个\\b,普通字符有3个a、3个c、3个d,共13个字符。

6.A

7.A数据结构在计算机内存中的表示指的是数据的存储结构。数据的存储结构是指数据的逻辑结构在计算机中的表示。数据元素之间的关系有两种不同的表示方法:顺序映象和非顺序映象,并由此得到两种不同的存储结构:顺序存储结构和链式存储结构。

8.C

9.C内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。Fun(a,5)的值是l5,再次调用后slim=15,所以Fun(b,4)=45,s=45+15=60。

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

11.D程序首先以读和写二进制文件的方式打开文件d.dat;然后通过for循环,调用fwrite函数将数组a中的各个元素写入d.dat中;接下来调用rewind函数,将文件指针fp重定位到文件的开始位置;再调用fread函数将文件的前3个整数1,2,3读入a[3]开始的位置,所以此时数组a中的元素值分别为:1,2,3,1,2,3。故本题答案为D选项。

12.C

13.CE-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。

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

15.B解析:scanf()语句用“空格”区别不同的字符串;getc()与getchar()语句不能用于字符串的读入。

16.D解析:字符串比较函数“strcmp(char*s1,char*s2)”的比较规则是对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到到"\\0"为止。如果全部相同,则认为相等:若出现不相同的字符,则以第一个不相同的字符的比较结果为准。当s1<s2,返回值<0;当s1=s2时,返回值二0:当s1>s2时,返回值>0。故本题经过排序后,得到第二个字符串是“abbd”,所以输出结果是4。

17.B

18.A解析:函数指针的定义形式是:数据类型标识符(*指针变量名)()。void(*pf)()定义了一个没有返回值的函数指针pf,在给函数指针变量赋值时,只需给出函数名而不必给出参数。所以给pf赋值时,只把函数名fun赋给pf即可。所以正确答案为选项A)。

19.B解析:在C语言中,合法的标识符由字母,数字和下划线组成(故选项A不正确),并且第一个字符必须为字母或者下划线(故选项B和选项D不正确).所以,B选项为所选.

20.C

21.length++i<lengthlength++\r\ni<length解析:第—个循环极有可能是计算串的长度,在i<=length时字符才被删除,被删除的是从第i个到笫i+n或最后—个间的所有字符。删除前,应判断i<=length。由于已经进行了-i运算,故实际应填入i<length。

22.*(p+5)

23.1212解析:本题的第一个for循环用于给数组arr赋初值,第二个for循环用于求和运算。由于第二个for循环初始值为1,而循环条件为i<4,所以求的是arr[1]到arr[3]及i的和,所以输出结果为12。

24.文档文档解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。

25.structSTRUstructSTRU解析:结构体类型是构造数据类型,是用户自己定义的一种类型。

结构体类型的定义:

struct结构体类型名

{

成员项表;

};

定义结构体变量的的形式为:

struct结构体类型名变量1,变量2,……

其中变量包括:一般变量、指针变量、数组变量等。

26.过程过程

27.BCDCDDBCD\r\nCD\r\nD解析:本题考查指向字符串的指针的运算方法。指针变量p首先指向字符串中的第一个字符A,执行p=s+1后,p指向字符串中的第二个字符B,然后输出值'BCD'并换行,依次执行循环语句。

28.1212解析:本题通过第一个for循坪将数组arr[0]-arr[9]分别赋值为0-9,通过第二个for循环的三次循环累加,求出结果为12,具体分析如下:

i=1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12;

29.关系模型关系模型解析:数据库管理系统是位于用户与操作系统之间的一层系统管理软件,是一种系统软件,是用户与数据库之间的一个标准接口。其总是基于某种数据模型,可以分为层次模型、网状模型和关系模型。

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

31.可行性研究可行性研究解析:软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用及维护等,还可以将软件生命周期分为三个阶段:①软件定义阶段:可行性研究和需求分析;②软件开发阶段:设计、实现和测试;③软件运行维护阶段:交付使用和维护。

32.!feof(fp)!feof(fp)解析:本题中统计文件中字符个数的算法可描述如下:首先判断文件位置指针是否指向了文件尾,如果不是则读出一个字符,同时字符的个数加1,再判断文件位置指针是否位于文件尾,如此循环,直到文件位置指针位于文件尾为止。本题首先以读文件的方式打开了文件“fname.daf”,如果打开成功则把返回的文件型指针赋值给fp,然后通过循环求文件中的字符数。首先判断文件位置指针是否位于文件尾,如果不是则循环读取字符,每次字符数加1。所以下划处应填循环条件,文件位置指针不是指向文件尾,即“!feof(fp)”。

33.xx解析:函数的定义形式为;

函数类型函数名(形参表)

{

类型说明语句;

执行语句;

}

本题中函数的功能是:累积变量以求得变量的Y次方。

34.a[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)max<min或min>max或max<=min或min>=maxa[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)\r\nmax<min或min>max或max<=min或min>=max解析:本题有两层for循环,主函数中定义了整型变量row、col、max和min,其中row用来存放外循环中的循环次数,col用来存放内循环中的次数,max记录每行中的最大值,min记录所有行中最大值中的最小值。在内循环中,首先给max赋初值为每行的第0列元素值,然后从第一列开始依次与max进行比较。如果大于max则将其值赋给max,当每一行循环结束,max记录了每一行的最大值。所以第一个空应该填a[row][col]>max或a[row][col]>=max。退出内循环,在第一次退出内循环时,将min赋初值为第0行的max,然后在每次退出内循环时,将min和每行的max比较,如果大于max,则将max值赋min,所以第二个空应该填max>min或mm>max,当退出外循环时,min为所有行中的最大值的最小值。

35.*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。

36.输出结果输出结果解析:注意:测试的基本方法和步骤。

37.1098

38.1111解析:此题涉及函数的调用和if语句。程序先执行第二个if语句,然后再执行第一个if语句,最后用return返回数值。

39.BCDCDDBCD\r\nCD\r\nD解析:本题考查指向字符串的指针的运算方法。指针变量p首先指向字符串中的第一个字符A,执行p=s+1后,p指向字符串中的第二个字符B,然后输出值“BCD”并换行,依次执行循环语句。

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

41.C解析:FILE是由系统定义的一个结构体类型,并用该类型来定义若干个FILE类型的变量,以便存放若干个文件。所以用FILE定义的变量必须是数组或指针,所以选项C中的“FILE\u3000\u3000fp;”改为“FILE*fp;”就对了。

42.D解析:标识符是C语言中用来表示变量名、数组名、函数名、指针名、结构名、联合名、枚举常数名、用户定义的数据类型名、语句标号等用途的字符序列。标识符由1~32个字符组成,第一个字符必须是字母或下划线,后面的字符可以是字母、数字或下划线。标识符不能与C关键字相同,并区分大小写。选项D)错误,因为int是C语言中的关键字。

43.C解析:解答本题,首先要明白在对指针进行加、减运算的时候,数字“1”不是十进制的数“1”,而是指'1'个存储单元长度,而1个存储单元长度占多少存储空间,应该视具体情况而定。如果基本类型是int型,移动1个存储单元的长度就是位移2个字节,如果基本类型是float型,移动1个存储单元的长度就是位移4个字节。所以p+13所指向的数组元素的地址:300H+(13*上标)4)H=352H。

44.B

45.D关系R与s经交运算后所得到的关系是由那些既在R内又在S内的共有元组组成的,记为RnS。

46.C

47.A解析:本题考核的知识点是for语句与switch语句地综合运用。switch语句的执行过程是:在switch后面的表达式的值和case后面常量表达式的值吻合时,就执行该case分支的语句。如果在该语句的后面没有break语句,则按顺序继续执行下一个case分支,直到遇到break语句或switch多分支语句结束,在switch语句中,break语句的作用是使流程跳出switch结构,终止switch语句的执行.在本题中,因为每个case语句后面都没有break语句,所以,第一轮循环(i==1)执行过后a的值为8,第2轮(i==2)执行过后a的值为16,第3轮(i==3)执行过后a的值为26,第4轮(i==4)执行过后a的值为31,然后执行“i++”语句,这时循环条件为假,循环结束.所以,4个选项中A为所选。

48.D解析:选项A和选项C中都没有以“;”结束,故选项A和选项C都不是正确的赋值语句;选项B中强制转换类型符int应用括号括起来,故选项B不正确,只有选项D是合法的C语言赋值语句。

49.B解析:本题主要考查逻辑运算。对于正确判断kk为大写字母的表达式,当表达式为真时kk为大写字母。大写字母的ASCII代码值在65~90之间,对应的小写字母的ASCII代码值在97~122之间,因此选项A、C都是正确的表达式。选项D中isalpha(kk)用于判断kk是否是字母,ASCII代码值小于91的字母为大写字母,因此选项D是正确的表达式。选项B中的表达式可以转换为kk<‘A’&&.kk>‘Z’,无法判断kk中的值是否为大写字母。

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

软件生命周期的主要活动阶段为:

①可行性研究和计划制定。确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可行方案,制定完成开发任务的实施计划。

②需求分析。对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件,规格说明书及初步的用户手册,提交评审。

③软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。

④软件实现。把软件设计转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。

⑤软件测试。在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告。

⑥运行和维护。将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。

51.A解析:本题考查函数调用时的参数传递。函数的形参是函数定义时由用户定义的形式上的变量,实参是函数调用时,主调函数为被调函数提供的原始数据。

在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之间不影响。

52.B解析:选项A和D中第—个字母大写,不正确;选项C是PASCAL中的整型关键字,不是C语言中的关键字。

53.D解析:实型数据有两种表示形式:①小数形式。它由数字和小数点组成(注意必须有小数点)。123、123.0、0.0都是小数形式。②指数形式。如123e3或123E3都代表123*103(上标)。注意,字母e(或E)之前必须有数字,且e后面的指数必须为整数。如e3、3.le3.5、.e3、e等都不合法。所以,本题应该选择D。

54.C解析:选项A首先判断if语句条件中表达式的值“3<1”为假,然后执行最近的else后面的语句,该else后面又为if-else语句,在这个if-else语句中首先判断该if语句条件中表达式的值“2<1”为假,程序执行其最近的else后面的语句,将3赋值给x。

选项B中首先判断if语句条件中表达式的值“1<3”为真,然后执行最近的else后面的语句“x=3”,后面的else不再执行,最后x的值为3。

选项C中,首先选执行第一条if语句,由于“1<3”为真,执行此if后面的语句“x=3”,接着执行第二条if语句,由于“1<2”为真,执行此if后面的语句“x=2”,接着执行第三条if语句,由于“1<1”为假,后面的语句不执行,所以最后的x值为2不为3。

选项D中,首先选执行第一条if语句,由于“a<b”为真,执行此if后面的语句“x=b”;接着执行第二条if语句,由于“b<c”,为真,执行此if后面的语句“x=c”,接着执行第三条if语句,由于“c<a”为假,后面的语句不执行,所以最后的x值为c即为3。所以,4个选项中选项C符合题意。

55.A

56.B解析:选项A)中包含一个不合法的运算符“:=”;选项C)应改为(int)18.5%3;选项D)可理解为两个表达式:a+7=c+b和a=a+7,因为C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等,所以a+7=c+b是错的。因此,正确答案是选项B),它相当于a=(b=c+2),可分解为两个表达式:b=c+2和a=b。

57.B

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

59.B解析:二维数组的初始化有以下几种形式:①分行进行初始化;②不分行进行初始化;③部分数组元素进行初始化;④省略第一维的定义,不省略第二维的定义。选顷B)等号右边分了3行,大于等号左边数组的行数2。

60.C解析:字符数组即可以用{初始化列表}来初始化,也可以用一个字符串常量来初始化。但字符串常量系统会自动为其添加结束标记'\\0',故比实际长度要多一位,所以本题输出为34,应该选择C。

61.B常见的实体之间的联系有一对一、一对多、多对一、多对多。如果对于实体集A中的每一个实体(工厂),实体集B中有n个实体(工人)(n≥0)与之联系,反之,对于实体集B中的每一个实体(工人),实体集A中至多只有一个实体(工厂)与之联系,则称实体集A与实体集B有一对多联系。

62.C本题主要考查if

温馨提示

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

评论

0/150

提交评论