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.以下不能定义为用户标识符的是()。

A.VoidB.scanfC.intD._3com_

2.设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为

A.intB.floatC.doubleD.不确定

3.在具有n个结点的有序单链表中插入一个新结点并使链表仍然有序的时间复杂度是________

A.O(1)B.O(n)C.O(nlogn)D.O(n2)

4.

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

6.

7.下列程序的输出结果是#include"stdio.h”"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}

A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5

8.阅读以下程序及对程序功能的描述,其中正确的是#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=foen(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.程序完成将两个磁盘文件合并并在屏幕上输出

9.设二叉树的中序序列为BCDA,前序序列为ABCD,则后序序列为()。

A.CBDAB.DCBAC.BCDAD.ACDB

10.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

11.已知一算术表达式的中缀形式为A+B*C–D/E,后缀形式为ABC*+DE/–,其前缀形式为()。

A.–A+B*C/DEB.–A+B*CD/EC.–+*ABC/DED.–+A*BC/DE

12.设有以下函数:voidfun(intn,char*s){…}则下面对函数指针的定义和赋值均正确的是()。

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

B.void*pf();pf=fun

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

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

13.

14.结构化程序所规定的三种最基本控制结构是A.A.输入、处理、输出

B.树形、网形、环形

C.顺序、选择、循环

D.主程序、子程序、函数

15.若有下列定义(设int类型变量占2个字节):

inti=8;

则下列语句:

printf("i=%08d",i);

输出的结果是()。A.A.i=8B.i=00000008C.i=08D.8

16.若有以下程序: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=l

17.有以下程序:#include<stdi0.h>#defineS(x)(x)"x"2main(){intk一5,j=2;Drintf("%printf,",S(k+j));printf("%printf\n",S((k—j)));}程序运行后的输出结果是()。A.98,18B.39,11C.39,18D.98,11

18.图的深度优先遍历类似于二叉树的_______。

A.先序遍历B.中序遍历C.后序遍历D.层次遍历

19.

20.在ASC算法team日常开发中,常常面临一些数据结构的抉择,令人纠结。目前大家在策划一个FBI项目(FastBinaryIndexing),其中用到的词汇有6200条,词汇长度在10-15之间,词汇字符是英文字母,区分大小写。请在下面几个数据结构中选择一个使检索速度最快的()

A.二叉搜索树,比较函数开销:1次运算/每字符

B.哈希表,hash算法开销:10次运算/每字符

C.链表,比较函数开销:1次运算/每字符

D.TRIE树,寻找子节点开销:1次运算/每字符

二、2.填空题(20题)21.结构化分析方法是面向______进行分析的方法。

22.下面程序的功能是:计算1~20之间的奇数之和与偶数之和,请填空使程序功能完整。

#include<stdio.h>

main()

{inta=0,b=0,c=0,i;

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

{a+=i;

();

c+=b;

}

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

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

}

23.设有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序运行后,从键盘上输入(<CR>代表回车符):CDEF<CR>BADEF<CR>QTHRG<CR>,则程序的输出结果是______。

24.一般来说,算法可以用顺序、选择和______三种基本控制结构组合而成。

25.下面的语句要使指针p指向一个double类型的动态存储单元,请填空。

p=【】malloc(sizeof(double));

26.执行以下程序后,输出‘#’号的个数是______。

#include<stdio.h>

main()

{

inti,j;

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

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

putchar('#');

}

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

28.有以下程序:

voidf(inta[],inti,intj)

{intt;

if(i<j)

{t=a[i];a[i]=a[j];a[j]=t;

f(a,i+1,j-1);

}

}

main()

{inti,aa[5]={1,2,3,4,5};

f(aa,0,4);

for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");

}

执行后的输出结果是【】。

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

30.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adgda。请填空。

#include<string.h>

char*huiwen(char*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=【】;

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;bteak;}

if(【】)return("yes!");

elsereturn("no!");

}

main()

{charsb[50];

printf("Input:");scanf("%s",str);

ptintf("%s\n",【】);

}

31.设Y是int型变量,请写出判断Y为奇数的关系表达【】。

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

33.以下程序运行后的输出结果是【】。

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*p=m,*q=m+4;

inti=0;

while(p!=q)

{p->k=++i;p++

q->k=i++;q--;

}

q->k=i;

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

printf("%d",m[i].k);

ptintf("\n");

}

34.设函数findbig已定义为求3个数中的最大值。以下程序将利用函数指针调用findbig函数。请填空。

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=______;

scanf("%d%d%d",&x,&y,&z}:

big=(*f)(x,y,Z);

printf("big=%d\n",big);

}

35.数据结构分为逻辑结构与()。

36.当运行以下程序时,输入abcd,程序的输出结果是:()。

insert(charstr[])

{inti;

i=strlen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

scanf("%s",str);insert(str);

}

37.下列程序的输出结果是16.00,请填空。

#include<stdio.h>

main()

{inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

38.以下程序运行后输入:3,abcde<回车>,则输出结果是______。

#include<string.h>

move(char*str,intn)

{charcemp;inti;

temp=str[n-1];

for(i=n-1;i>0;i--)str[i]=str[i-1);

str[0]=temp;}

main()

{chars[50];intn,i,z;

scanf(“%d,%s”,&n,s);

z=strlen(s);

for(i=1;i<=n;i++)move(s,z);

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

}

39.以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。

structst

{charname[20];doublescore;};

main()

{structstex;

printf("exsize:%d\n",sizeof(【】));}

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

三、1.选择题(20题)41.下列对于软件测试的描述中正确的是______。

A.软件测试的目的是证明程序是否正确

B.软件测试的目的是使程序运行结果正确

C.软件测试的目的是尽可能地多发现程序中的错误

D.软件测试的目的是使程序符合结构化原则

42.下列叙述中,不属于测试的特征的是

A.测试的挑剔性B.完全测试的不可能性C.测试的可靠性D.测试的经济性

43.若有以下定义和语句:char*s1="12345",*s2="1234";printf("%d\n",strlen(strcpy(s1,s2)));则输出结果是______。

A.4B.5C.9D.10

44.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。

A.函数的实参和其对应的形参共占同一存储单元

B.形参只是形式上的存在,不占用具体存储单元

C.同名的实参和形参占同一存储单元

D.函数的形参和实参分别占用不同的存储单元

45.设有以下说明语句:structex{intx;flocty;charz;}example;则下面的叙述中不正确的是()

A.struct是结构体类型的关键字

B.example是结构体类型名

C.x,y,z都是结构体成员名

D.structex是结构体类型

46.有以下程序,程序运行后的输出结果是______。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

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

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

48.下列句子中,正确的C语言赋值语句是()

A.n++;B.a=b=88C.t=int(x+y);D.a=100,b=200

49.设有定义语句:intx[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是()。

A.for(i=0;i<6;i++)printf("%2d",*(p++));

B.for(i=0;i<6;i++)printf("%2d",*(p+i));

C.for(i=0;i<6;i++)printf("%2d",*p++);

D.for(i=0;i<6;i++)printf("%2d",(*p)++);

50.以下函数返回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

51.下列四个叙述中,错误的是_______。

A.C语言中的关键字必须小写

B.C语言中的标识符必须全部由字母组成

C.C语言不提供输入输出语句

D.C语言中的注释行可以出现在程序的任何位置

52.以下程序的输出结果是______。structHAR{intx,y;structHAR*p;}h[2];main(){h[0],x=1;h[0].y=2;h[1]x=3;h[1].y=4;h[0].p、&h[1];h[1]..p=h;printf("%d%d\n",(h[0].p)->x,(h[1].p)->y;}

A.12B.23C.14D.32

53.下列叙述中错误的是()。A.在数据库系统中,数据的物理结构必须与逻辑结构一致,

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

C.数据库设计是指在已有数据库管理系统的基础上建立数据库

D.数据库系统需要操作系统的支持

54.下列程序执行后输出的结果是______。intd=1;fun(intp){intd=5;d+=p++;printf("%d,",d);}main(){inta3;fun(a);d+=a++;printf("%d\n",d);}

A.8,12B.9,13C.8,4D.9,5

55.若有说明语句:charch='\x41';,则ch中______。

A.包含4个字符B.包含2个字符C.包含1个字符D.字符个数不确定,说明不正确

56.在数据结构中,从逻辑结构上看可以分成______。

A.动态结构和静态结构B.线性结构和非线性结构C.内部结构和外部结构D.紧凑结构和非紧凑结构

57.软件生命周期中花费费用最多的阶段是

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

58.下述程序的输出结果是

#include<stdio.h>

voidmain()

{inta[5]={2,4,6,8,10};

int*p=a,**q=&p;

printf("%d,",*(p++));

printf("%d",**q);}

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

59.在嵌套使用if语句时,C语言规定else总是A.和之前与其具有相同缩进位置的if配对

B.和之前与其最近的if配对

C.和之前与其最近的且不带else的if配对

D.和之前的第一个if配对

60.栈和队列的共同点是()。

A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同特点

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

#include"stdio.h"

main()

{inta,b,m;

for(a=5;a>=1;a--)

{m=0;

for(b=a;b<=5;b++)

m=m+a*b;

}

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

}

上述程序的运行结果是

A.30B.15

C.20D.10

62.若有定义语句:“charsE10]="1234567\0\0";”,则strlen(s)的值是()。

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

63.

64.下列关于数据流图的描述正确的是()。

A.数据流图是描述数据处理过程的工具

B.数据流图间接支持系统的功能建模

C.数据流图中带箭头的线段表示控制流

D.数据流图是软件详细设计的工具

65.有以下程序

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

A.全局变量的作用域一定比局部变量的作用域范围大

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

C.全局变量的生存期是整个程序的运行期间

D.静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值

67.支持子程序调用的数据结构是()。

A.栈B.树C.队列D.二叉树

68.设有定义:intk=0;以下选项的四个表达式中与其他三个表达式的值不相同的是()。

A.++kB.k+=1C.k++D.k+1

69.

有下列程序:

fun(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

70.下列叙述中正确的是()。

A.栈是一种先进先出的线性表B.队列是一种后进先出的线性表C.栈与队列都是非线性结构D.以上三种说法都不对

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

72.若有定义语句:A.1B.1.9C.2D.2.4

73.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是()。A.A.数据库系统B.文件系统C.人工管理D.数据项管理

74.以下选项中,能用作数据常量的是()。

A.115LB.0118C.1.5el.5D.0115

75.以下合法的十六进制数是()。

A.0x

B.0x4De

C.0xlh

D.oX77

76.有以下程序:

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

A.zB.0C.元素eh[5]的地址D.字符Y的地址

77.

78.

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

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

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

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

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

80.

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCIl码升序排序后输出。

例如,输入opdye,则应输出deopy。

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

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

试题程序:

#include%string.h>

#include%stdlib.h>

#include<conio.h>

#include<stdio.h>

//****found****

intproc(charstr[])

{

charC;

unsignedi,j;

for(i=0;i<strlen(str)-1;i++)

for(j=i+1;j<strlen(str);j4-+)

if(str[i]>str[j])

{

c=str[j]:

//****found****

str[j]=str[i++];

str[i]=C;

}

}

voidmain

{

charst/[81];

system("CLS");

printf("\nPleaseenteracharacter

string:");

gets(str);

printf("\nknBeforesorting:\n%s",str);

proc(str);

printf("\nAftersortingdecendingly:\n

%S",str);

}

六、程序设计题(1题)82.三个整数a、b、c,由键盘输入,输出其中最大的数。

参考答案

1.C标识符的命名可以由字母、数字或下划线组成,并且第1个字符必须为字母或下划线,另外用户标识符不能使用关键字。选项A中的Void可以定义为用户标识符,因为C语言对大小写敏感,Void与关键字void属于不同的标识符;选项B中的scanf是库函数名,属于预定义标识符,它也可以作为用户标识符使用,不过通常不建议这么使用;选项C中的int属于关键字,错误;选项D符合标识符的命名规则,也不属于关键字,可以作为标识符使用。本题答案为C选项。

2.C解析:根据混合运算规则,如果有一个数据是float型或double型,则其他数据类型先转化为double型,运算的结果最终也是double型。

3.B

4.B

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

6.D

7.B解析:continue语句的作用是跳过本次循环体中余下尚未执行的语句,接着再一次进行循环条件的判定。当能被2整除时,a就会增1,之后执行continue语句,直接执行到for循环体的结尾,进行i++,判断循环条件。

8.C

9.B二叉树的前序序列为ABCD,由于前序遍历首先访问根节点,可以确定该二叉树的根节点是A。再由中序序列为BCDA,可知以A为根节点的该二叉树只存在左子树,不存在右子树,故后序序列为DCBA。本题答案为B选项。

10.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。

11.D

12.A函数指针的定义格式为函数类型(*指针变量名)(形参列表);函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。所以选项A正确。

13.D

14.C解析:结构化程序设计方法采用顺序、选择和循环三种基本程序控制结构编写程序,从而使程序具有好的结构。

15.B解析:本题考查printf函数的格式。“%08”格式符中的“0”表示在指定数据输出宽度的同时,在数据前面的多余空格处加“0”;“8”表示指定数据的输出宽度为8位。

16.B本题考查按位异或的用法。按位异或运算的规则是:两个运算数的相应二进制位相同,则结果为0,相异则结果为1。b=2的二进制为00000010,a=1的二进制为00000001,a=a^b一00000011,转化为十进制后为3,b=b^a=00000010^00000011=00000001,即1。

17.BS(k+j)=(k+j)*k+j*2=(5+2)*5+2*2=39,同理S(k-1)=(k+j)*k+j*2=\r\n(5-2)*5-2*2=11,所以答案选择B。

18.A

19.D

20.D

21.数据流数据流解析:结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

22.b=i+1b=i+1解析:分析for循环条件,i=0说明循环从0开始判断,i+=2是间隔为2的数,i<=20就是控制数是20之内的a+=i,就是所有偶数的和,如果从1开始(b=i+1)间隔为2的数(1,3,5,7,9,11,13,15,17,19)相加就是所有奇数的和。

23.QTHRGQTHRG解析:strcmp(t,s)函数用来比较t和s所指字符串的大小,若t>s,则函数值大于0;若t=s,则函数值等于0:若t<s,则函数值小于0。strcpy(t,s)函数的功能是把字符数组s所指字符串的内容复制到字符数组t所指的存储空间中。本题中,t[10]='CDEF'。第一次循环,s[10]='BADEF',if语句的控制条件strcmp(t,s)<0不成立,接着执行第二次循环.s='QTHRG',if语句的控制条件strcmp(t,s)<0成立,执行下列的语句,将字符数组s所指字符串的内容复制到字符数组t所指的存储空间中,然后输出字符数组t。

24.循环循环解析:算法一般由顺序,选择和循环三种基本控制结构组合而成。

25.(double*)(double*)解析:本题考查强制类型转换。函数malloc的默认返回是void*,若要使指针指向double类型,必须进行类型转换,类型转换格式为:(数据类型*)。

26.66解析:本题中,i,j分别为外循环和内循环的循环控制变量,外层循环共执行了四次.当i=1时,由于内层循环判断条件(2<=1)为假不执行内层循环.当i=2时,执行内层循环,输出一个#当i=3时,内层循环循环两次,输出两个#,当i=4时,内层循环循环三次,输出三#。当i=5时,循环判断条件不成立,退出外层循环。所以一共输出6个#。

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

28.154321,5,4,3,2解析:第一次调用函数f后aa[0]=5、aa[4]=1;第二次调用函数f后aa[1]=4、aa[4]=2;第三次调用函数f后aa[3]=3。正确答案为1,5,4,3,2。

29.原型化原型化

30.str+strlen(p1)-1或str+strlen(str)-1或str-1+strlen(str)或str-1+strlen(p1)t==0或!t或t=='\0'huiwen(str)str+strlen(p1)-1或str+strlen(str)-1或str-1+strlen(str)或str-1+strlen(p1)\r\nt==0或!t或t=='\\0'\r\nhuiwen(str)解析:函数huiwen中开始定义了两个字符指针p1和p2,并让p1指向sb的开始位置,所以p2应该指向str的尾部,即&str[strlen(str)-1]或写成str+strlen(str)-1或者其他等价形式。然后使用一个循环,循环str的长度的一半次数,比较p1和p2的内容,并分别递增和递减这两个指针。若有不同,则让标志t为1,并跳出循环。所以最后一个if语句应该为判断标志t是否为1,即应该填t==0或者其它等价形式。在主函数中,应该输出huiwen()函数的返回结果,即最后一空应该填huiwen(str)。

31.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或不为0。本题具体做法如下:Y%2=1或Y%2!=0。

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

33.1343113431解析:程序首先定义了一个结构体NODE,在主函数中声明了一个该结构体的数组m[5]和两个结构体指针p和q,并分别初始化p指向m(指向数组的第—个元素):q指向m+4(指向数组的最后一个元素)。接下来定义并初始化一个整型变量i为0。然后用一个while循环,在p和q不相等的时候执行循环体:让p所指结构体的成员k等于++i的值,然后让p指向下一个结构体;让q所指结构体的成员k等于i++的值,然后让q指向前一个结构体。i从0开始交替调用++i和i++,两个表达式的值依次分别为1和1、3和3……。所以当p==q循环结束时,实际循环了两次,p和q都指向m数组的中间位置m[2],i自增了4次,所以q->k=i;就是让m[2]k=4。所以程序最后输出为:13431。

34.findbigfindbig解析:本题考核的知识点是指向函数的指针变量的使用。本题首先定义了一个指向函数的指针变量f,如果希望让它指向某个函数,只需把函数名赋给该指针变量即可。所以说本题的空格处应该填入函数名findbig。

35.存储结构存储结构解析:数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,即数据的组织形式。它分为数据的逻辑结构和数据的存储结构。

36.a*b*c*d*a*b*c*d*解析:字符处理函数strlen()测试字符串常量的长度,不包括‘\\0’在内。因此,函数insert()实现了将字符数组中每个非‘\\0’的字符后插入字符‘*’的功能。故输出结果是a*b*c*d*。

解析:本题以浮点格式输出z值,宽度为5,有2位小数。应该注意的是,两个整数运算结果仍为整数,如1/2的结果为0。本题可逐步求解:

16.00=9/2+2*x/1.1+1/2

16.00=4+2*x/1.1+0

12.00=2*x/1.1

所以,x的值为6.6。

38.cdeabcdeab解析:本题考核的知识点是基本算法的应用和程序的综合分析。从分析知道move()函数的作用,是将形参str所指的数组依次向后左移一位,即让该数组第一个元素的值等于第二个元素的值,接着让第二个元素的值等于第三个元素的值,直到该数组最后第二个元素的值等于最后一个元素的值,然后让第一个元素等于最后一个元素的值。主函数中用了一个for循环调用move()函数,共循环三次。当i=1时,第一次调用move()函数,使输入到数组的s的字符串“abcde”变为“eabcd”,当i=2时,第二次调用move()函数,使字符串“eabcd”变为“deabc”,当i=3时,第三次调用move()函数,使字符串“deabc”变为“cdeab”,故最后输出的值为“cdeab”,故该空格处应该填“cdeab”。

39.structst或exstructst或ex解析:结构体类型数据,其数据成员各自占据不同的存储空间,整个结构体变量所占存储单元的字节数为每一个数据成员所占的存储空间的和。注意:共用体变量所占存储单元字节数的计算。

40.3232解析:while(表达式)的功能是:首先计算表达式的值,若为真,则执行循环体语句,执行完毕,再计算表达式的值,若仍为真,则重复执行循环体语句,直到表达式的值为假时,结束while语句的执行,继续执行while语句后面的语句:i=0时满足循环条件,也满足if的条件,执行语句得i=11,a=11,第2次循环不满足if的条件,执行i--,i=10,执行i+=11;a+=i后,得i=21,a=32,不满足i<20,循环结束。

41.C解析:软件测试的目的:尽可能地多发现程序中的错误,不能也不可能证明程序没有错误,软件测试是一个发现错误而执行程序的过程。软件调试的目的是发现错误的位置,并改正错误。

42.C解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中没有测试的可靠性这一说法。注意:软件测试与软件调试的概念,以及相应的方法。

43.A解析:函数strcpy(s1,s2)的返回结果是指针s1的新值'1234',因此求串长函数的结果为4。

44.D解析:在定义函数时函数名后面括弧中的变量名称为“形式参数”(简称形参),在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”(简称实参)。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。故本题应该选择D。

45.B

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

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

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

48.A

49.D解析:*p=x的作用是将x的首地址赋给指针变量p。选项A)正确,*(P++)中括号内的++是在P的后面,所以它先取*P的值x[0],再执行p++;选项B)正确,p+i表示x[i]的地址,*(p+i)表示x[i]的值;选项C)中的*和++处于同一优先级别,而结合方向为自右而左,因此*p++相当于*(p++),与选项A)相同;选项D)中的(*p)++是使*p的值+1,即x[0]的值加1,它不能实现指针的移动,每次循环只是x[0]的值在改变,而P的值并没有改变,所以不能实现6个元素的输出。

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

51.B解析:C语言规定标识符只能由字母、数字和下划线3种字符组成,且第—个字符必须为字母或下划线。

52.D解析:本题中是一个含有两个结点的循环链表。

C语言中结构体的定义为:

struct结构体类型名

{

成员项表;

};

53.A解析:本题考查数据库系统的基本概念和知识。数据的逻辑结构,是数据间关系的描述,它只抽象地反映数据元素之间的逻辑关系,而不管其在计算机中的存储方式。数据的存储结构,又叫物理结构,是逻辑结构在计算机存储器里的实现。这两者之间没有必然的联系。因此,选项A的说法是错误的。

数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它们所需要的子集,而且容许子集任意重叠。数据库的根本目标是要解决数据的共享问题。因此,选项B的说法是正确的。

数据库设计是在数据库管理系统的支持下,按照应用的要求,设计一个结构合理、使用方便、效率较高的数据库及其应用系统。数据库设计包含两方面的内容:一是结构设计,也就是设计数据库框架或数据库结构;二是行为设计,即设计基于数据库的各类应用程序、事务等。因此,选项C的说法是错误的。

数据库系统除了数据库管理软件之外,还必须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等。对于大型的多用户数据库系统和网络数据库系统,还需要多用户系统软件和网络系统软件的支持。因此,选项D的说法是正确的。因此,本题的正确答案是选项A。

54.C解析:本题执行过程如下:首先调用fun函败,使得实参a的值3传递给形参p,得到局部变量d=8,打印出局部变量d的值8;返回主函数执行“d+=a++”,此处的d为全局变量,所以d=1+3=4(由于本题是值传递,所以在函数fun中对p值的改变并不能引起a的改变),故本题的输出是8,4。

55.C解析:'\\x41'是转义字符,x表示41是十六进制数,41是字母a的ASCII码值。

56.B

57.D解析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。

58.D解析:考查一维数组的指针和指向指针的指针两个知识点。通过赋值,指针p和q都指向了数组a的首地址,*(p++)先引用数组元素,然后p++,所以输出结果为2,**q指向的数组元素为4。

59.C解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合,与书写格式无关。所以选项C)为正确答案。

60.C解析:栈和队列都是操作受限制的线性表,只允许在端点插入和删除。不同点是:栈只允许在表的一端进行插入和删除操作,而队列允许在表的一端进行插入操作,而在另一端进行删除操作。

61.B在本题中,程序首先定义了三个整型变量,然后执行for循环,从循环的结构条件我们可以知道,循环执行了5次,循环变量a的值分别为5,4,3,2,1。

当a=5时,m=0,执行第二层循环,循环开始时,是变量a的值赋给循环变量b,而且只要循环变量b的值小于等5,循环继续,循环变量b的值每经过一次循环后自加1,这时由于b=a=5,循环只执行一次,m=m+a*b可描述为m=0+5*5=25。如果我们一直这样分析下去,由于循环的次数太多,那么费时肯定也很多,而且还容易出错,因此,我们需要找到新的解决问题的办法。

从我们对上一次循环执行过程的分析可以看出,第一层循环,每次在最前面执行语句m=0操作,即将我们前面执行的m结果值进行清0操作,使其不影响后面m的值,程序最终要输出的m是当a=1时那次循环计算到的m的值。

当a=1时,b的初值为1,第二层循环执行5次,第一

温馨提示

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

评论

0/150

提交评论