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.若有定义和语句int**pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d,%d\n",*p,**pp);则输出结果是()

A.10,10B.10,20C.20,10D.20,20

2.链表不具有的特点是()。A.A.不必事先估计存储空间

B.可随机访问任意元素

C.插入、删除不需要移动元素

D.所需空间与线性表长度成正比

3.有以下程序:#include<stdio.h>intfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i<=3;i++)s*=fun();printf(“%d\n”,s);}程序的运行结果是()。

A.10B.30C.0D.64

4.众所周知数据结构中非常基本的树结构包括二叉查找树(BST)。当我们把如下序列:10,5,19,4,13,7,6,3,1按顺序建立一棵BST时,树的最大深度是?(令根节点深度为0,不执行平衡二叉树操作)()

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

5.设栈S的初始状态为空,6个元素入栈的顺序为e1,e2,e3,e4,e5和e6。若出栈的顺序是e2,e4,e3,e6,e5,el,则栈s的容量至少应该是()。

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

6.以下正确的叙述是()。

A.在C程序中,每行中只能写一条语句

B.若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数

C.在C程序中,无论是整数还是实数,都能被准确无误地表示

D.在C程序中,%是只能用于整数运算的运算符

7.下面的哪个保留字不能作为函数的返回类型()。

A.voidB.intC.newD.long

8.

9.

10.

11.定义int*swap()指的是______。

A.—个返回整型值的函数swap()

B.一个返回指向整型值指针的函swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

12.有定义语句:“int*p[4];”,以下选项中与此语句等价的是()。

A.intp[4];B.int**P;C.int*(p[4]);D.int(*p)[4];

13.

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

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

15.下列程序的输出结果是()#include<stdio.h>main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1:case2:a+=2;default:a+=3;}printf(“%d”,a);}A.19B.18C.6D.8

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

17.以下选项中表示一个合法的常量是(说明:符号口表示空格)()。

A.9口9口9B.0XabC.123E0.2D.2.7e

18.以下叙述中正确的是()。

A.用C语言编写的程序只能放在一个程序文件中

B.C语言程序书写格式严格,要求一行内只能写一个语句

C.C语言程序中的注释只能出现在程序的开始位置和语句的后面

D.C语言程序书写格式自由,一个语句可以写在多行上

19.

20.有以下程序:

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);

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

}

程序运行结果是A.A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

二、2.填空题(20题)21.下面的程序可对指定字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

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

#include<stdio.h>

main()

{intx=1,y=1,a=1,b=1;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:

a++;b++;break;

}

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

}

23.在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放各元素之间______的信息。

24.在两种基本测试方法中,【】测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。

25.以下程序的功能是:将输入的正整数按逆序输出。例如:若输入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");

}

26.函数fun的返回值是【】。

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')num++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

27.下面程序的功能是:计算1~10之间的奇数之和与偶数之和,请填空。

#include<stdio.h>

main()

{inta,b,c,i;

a=c=0;

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

{a+=i;

【】;

c+=b;}

printf("偶数之和=%d\n",a);

printf("奇数之和=%d\n",c-11);}

28.有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是【】。

structnode

{chardata;

structnode*next;}a,b

29.以下程序中,select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。

#defineN3

#defineM3

select(inta[N][M],int*n)

{inti,j,row=1,colum=1;

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

for(j=0;j<M;j++)

if(a[i][j]>a[row][colum]){row=i;colum=j;}

*n=【】;

return(【】);

}

main()

{inta[N][M]={9,11,23,6,1,15,9,17,20},max,n;

max=select(a,&n);

printf(“max=%d,line=%d\n”,max,n);

}

30.在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。

31.与结构化需求分析方法相对应的是【】方法。

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

f(intA)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

33.一个模块直接调用的其他模块的模块个数称为______。

34.下面程序调用fun函数动态分配两个整型存储单元,并通过形参传回这两个整型存储单元的地址给s1和s2,将程序补充完整。

┇

main()

{

int*s1,*s2;

┇

fun(【】);

┇

}

intfun(【】);

{

*p=(int*)malloc(sizeof(int));

*q=(int*)malloc(sizeof(int));

}

35.以下程序的功能是找出三个字符串中的最大串。

【】

#include<stdio.h>

main()

{inti;

charstring[20],str[3][20];

(i=0;i<3;i++)gets(【】);

if(strcmp(str,str[0],str[1]>0)strcpy(string,str[0]);

elsestrcpy(string,str[1]);

if(strcmp(str[2],string)>【】)srtcpy(string,str[2]);

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

}

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

37.以下程序中函数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");

}

38.下面rotme函数的功能是:将n行n列的矩阵A转置为A'。例如:

请填空。

#defineN4

voidrotate(inta[][N])

{inti,j,t;

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

for(j=0;【】;j++)

{t=a[i][j];

【】;

a[j][i]=t;

}

}

39.设y为血型变量,请写出描述“y是偶数”的表达式______。

40.下列程序段中循环体的执行次数是______。

a=15;

b=0;

do{b+=2;a-=2+b;}while(a>=0);

三、1.选择题(20题)41.下列数据结构中,按先进后出原则组织数据的是()。

A.循环队列B.栈C.顺序表D.循环链表

42.在int(*prt)[3];定义中,标识符prt()。

A.定义不合法

B.是一个指针数组名,每个元素都是一个指向整型变量的指针

C.是一个指针,它指向一个具有三个元素的一维数组

D.是一个指向整型变量的指针

43.以下叙述中正确的是A.全局变量的作用域一定比局部变量的作用域范围大

B.静态(static)类别变量的生存期贯穿于整个程序的运行期间

C.函数的形参都属于全局变量

D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值

44.软件调试的目的是______。

A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能

45.在C语言中,不正确的int类型的常数是______。

A.32768B.0C.37D.0xAF

46.能够对计算机的硬件设备进行管理,并使应用软件能够方便、高效地使用这些设备的是()

A.数据库存系统B.操作系统C.编辑软件D.应用软件

47.在软件生存周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()。

A.概要设计B.详细设计C.可行性分析D.需求分析

48.若变量已正确定义,要求通过scanf("%c%d%c%d",&c1,&a,&c2,&B)语句给变量a和b分别赋32和45,给变量c1和c2分别赋字符A和B;下列选项中数据从第1列开始输入,正确的输入形式是()。

A.A32<CR>B45<CR>B.A45<CR>B32<CR>C.A32B45<CR>D.A32B45<CR>

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

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

50.对下述程序的判断中,正确的是

#include<stdio.h>

voidmain()

{char*p,s[128];

p=s;

while(strcmp(s,"End"))

{printf("Inputastring:");gets(s);

while(*p)

putchar(*p++);}}

A.此程序循环接收字符串并输出,直到接收字符串"End"为止

B.此程序循环接收字符串,接收到字符串"End"则输出,否则程序终止

C.此程序循环接收字符串并输出,直到接收字符串"End"为止,但因为代码有错误,程序不能正常工作

D.此程序循环接收字符串并将其连接在一起,直到接收字符串"End"为止,输出连接在一起的字符串

51.下面程序的输出结果是#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

52.有以下程序:main(){char*p[10]={"abc","aabdfg","dcdbe","abbd","cd"};printf("%d\n",strten(p[4]));}执行后输出结果是

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

53.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是______。

A.pb=&x;B.pb=x;C.*pb=&x;D.*pb=*x

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

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

55.以下对C语言函数的有关描述中,正确的是

A.在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参

B.C函数既可以嵌套定义又可以递归调用

C.函数必须有返回值,否则不能使用函数

D.函数必须有返回值,返回值类型不定

56.分析下面的程序main(){int*p1,*p2,*p;intx=4,y=6;p1=&x;p2=&y;if(x<y){p=p1;p1=p2;p2=p;}printf("%d,%d,",*p1,*p2);printf("%d,%d\n",x,y);}程序的输出结果为_______。

A.6,4,4,6B.4,6,6,4C.4,6,4,6D.6,4,6,4

57.库函数strcpy用以复制字符串,若有以下定义和语句:charstr1[]="china",str2[10],*str3,*str4="china";则对库函数strcpy的正确的调用是_______。

A.strcpy(strl,"people");

B.strcpy(str2,"people");

C.strcpy(str3,"people");

D.strcpy(str4,"people");

58.有以下程序

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

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

}

程序的运行结果是

A.a=1,b=0B.a=2,b=2C.a=1,b=1D.a=2,b=1

59.下列关于队列的叙述中正确的是______。A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表

60.不能与do…while(exp)语句中的(exp)等价的表达式是()。

A.(!exp==0)B.(exp>0‖exp<0)C.(exp==0)D.(exp!=0)

四、选择题(20题)61.下列关于线性链表的叙述中,正确的是()。

A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致

B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续

C.进行插入与删除时,不需要移动表中的元素

D.各数据结点的存储顺序与逻辑顺序可以不一致,它们的存储空间也可以不一致

62.下面叙述中错误的是()。

A.软件测试的目的是发现错误并改正错误

B.对被调试的程序进行“错误定位”是程序调试的必要步骤

C.程序调试通常也称为Debu9

D.软件测试应严格执行测试计划,排除测试的随意性

63.(67)数据处理的最小单位是()

A.数据

B.数据元素

C.数据项

D.数据结构

64.

65.当用“#defineF37.5f”定义后,下列叙述正确的是()。

A.F是float型数B.F是Char型数C.F无类型D.F是字符串

66.若有以下说明,则()不是对strcpy库函数正确的调用。strcpy库函数用于复制一个字符串:char*strl="abCd",str2[10],*str3="hijklmn",*str4[2],*str5="aaaa";

A.strcpy(str2,strl)

B.strcpy(str3,strl)

C.strcpy(strl,str2)

D.strcpy(str5,strl)

67.以下程序有错,错误的原因是

main()

{int*p,i;char*q,ch;

p=&i;

q=&ch;

*p=40;

*p=*q;

......

}

A.p和q的类型不一致,不能执行*p=*q;语句

B.*p中存放的是地址值,因此不能执行*p=40;语句

C.q没有指向具体的存储单元,所以*q没有实际意义

D.q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果

68.在Internet中,域名服务器的主要功能是实现()的转换。

A.IP地址到域名(主机名字)B.域名到IP地址C.主机IP地址和路由器IP地址之间D.路由器IP地址之问

69.C语言的基本单位是()。

A.函数B.过程C.子程序D.子函数

70.层次型、网状型和关系型数据库划分原则是()。

A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式

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

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

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

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

73.

74.下列选项中,不属于模块间耦合的是()。A.数据耦合B.标记耦合C.异构耦合D.公共耦合

75.以下选项中有语法错误的是()。A.char*str[]={"guest"};

B.charstr[][lO]={"guest"};

C.char*str[3];str[t]={"9uest"};

D.charstr[3][lO];str[1]={"guest"};

76.

77.

78.第

11

题

若有定义:char*st="howareyou";下列程序段中正确的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

79.三种基本结构中,能简化大量程序代码的是()。

A.顺序结构B.分支结构C.选择结构D.重复结构

80.软件生命周期中所花费用最多的阶段是()。

A.详细设计B.软件编码C.软件测试D.软件维护

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,若num1和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输出的最大公约数为27。请改正程序中的错误,使它能得出正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数其功能是移动一维数组中的内容,若数组中有n个整数,要求把下标为0~p(含p,p小于等于n-1)的数组元素平移到数组的最后。例如,一维数组中的原始内容为1、2、3、4、5、6、7、8、9、10;P的值为3。移动后,一维数组中的内容应为5、6、7、8、9、10、1、2、3、4。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){ inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; inti,p,n=15; printf(“Theoriginaldata:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\nEnterp:”); scanf(“%d”,&p); fun(a,p,n); printf(“\nThedataaftermoving:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\n”);}

参考答案

1.D

2.B链表采用的是链式存储结构,它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,插入、删除不需要移动数据元素。但是链式存储结构也有不足之处:每个结点中的指针域需额外占用存储空间,它是一种非随机存储结构。

3.D本题中静态局部变量X,在静态存储区内分配存储单元,在程序整个运行期间都不释放。在main函数中,执行for循环,第1次循环,变量s的值为2;第2次循环,函数的返回值为4,所以变量s的值为8;第3次循环,函数的返回值为8,所以s的值为64。故本题答案为D选项。

4.B

5.C

6.D

7.C

8.B

9.A

10.B

11.B解析:—个函数可以带回—个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是—个返回整型指针的函数。

12.D本题int*p[4]的作用是声明一个指针数组,每个元素都是int*型指针。

13.A

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

15.A本题考查switch语句。当i=1时,执行case1,因为没有遇到break语句,所以依次往下运行,a=a+2=2,a=a+3=5;当i=2时,执行case2,因为没有遇到break语句,所以依次往下运行,a=a+2=7,a=a+3=10;当i=3时,执行case3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a=a+2=13,a=a+3=16;当i=4时,执行default,a=a+3=19,结束循环。

16.A本题考查do-while循环。当--y是0(即y是o)时结束循环,输出--y,先将y的值减1再输出Y的值。

17.B当用指数形式表示浮点数据时,E的前后都要有数据,并且E的后面数要为整数。

18.D用C语言编写的程序可以放置于多个程序文件中,所以A选项错误。C语言程序中的一行可以有多条语句,所以B选项错误。C语言中的注释语句可以与原语句放在一行,也可以不放在一行,所以C选项错误。故本题答案为D选项。

19.D

20.D

21.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字词进行比较,如果当前字符小于下一个字符,则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+1]。最终打印输出得到的字符串str,所以第三空应填:'%s',str。

22.a=2b=3a=2,b=3解析:分析程序,程序从x=1语句开始执行,之后执行第一个switch语句,switch(x)=switch(1),所以执行case1,case1语句中包含一个复合switch语句:这时执行第二个switch语句,此时y=1,所以switch(y)=switch(1),因此执行case1,将b加1,得到b=2,遇到break语句,退出第二个switch语句,则整个case1的复合语句执行完毕,由于在这个case1的后面没有break语句使其退出第一个switch语句,所以接着执行下列的case2后面的语句,即将a,b各加1,得到a=2,b=3。

23.前后件关系前后件关系解析:在数据存储结构中,除了要存储数据,还要存储数据的前后件关系,对于顺序存储的数据结构,前后件之间的关系,是通过存储空间的位置来实现的,而对于链式存储来说,数据元素之间的前后件关系是通过指针来实现的。

24.白盒或白箱或白盒子或WhiteBox白盒或白箱或白盒子或WhiteBox解析:本题考查软件工程的测试。测试一般有两种方法:黑盒测试和白盒测试。黑盒测试不考虑程序的内部逻辑结构和处理过程,只着眼于程序的外部特性。用黑盒测试来发现程序中的错误,必须用所有可能的输入数据来检查程序能否都能产生正确的输出。白盒测试是在了解程序内部结构和处理过程的基础上,对程序的所有路径进行测试,检查路径是否都能按预定要求正确工作。因此,划线处应填入“白盒(箱)”或“WhiteBox”。

25.n/=10n/=10解析:正整数按逆序输出,即从低位到高位顺序取出该正整数个数位的值输出。“s=n%10”为除10取余,第一次循环取出该正整数小数位,为顺序移位,该空应为n/=10。

26.字符串a和b的长度之和字符串a和b的长度之和解析:本题首先通过第一个while循环计算字符串a的长度,再通过第二个循环,将字符串a和b相连,最后返回连接后的总长度。

27.b=i+1b=i+1解析:本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2之后和累加至a,所以a的值就是1~10之间的偶数之后;b的值是1~11之间的奇数和,但在输出b值时c去掉多加的11,即为1~10之间的奇数之和。

28.a.next=aba.next=ab解析:选项A)中,指针变量q保存的就是变量b的地址,选项B)中的p是指针变量,应该是p->next=&b;在选项D)中,用*运算符取出结构体变量,并且保存的就是b的地址。

29.rowa[row][colum]row\r\na[row][colum]解析:指针变量作为函数参数及二维数组的一个典型算法——求最大值及其下标。通过对题意的分析,在select()函数中,变量row的作用是用来记录最大元素的行下标,colum的作用是用来记录最大元素的列下标。程序中通过一个循环求得数组元素中最大值的行列下标,分别存放在变量row和colum中,根据题意,应该把行下标赋值给形参指针变量n指向的变量,把最大值a[row][colum]作为函数值返回。

30.循环链表循环链表解析:在循环链表中,由于设置了一个头结点,因此在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。

31.结构化设计结构化设计解析:与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是采用最佳的可能方法设计系统的各个组成部分以及各个成分之间的内部联系的技术。

32.77解析:在程序执行时,static变量仅初始化一次,下次使用时将使用上次保存的值。

33.扇出扇出解析:在结构图中,调用一个给定模块的模块个数称为扇入,一个模块直接调用的其他模块个数称为扇出。

34.&s1&s2

35.#include<string.h>str[i]0

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

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

38.j<Ia[i][j]=a[j][i]j<I\r\na[i][j]=a[j][i]解析:本题中要求将n行n列的矩阵A转置,即让数组中行上的元素变成对应列上的元素。即把对角线两边的元素对换,所以本题的第一个空白处应该填写j<i,第二个空白处填写交换对角线两边的元素的语句a[i][j]=a[j][i]。

39.(y%2)==0(y%2)==0解析:因符合偶数的条件是对2取余为0,所以要描述y是偶数的表达式是(y%2)==0。

40.33解析:本题考查do…while语句形式:

do循环体

while表达式

首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。第1次循环:b+=2,b=2,a-=2+b,a=11;第2次循环:b=4,a=5;第3次循环:b=6,a=-3,此时再判断循环条件不满足,退出循环。

41.B解析:循环队列是队列的一种顺序存储结构,队列是以先进先出为原则组织数据的一种特殊线性表,选项A错误;栈是以先进后出为原则组织数据的一种特殊线性表,选项B正确;顺序表是线性表的顺序存储结构,选项C错误;循环链表是一般线性表的一种链式存储结构,选项D错误。

42.C解析:此题的关键是要分清指针数组与指向一维数组指针之间的不同,题中的说明语句定义了一个指针变量prt,它指向包含三个整数元素的一维数组。要注意:*prt两侧的圆括号不能缺少,如果写成*ptr[3],则ptr与[3]先结合,是数组,然后再与前面的。号结合,则*ptr[3]将是一个指针数组。

43.B解析:若在函数中定义与全局变量名字相同的局部变量,则全局变量在该函数中将不起作用,因此全局变量的作用域并不一定比局部变量的作用域大,故选项A不正确;静态变量一旦定义,将在整个程序的运行期间都存布,故选项B正确;函数的形参只在函数调用的时候分配存储空间,在退出函数时收回存储空间,因此是局部的,故选项C不正确;没有赋值的auto型变量的初值是随机的,没有赋值的static型变量的初值是0,故选项D不正确。所以,B选项为所选。

44.B解析:在对程序进行测试时会发现错误,这就要进行程序调试(排错)。程序调试活动由三部分组成:一是错误定位,根据错误的外部表现形式,确定程序中出错的位置,找出错误的内在原因;二是对程序进行修改,排除这个错误;三是进行回归测试,防止引进新的错误。所以程序调试的目的就是诊断和改正程序中的错误。软件调试不能改善软件的性能,也不能挖掘软件的潜能。

45.A解析:C语言中int类型的常数的范围是:-32768~32767。C整常数可用三种形式表示:十进制整数,八进制整数,十六进制整数。选项A超出范围,不正确。

46.B

47.D解析:在需求分析阶段中,根据可行性研究阶段所提交的文档,特别是从数据流图出发,对目标系统提出清晰、准确和具体的要求,即要明确系统必须做什么的问题。本题的正确答案为D。

48.D解析:本题考查scanf函数的基本格式。当需要从键盘上输入数据时,输入的数值之间需要有间隔符(空格符号、制表符号、回车符号),间隔符号的使用数量不限。直到按下回车键,scanf函数才会接受从键盘输入的数据。

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

50.B解析:此题考查了字符串输入函数gets和字符串比较函数strcmp,另外还有字符输出函数putchar。gets从标准输入设备中读入全部字符,包括空格,直到遇到回车符为止。strcmp是字符串比较函数,即strcmp(字符串1,字符串2),如果字符串1=字符串2,则函数值为0;如果字符串1>字符串2,则函数值为一正整数;如果字符串1<字符串2,则函数值为一负整数。putchar(c)函数将字符c输出到标准输出设备上。

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

52.A解析:本题考核的知识点是指针数组的定义和strlen()函数的应用。本题中首先定义了一个长度为10的指针数组,并赋初值,因此执行strlen(p[4]后的返回值为字符串“cd”的长度为2。所以,4个选项中选项A符合题意。

53.A解析:选项A将变量x的地址赋绐指针变量pb,使pb指向x‘选项B是烙x的值当作地址赋给指针pb,pb指向一个地址等于x值的内存单元;选项c将x的地址赋给指针pb指向的地址等于x的内存单元。

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

55.A解析:C语言中的函数可以进行递归调用,但不能在函数中定义函数,即函数不能嵌套定义。函数可以没有返回值,若有返回值,则返回值类型必须确定。

56.A解析:if语句执行前,指针变量p1指向变量x,指针变量p2指向变量y。由于x<y成立,p1、p2分别指向变量y和变量x,因此,程序输出结果是6,4,4,6。

57.B解析:strcpy(字符数组1,字符串2)其作用是将字符串2复制到字符数组1中去。注:(1)字符数组1必须定义得足够大;(2)“字符数组1”必须写成数组名的形式;(3)复制时连同字符串后面的'\\0'一起复制到字符数组1中。

58.D解析:本题考查switch语句,首先,x=1符合条件case1,执行switch(y)语句,y=0符合case0语句,执行a++并跳出switch(y)语句,此时a=1。因为case1语句后面没有break语句,所以向后执行case2语句,执行a++,b++,然后跳出switch(x),得a=2,b=1。

59.C队列是指允许在一端进行插入、而在另一端进行删除的线性表,选项A和选项B错误。允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除。所以,队列又称为“先进先出”或“后进后出”的线性表,它体现了“先来先服务”的原则,选项C正确,选项D错误。

60.C解析:本题考查.do…while循环。在do…while循环中,当表达式的值为非零(真)时,执行循环,不能与其等价的是为零的表达式,即(exp==0)。

61.C一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置:廷系与逻辑关系也不一致。线性链表中数据的插入和删除都不需要移动表中的元素,只需改变结点的指针域即可。因此,本题答案为C)。

62.A软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,因此选项A)错误。程序调试的基本步骤有:错误定位、修改设计和代码以排除错误、进行回归测试以防止引进新的错误。程序调试通常称为Debu9,即排错。软件测试的基本准则包括:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、不可能实现穷举测试、妥善保存测试计划等文件。

63.C注:数据项不可再分割

64.D

65.D解析:字符替换定义格式为:#define标识符(形参表)形参表达式。题中F是代表形参表达式的标识符(字符串)。

66.Cstrcpy(sl,s2)函数的功能是将字符串s2复制到字符串s1中。要保证s1存储区能容纳下s2字符串。

67.D在本题中,题目要求我们分析给出程序段错误的原因。我们可以结合选项和程序段来分析。

在C语言中,是可以将字符型的变量赋值给整型变量的,主要是由于字符型是以ASCII码存储在计算机中的,在赋值的过程中,系统会将其对应的ASCII码值赋给整型变量,选项A描述的错误原因是不成立的。

*p表示的是数值,而非地址,*p=40;语句是合法的语句,选项B描述的错误原因也是不成立的。虽然q没有指向具体的存

温馨提示

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

评论

0/150

提交评论