2021年四川省内江市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第1页
2021年四川省内江市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第2页
2021年四川省内江市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第3页
2021年四川省内江市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第4页
2021年四川省内江市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

2021年四川省内江市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列算法中,()算法用来求图中某顶点到其他顶点所有顶点之间的最短路径。

A.DijkstraB.FloyedC.PrimD.Kruskal

2.

3.

4.检查软件产品是否符合需求定义的过程称为()。

A.确认测试B.集成测试C.验证测试D.验收测试

5.有以下程序:#include<stdio.h>voidfunc(intn){inti;for(i=0;i<=n;i++)printf("*"):printf("#");}main(){func(3);printf("????");func(4);printf("n\");程序运行后的输出结果()。A.****#????***#

B.***#????****#

C.**#????****#

D.****#????*****#

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

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

7.以下程序段中的变量已正确定义:for(i=0;i<4;i++,i++) for(k=1;k<3;k++); printf(“*”);程序段的运行结果是()。

A.**B.****C.*D.********

8.以下程序的输出结果是main(){intc=35;printf("%d\n",c&c);}

A.0B.70C.35D.1

9.

10.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K%9作为散列函数,则散列地址为1的元素有()个。

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

11.

12.给定数列(541,132,984,746,518,181,946,314,205,827)按照从小到大的顺序排列,采用快速排序(以中间元素518为基准)的第一趟扫描结果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

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

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

14.定义学生选修课程的关系模式如下:SC(S#,Sn,C#,Cn,G,Cr)(其属性分别为学号、姓名、课程号、课程名、成绩、学分)则对主属性部分依赖的是()。

A.C#→CnB.(S#,C#)→GC.(S#,C#)→S#D.(S#,C#)→C#

15.定义如下变量和数组:inti;intx[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};则下面语句的输出结果是()。A.15913B.161116C.471013D.481216

16.下列有关数据库的描述,正确的是______。

A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件

17.计算机算法必须具备输入、输出和()等5个特性。

A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性

18.下列变量声明合法的是()。

A.shorta=1.4e-1;

B.doubleb=1+3e2.8;

C.longdo=OxfdaL;

D.float2

19.若有定义和语句:inta,b;scanf("%d,%d",&a,&b);以下选项中的输人数据,不能把值3赋给变量a、5赋给变量b的是()。A.3,5,B.3,5,4C.3,5D.3,5

20.以下程序执行后的输出结果是()。

A.5,5

B.5,11

C.11,11

D.11,5

二、2.填空题(20题)21.下列函数从字符数组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";}

22.函数mystrlen(char*s)的功能是求字符串s的长度,请填空。

mystrlen(char*s)

{char*t:

t=s;

while(【】)t++;

return(t-s);

}

23.下述函数用于统计一行字符中的单词个数,单词之间用空格分隔。

word_num(str)

charstr[];

{inti,num=0,word=0;

fo(i=0;str[i]!=【】;i++)

if(【】=='')word=0;

elseif(word==0)

{

word=1;

【】;

}

return(num);

}

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

inti=9;

printf("%o\n",i);

25.以下程序的运行结果是______。

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

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

fwtite(a,sizeof(int),5,fp);

fwlite(a,sizeof(int),5,fp);

fclose(fp);

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

fread(a,sizeof(int),10,fp);

fclose(fp);

for(i=0;i

26.结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句。

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

main()

{chars[]=“abcdef”;

s[3]='\0';

printf(“%s\n”,s);

}

28.问题处理方案的正确而完整的描述称为______。

29.一名学生只能住一间宿舍,一间宿舍可住多名学生,则实体“宿舍”与实体“学生”的联系属于()的联系。

30.在面向对象方法中,类的实例称为______。

31.若有定义inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},则初始化后,a[1][1]得到的初值是______。

32.以下函数用来求出两整数之和,并通过形参将结果传回,请填空。

voidfunc(intx,inty,【】z)

{*z=x+y;}

33.以下函数用来求出数组的最大元素在数组中的下标并存放在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;

fun(a,10,&k);

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

34.若定义#definePI3.14159,则执行完下列程序后输出结果是______。

#definePI3.14159;printf("PI=%f",PI);

35.数据库的设计通常可以分为4个步骤:需求分析、概念设计、【】和物理设计。

36.以下程序中函数fun的功能是:构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。

#include<stdio.h>

typedefstructnode/*链表结点结构*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立链表*/

{……}

voiddisp(Node*h)

{Node*p;

p=h->next;

while(【】)

{printf("%s\n",P->sub);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);printf("\n");

}

37.已有定义:intx;,执行以下语句后的辅出结果是【】。

x=11/3;y=5;

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

38.下列程序段的运行结果是______。

charstr口="ABCD",*p=str;

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

39.Jackson方法是一种面向【】的结构化方法。

40.数据结构分为逻辑结构和存储结构,循环队列属于______结构。

三、1.选择题(20题)41.下面程序的运行结果是

#include<stdio.h>

voiddelch(char*s)

{inti,j;

char*a;

a=s;

for(i=0,j=0;a[i]!=′\n′;i++)

if(a[i]>=′0′&&a[i]<=′9′)

{s[j]=a[i];j++;}

s[j]=′\0′;}

main()

{char*item="a34bc";

delch(item);

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

A.abcB.34C.a34D.a34bc

42.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息

43.执行下面的程序后,a的值为main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}}

A.7B.8C.9D.10

44.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为______。A.EOFB.非0值C.0D.NULL

45.以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。#include<stdio.h>#include<string.h>char*scmp(char*s1,char*s2){if(strcmp(s1,s2)<0)return(s1);elsereturn(s2);}main(){inti;charstring[20],str[3][20];for(i=0;i<3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对字符串进行复制*/strcpy(string,scmp(string,str[2]));printf("%s\n",string);}若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为()。

A.abcdB.abbaC.abcD.baca

46.以下程序的输出结果是______。#include<stdio.h>voidprt(int.*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}inta=10,b=40,c=20;main(){prt(&a,&b&c);prt(&a,&b,&c);}

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,41

D.11,41,2112,42,22

47.以下程序运行后,输出结果是()#include<stdio.h>ss(char*s){char*p=s;while(*p)p++return(p-s);}main(){char*a=“abded”inti;i=ss(a);printf(“%d\n”,i);}A.8B.7C.6D.5

48.请选出正确的程序段______。

A.int*pscanf(""%d"",p);……

B.int*s,k;*s=100;……

C.int*s,k;char*p,c;s=&k;p=&c;*p='a';……

D.int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;……

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

A.软件就是程序清单B.软件就是存放在计算机中的文件C.软件应包括程序清单及运行结果D.软件包括程序和文档

50.下列数据结构中能应用二分查找的是()。

A.有序线性链表B.有序顺序表C.顺序存储的栈D.顺序存储的队列

51.下列数据结构中,能用二分法进行查找的是()。

A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表

52.以下函数返回a所指数组中最小的值所在的下标值:fun(int*a,intn){inti,j=0,p;p=j;for(i=j;i<n;i++)If(a[i]<a[p])______,return(p);}在横线处应填入的是______。

A.i=pB.a[p]=a[i]C.p=jD.p=i

53.静态测试是一种重要的测试方式,可以发现30%到70%的逻辑设计和编码错误。下面()不属于静态测试?

A.白盒测试B.代码检查C.代码质量度量D.静态分析

54.以下程序段运行时______。charx[10],y[]="China";x=y;printf("%s",x);

A.将输出ChinaB.将输出ChC.将输出ChiD.编译出错

55.若以下选项中的变量已正确定义,则正确的赋值语句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

56.下列叙述错误的是()。

A.函数名是属于用户标识符,需符合C语言对标识符的规定

B.形参只能是变量

C.为保证程序的正常运行,函数中定义的变量不能与其他函数中的变量同名

D.函数中定义的变量可以与其他函数中的变量同名

57.有如下程序:#include<stdio.h>msin(){chars[]="ABCD",*P;for(p=s+1;p<s+4;p++)Printf("%s\n",p);}该程序的输出结果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

58.在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()。

A.称为函数的直接递归调用B.称为函数的间接递归调用C.称为函数的循环调用D.C语言中不允许这样的递归调用

59.已知i、j、k为int型变量,若要从键盘输入2、3、4<CR>,使I、j、k的值分别为2、3、4,下列正确的输入语句是()。

A.scanf("%3d,%3d,%3d",&i,&j,&k);

B.scanf("%d,%d,%d",&i,&j,&k);

C.scanf("%d%d%d",&i,&j,&k);

D.seanf("i=%d,j=%d,k=%d",&i,&j,&k);

60.有以下函数:mtaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下关于aaa函数的功能的叙述正确的是()。

A.求字符串s的长度B.比较两个串的大小C.将串s复制到串tD.求字符串s所占字节数

四、选择题(20题)61.

62.

63.

64.

65.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。

A.X…Y5;B.X=n%2.5;C.X+n=i;D.x=5=4+1:

66.

67.有如下程序:

则b的值是()。

A.15B.16C.18D.19

68.算法的有穷性是指()。

A.算法程序的运行时问是有限的。

B.算法程序所处理的数据量是有限的

C.算法程序的长度是有限的

D.算法只能被有限的用户使用

69.

有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",);

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式输出数组右上半三角

1234

678

1112

16

则在程序下划线处应填入的是()。

A.i-1B.iC.i+1D.4一i

70.若有定义语句:inta[2][3],*p[3];,则以下语句中正确的是()。

A.p=a;B.p[0]=a;C.p[o]=&a[1][2];D.p[1]=&a;

71.#define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为()。

A.#definef(x)5*x*x+5*x+5

B.#definef5*X*x+5*x+5

C.#definef(a)(5*a*a+5*a+5)

D.#define(5*x*x+5*x+5)f(x)

72.以下关于字符串的叙述中正确的是()。

A.空串比空格打头的字符串小

B.两个字符串中的字符个数相同时才能进行字符串大小的比较

C.可以用关系运算符对字符串的大小进行比较

D.C语言中有字符串类型的常量和变量

73.有下列函数定义:fun(floath){printf("%f,%f\n",h,h*h);)该函数的类型是()。A.int类型B.float类型C.void类型D.函数无类型说明,定义有错

74.若有以下的定义:‘intt[3][2];”,能正确表示t数组元素地址的表达式是()。

A.&t[3][2]B.t[3]C.t[l]D.t[2][2]

75.设a=l,b=2,c=3,d=4,则表达式:“a<b?a:b<b?a:c<d?a:d”的结果为()。A.A.4B.3C.2D.1

76.

77.假设a和b为int型变量,则执行以下语句后b的值为()。a=1;b=10;do{b-=a;a++;}while(b--<0);A.9B.-2C.-lD.8

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

A)1.2E0.5B)3.14159E

C)5E-3D)E15

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

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

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

80.软件测试的目的是()。

A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误

五、程序改错题(1题)81.以下程序可把输入的十进制数以十六进制数的形式输出。请在横线上填上适当的内容并把横线删除,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函

数时,不得使用c语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G*******删除*后字符串中的内容应当

是:ABCDEFG。

注意:部分源程序在文件PROGl.C中。

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

参考答案

1.A

2.D

3.B

4.A本题主要考查软件测试的基本知识。软件测试的步骤可分为单元测试(模块测试)、集成测试、确认测试和系统测试。

(1)单元测试是针对每个模块进行的测试,它可从程序的内部结构出发设计测试用例,多个模块可以平行、对立地测试。单元测试主要用于发现详细设计和编程时犯下的错误。单元测试多采用白盒测试,辅之以黑盒测试。

(2)集成测试是在单元测试的基础上,根据模块结构图将各个模块连接起来,必须精心计划,应提交集成测试计划、集成测试规格说明和集成测试分析报告。主要目标是发现与接口有关的问题。集成测试可以发现概要设计时犯的错误。

(3)确认测试用于验证软件的功能和性能及其他特性是否与用户的要求一致。确认测试主要用于发现需求分析时犯下的错误,一般使用黑盒法测试,以表明软件符合需求说明书的要求,应该仔细设计测试用例和测试过程。确认测试必须有用户参加,或以用户为主,用户应参与设计测试用例,通常情况下,主要使用生产中的实际数据进行测试,测试数据通过用户接口输入。

(4)系统测试是将已经通过确认测试的软件,作为整个计算机系统的元素与计算机硬件、外设和网络等其他因素结合在一起,进行一系列的组装测试和确认测试。系统测试的目的是通过与系统的需求定义做比较,发现软件与系统的定义不符合的地方。系统测试可以发现问题定义时犯下的错误。

5.D本题考查简单的for循环,func(3)由于i是从0开始,所以会输出四个“*”和一个“#”,然后打印四个“?”func(4),会输出五个“*”和一个“#”,所以答案选择D。

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

7.C因为内层循环“for(k=1;k<3;k++)”后面直接跟了空语句“;”,所以在循环内部什么操作也不做,跳出外层循环后执行printf语句,输出一个“*”。故本题答案为C选项。

8.C解析:本题考查按位与“&”。因为1&1=1,0&0=0,所以任何数与自身按位与,结果仍为此数,不发生变化。

9.B

10.D

11.D

12.B

13.D解析:逻辑运算符两侧的运算对象可以是任意合法的表达式。逻辑表达式的运算结果或者为1(“真”),或者为0(“假”)。

14.A关系SC中的主键是(S#,C#),但C#(课程号)单独就可以决定Cn(课程名),存在着对主键的部分依赖。本题答案为A选项。

15.C

16.C解析:数据库(Database,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有“集成”、“共事”之特点。

17.B

18.A解析:解答本题需了解3个知识点:①标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线;②do是C语言中的一个关键字,不能再用做变量名和函数名;③C语言规定,指数形式的实型常量e或E后面的指数必须是整数。

19.C在输入3和5之间除逗号外不能有其他字符。

20.Bmain函数中的局部变量m与fun函数中的静态局部变量m同名,因此main访问的是其局部变量m,所以main中的两次函数调用,实际上都是调用fun(1,1)。

第一次调用时,i=i+(m+1)=2+(0+1)=3,m=i+x+y=3+1+1=5。

第二次调用时,i=i+(m+1)=3+(5+1)=9,m=i+x+y=9+1+l=11。

所以程序输出5,11。

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

22.*t*t解析:通过while循环扫描字符串,遇到字符‘\\0’结束,并用t统计字符串的长度。

23.\0'或0或NULLstr[i]num++或num=num+1或num+=1\\0'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或num+=1解析:观察题目要求,可以知道以下几点:

①for循环的结束条件应当是:str[i]已是字符串的最后—个字符;

②str[i]代表字符串str中的第i+1个字符;

③整型变量num的值是要记录的单词的个数。

C语言中规定字符串的最后一个字符是一个隐含的字符串结束符“\\0”,所以在题中第—个空中应填写“\\0”;题中第二个空应填写“str[i]”,以判断当前位置的字符是否为空格;题中第三个空中应当填写“num++”,通过变量num的加1累加得到字符串中的单词个数。

24.1111解析:本题考核的知识点是printf()函数的输出格式。本题中定义了一个整型变量i并赋初值为9,然后要求以八进制输出i的值,9的八进制数的表示为11。

25.解析:本题考查文件读写函数fread和fwrite的用法。fwrite函数将数组a的前5个元素输出到文件fp中两次,共10个字节,再调用fread函数从文件fp中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,2,3,0,0,1,2,3,0,)},最后的输出结果为“1,2,3,0,0,1,2,3,0,0,”。

26.模块化模块化

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

28.算法或程序或流程图算法或程序或流程图解析:算法是问题处理方案正确而完整的描述。

29.一对多一对多解析:在现实世界中事物间的关联称为联系。在概念世界中联系反映了实体集间的一定关系。两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有3种,分别是一对一,一对多和多对多,依据题意,一名学生只能住一间宿舍,一间宿舍可住多名学生,所以实体“宿舍”与实体“学生”的联系属于一对多的联系。

30.对象对象解析:类描述的是具有相似性质的一组对象。例如,每本具体的书是一个对象,而这些具体的书都有共同的性质,它们都属于更一般的概念“书”这一类对象。一个具体对象称为类的实例。

31.00解析:二维数组可以看成是按矩阵形式排列的,题目中给二维数组赋初值是按行分段赋值的,a[4][4]可以分解为4个一维数组,其数组名分别为a[0]、a[1]、a[2]、a[3],这4个一维数组都有4个元素,a[0]的元素为a[0][0]、a[0][1]、a[0][2]、a[0][3]。

32.int*int*解析:从题中代码可知:z应该是一个整型指针,因此应填int*。

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

34.PI=3.14159PI=3.14159解析:本题先定义了一个宏名PI,以后在程序中出现PI都用3.14159替代,但是C语言规定:双引号中的宏名是不进行替换的。

35.逻辑设计逻辑设计解析:数据库设计的4个阶段为:需求分析、概念设计、逻辑设计和物理设计。

36.p!=NULLp->nextp!=NULL,p->next解析:考查了单链表的相关知识。NULL的ASCII码的值和'\\0'的ASCII码的值相等,条件到NULL停止循环。把下一个节点的地址赋给p,这样循环,节点可以依次向后取值。

37.%d%3

38.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d,格式输出的,即输出其相应ASCII码值68。

39.数据结构数据结构解析:Jackson方法是—‘种面向数据结构的结构化方法。

40.存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。可知,循环队列应当是物理结构。

41.B解析:考查用指针引用字符串元素的方法。指针a通过数组元素下标来从头逐个地引用字符串item中的字符,判断不是0~9之间的数字时,就去掉这个字符,所以程序结束后,字符串item中就只剩下和两个字符了。

42.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。

43.B解析:本题主要考查了循环语句中break和continue语句的使用。break语句的作用是结束本层循环,而continue语句的作用是结束本次循环直接进入到下次循环。

44.B(27)B)解析:函数feof的功能是:测试fp所指的文件的位置是否已达到文件尾,如果达到文件尾,则函数返回非0值,否则返回0,表示文件尚未结束。

45.B解析:本题考查返回指针值的函数。一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据,即地址。函数strcmp(字符串1,字符串2)的作用是比较字符串1和字符中2。如果字符串1=字符串2,函数值为0;如果字符串1,字符串2,函数值为一正整数;如果字符串1<字符串2,函数值为一负整数。本题程序中scmp函数的作用是比较s1和s2的大小,对strcmp函数的返回值进行判断,如果字符串1<字符串2,则返回字符串1的值,反之返回字符串2的值。所以main函数中scmp(str[0],str[1])的返回值是abba,通过strcpy函数把返回值abba复制到string中。当执行scmp(string,str[2])时,scrap函数的返回值为abba,再次复制到string中,最后string的值为abba。

46.B解析:由于实参传送的是变量的地址,所以对形参指针所指向的单元内容的改变,即对实参内容的改变。

47.D

48.C解析:本题的选项A)和B)犯了同样的错误,即指针变量在定义后并没有指向具体的变量。也就是说,指针变量中没有确定的地址值,它的值是不可预见的,所指的单元也是不可预见的,因此不能进行赋值操作。另外,在选项D)中,s是int型指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。

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

50.B解析:二分查找的具体过程为:将x与线性表的中间项进行比较,若中间项的值等于x,则说明查到,查找结束:若x小于中间项的值,则性表的前半部分(即中间项以前的部分)以相同的方法进行查找:若x大于中间项的值,则性表的后半部分(即中间项以后的部分)以相同的方法进行查找。这个过程一直进行到查找成功或子表长度为0(说明线性表中没有这个元素)为止。由此可知,有序线性表/顷序存储时才能采用二分查找。所以,本题的正确答案为B。

51.A\r\n二分法又叫折半(对分)查找法,只适合于顺序存储的有序表(是指线性表中的元素按值非递减排列)。二分法的基本思想是:设有序线性表的长度为n,被查元素为X,则二分查找的方法如下:

将X与线性表的中间项进行比较:若中间项的值等于x,则说明找到,查找结束;若x小于中间项的值,则在线性表的前半部分(即中间项以前的部分)以相同的方法进行查找;若X大于中间项的值,则在线性表的后半部分(即中间项以后的部分)以相同的方法进行查找、这个过程-直进行到查找成功或于表长度为0,(说明线性表中没有这个元素为止)顺序存储的线性袁在计算机中-般用一个-维数组来表示,在数组中我们可以通过数组名和下标来对数组中的任意一个元素进行访问,而在链表(不管是有序还是无序)中,要对元素进行访问必须从表头结点开始,顺着链条一个一个结点进行搜索,因此选项A正确

52.D解析:该程序先判断a[i]<a[p],如果条件为真,则a[i]比当前设定的最小值小(p保留的当前最小元素的下标),那么将i赋给p,即将比较过的最小元素下标保留在p中,作为下面判断的标准。

53.A

54.D解析:数组名可以认为是一个存放地址值的指针变量,这个指针变量中的地址值不可改变。因此,可以认为数组名是一个地址常量,所以不能将它随意改变。

55.C解析:赋值的一般形式为:变量名:表达式;,赋值的方向为由右向左,即将:右侧表达式的值赋给:左侧的变量,执行步骤是先计算再赋值。选项A中运算符%的运算对象必须为整数,而选项A中26.8不为整数,故选项A不正确;选项B将一个变量赋值给一个常量,这在C语言中是不允许的,故选项B不正确;选项D中也是将一个常量3赋值给一个常量,故选项D不正确;所以,4个选项中选项C符合题意。

56.C解析:本题考查函数调用时参数的作用域。在函数调用时,函数体内定义的变量的作用域连函数体内,因而在不同函数体内定义的变量可以相同,不影响各个变量的使用。

57.D解析:本题考查指向字符串指针的运算方法。执行p=s+1后,指针变量p就指向字符串中的第二个字符“B”,然后输出字符串“BCD”并换行;下面继续执行循环语句,指针变量p指向下一个字符“C”,输出字符串“CD”,最后一次循环,p指向字符“D”,输出字符串“D”。

58.B解析:在C语言中所谓函数的递归是指在调用一个函数的过程中,又出现了直接或间接调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用。显然题目中所说得函数调用为函数的间接递归调用。所以,4个选项中选项B符合题意。

59.B解析:scanf函数的调用形式是:scanf(格式字符中,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符:“输入项地址表”是要输入的变量的地址。若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。

60.A解析:aaa()函数中,首先定义了一个字符指针t指向形参s,然后通过一个while循环让指针t不断递增,直到t指向字符串结束标志处。当t指向结束标志处时,由于后缀4-+运算符的原因,它还会被再递增1,所以接下来的t--;语句让它回到结束标志处。最后返回t-s,因此s还是指向字符串第1个字符处,而t指向了字符串结尾,故返回值为字符串的长度值。

6

温馨提示

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

评论

0/150

提交评论