}
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(aa+2,5);
for(i=0;i<10;i++)printf("%d,",aa[i]);
printf("\n");
}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,10,
B)1,2,7,6,3,4,5,8,9,10,
C)1,2,7,6,5,4,3,8,9,10,
D)1,2,9,8,7,6,5,4,3,10,
(29)设函数fun的定义形式为
voidfun(charch,floatx){……}
则以下对函数fun的调用语句中,正确的是
A)fun("abc",3.0);
B)t=fun('D',16.5);
C)fun('65',2.8);
D)fun(32,32);
(30)有以下程序
#include
#defineF(x,y)(x)*(y)
main()
{
inta=3,b=4;
printf("%d\n",F(a++,b++));
}
程序运行后的输出结果是
A)12B)15C)16D)20
(31)以下程序的输出结果是
main()
{inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
for(i=0;i<4;i+=2)printf("%d",p[i]);
}
A)52
B)51
C)53
D)97
(32)请读程序:
#include
inta[]={2,4,6,8,};
main()
{
inti;
int*p=a;
for(i=0;i<4;i++)a[i]=*p++;
printf("%d\n",a[2]);
}
上面程序的输出结果是
A)6B)8C)4D)2
(33)有以下程序段
main()
{inta=5,*b,**c;
c=&b;b=&a;
…
}
程序在执行了c=&b;b=&a;语句后,表达式**c的值是
A)变量a的地址
B)变量b中的值
C)变量a中的值
D)变量b的地址
(34)以下选项中,能定义s为合法的结构体变量的是
A)typedefstructABC
{doublea;
charb[10];
}s;
B)struct
{doublea;
charb[10];
}s;
C)structABC
{doublea;
charb[10];
}
ABCs;
D)typedefABC
{doublea;
charb[10];
}
ABCs;
(35)有以下程序:
structs
{intx,y;}data[2]={10,100,20,200};
main(){structs*p=data;
printf("%d\n",++(p->x));
}
程序运行后的输出结果是
A)10B)11C)20D)21
(36)有以下程序段
typedefstructNODE
{intnum;structNODE*next;
}OLD;
以下叙述中正确的是
A)以上的说明形式非法
B)NODE是一个结构体类型
C)OLD是一个结构体类型
D)OLD是一个结构体变量
(37)有以下程序
#include
structSTU
{charname[10];
intnum;
};
voidf(char*name,intnum)
{structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};
num=s[0].num;
strcpy(name,s[0].name);
}
main(){structSTUs[2]={{"YangSan",20041},{"LiSiGao",20042}},*p;
p=&s[1];f(p->name,p->num);
printf("%s%d\n",p->name,p->num);
}
程序运行后的输出结果是
A)SunDan20042
B)SunDan20044
C)LiSiGuo20042
D)YangSan20041
(38)设有以下语句
chara=3,b=6,c;
c=a^b<<2;
则c的二进制值是
A)00011011
B)00010100
C)00011100
D)00011000
(39)以下叙述中错误的是
A)C语言中对二进制文件的访问速度比文本文件快
B)C语言中,随机文件以二进制代码形式存储数据
C)语句"FILEfp;"定义了一个名为fp的文件指针
D)C语言中文本文件以ASCII码形式存储数据
(40)若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为
A)0B)1C)-1D)一个非0值
二、填空题
请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。
(1)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是【1】。
(2)在最坏情况下,堆排序需要比较的次数为【2】。
(3)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是【3】。
(4)从工程管理角度,软件设计一般分为两步完成,它们是【4】。
(5)用二维表的形式来表示实体之间联系的数据模型叫做【5】。
(6)以下程序运行后的输出结果是___【6】___。
main()
{intp=30;
printf("%d\n",(p/3>0?
p/10:
p%3));
}
(7)以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。
例如,输入字符串:
abc123edf456gh,执行程序后输出:
123456。
请填空。
#include
#include
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!
='\0';i++)
if(【7】){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
}
(8)以下程序运行后的输出结果是【8】。
main()
{inta,b,c;
a=10;b=20;c=(a%b<1)||(a/b>1);
printf("%d%d%d\n",a,b,c);
}
(9)以下程序运行后的输出结果是【9】。
main()
{inti,n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{n[i]=n[i-1]*2+1;
printf("%d",n[i]);
}
}
(10)以下程序运行后的输出结果是【10】。
(注:
如果结果中含有回车,可加一空格写在一行,例如:
111
111
111可以写成111111111)
main()
{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)a[j][i]=0;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)printf("%d",a[i][j]);
printf("\n");
}
}
(11)以下程序运行后的输出结果是【11】。
#include
main()
{charch[]="abc",x[3][4];inti;
for(i=0;i<3;i++)strcpy(x[i],ch);
for(i=0;i<3;i++)printf("%s",&x[i][i]);
printf("\n");
}
(12)请在以下程序第一行的下划线处填写适当内容,使程序能正常运行。
【12】(double,double);
main()
{doublex,y;
scanf("%1f%1f",&x,&y);
printf(%1f\n",max(x,y));
}
doublemax(doublea,doubleb)
{return(a>b?
a:
b);}
(13)以下程序的功能是调用函数fun计算:
m=1-2+3-4+…+9-10,并输出结果。
请填空。
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
{m+=i*f;
f=【13】;
}
returnm;
}
main(){printf("m=%d\n",_【14】);}
(14)已有定义如下:
structnode
{intdata;
structnode*next;
}*p;
以下语句调用malloc函数,使指针p指向一个具有structnode类型的动态存储空间。
请填空。
p=(structnode*)malloc(___【15】___);
一、选择题
(1)A
【解析】根据数据结构中各数据元素之间前后间关系的复杂程度,一般将数据结构分为两大类型:
线性结构与非线性结构。
如果一个非空的数据结构满足下列两个条件:
(1)有且只有一个根结点;
(2)每一个结点最多有一个前件,也最多有一个后件。
则称该数据结构为线性结构,又称线性表。
所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。
(2)D
【解析】一个算法的空间复杂度,一般是指执行这个算法所需的内存空间。
一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。
(3)B
【解析】软件设计包括软件结构设计、数据设计、接口设计和过程设计。
其中结构设计是定义软件系统各主要部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程描述。
(4)B
【解析】由程序调试的概念可知:
程序调试活动由两部分组成,其一,根据错误的迹象确定程序中错误的确切性质、原因和位置;其二,对程序进行修改,排除这个错误。
所以程序调试的目的就是诊断和改正程序中的错误。
(5)B
【解析】软件需求分析阶段的工作,可以概括为四个方面:
需求获取、需求分析、编写需求规格说明书和需求评审。
需求获取的目的是确定对目标系统的各方面需求。
涉及到的主要任务是建立获取用户需求的方法框架,并支持和监控需求获取的过程。
需求分析是对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型。
编写需求规格说明书作为需求分析的阶段成果,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。
需求评审是对需求分析阶段的工作进行复审,验证需求文档的一致性、可行性、完整性和有效性。
(6)B
【解析】程序流程图(PFD)是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图,其箭头代表的是控制流。
(7)A
【解析】由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。
数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。
所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值,而数据的不一致性指的是同一个数据在系统的不同副本处有不同的值。
(8)B
【解析】关系是由若干个不同的元组所组成,因此关系可视为元组的集合,将E-R图转换到关系模式时,实体与联系都可以表示成关系。
(9)B
【解析】查询过程的查询表达式用到的关系运算有:
选择、投影、连接。
选择:
从关系模式中找出满足给定条件的元组的操作称为选择。
投影:
从关系模式中指定若干个属性组成新的关系称为投影。
连接:
将两个关系模式拼接成一个更宽的关系模式,生成的新关系中包含满足条件的元组。
(10)B
【解析】从图中可以看出,关系T是关系R和关系S的简单合并,而合并的符号为∪,所以答案为T=R∪S。
(11)A
【解析】本题考查的是C语言的函数。
在C语言中,所有的函数定义,包括主函数main在内,都是平行的。
也