软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷5
-
阅读以下说明和Java 码,将应填入(n)处的字名写在的对应栏内。
[说明] 打印输出10行杨晖三角形。形式如下:
杨晖三角形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
class yanghui
{
public static void main (String args [] )
{
int i, j;
(1)
int yanghui [] [];
System. out. println( “杨晖三角形:” );
yanghui = new int [ yhleve1] [];
for(i =0;i < yanghui, length; i + + )
yanghui[i] = new int [i + 1];
(2)
for((3))
{
yanghui [i] [0] = 1;
for(j = 1 ;j < yanghui[i], length - 1 ;j + + )
yanghui[i] [j] = yanghui[i - 1] [j - 1] + yanghui[i - 1] [j];
yanghui[i] [yanghui[i]. length - 1 ] = 1;
}
for ( i=0; i < yanghui. length; i + + )
{
for(j =0;j < yanghui[i]. length; j + + )
(4)
System. out. println( );
}
}
}
-
阅读以下说明和Visual Basic 码,将应填入(n)处的字名写在的对应栏内
[说明] 编写一工资调整程序。若基本工资大于等于800元,工资增加20%,若小于800元大于 600元,则工资增加15%,若小于600元则工资增加10%。要求在文本框Text1 中增加某职工的基本工资,单击“计算”按钮,在标签框Label1中输出增加后的工资。
Private Sub Command1_ Click( )
Dim x As Integer, y As Single
(1)
Select Case x
Case Is > = 800
y=x*1.2
Case Is > = 600
y=x, 1.5
(2)
y=x*1.1
(3)
Label1. Caption = y
(4)
Private Sub Command2_ Click()
Unload Me
End Sub
-
从下列的3道式题(试题五至试题七)中任选1道解答。
如果解答的试题数超过1道,则题号小的1道解答有效。
阅读以下说明和C++码,将应填入(n)处的字名写在的对应栏内。
[说明] 利用c++的各种控制语句编写一个万年历程序,要求:显示任何年份的日历,日历以月份顺序排列,每月以星期顺序排列,类似于一般挂历上的格式。本程序包含如下两个函数:Leap ()用于判定指定的年份是闰年,Week ()用于计算year年份的1月1日是星期几,其判定规则为:
(1) 如果year 年份为1994年,则为星期六。
(2) 如果year 年份大于1994年,则星期值weekno 按下列公式计算:
differ=(year-1994)*(365%6)+(year-1993)/4-(year-2001)/100+(year-2001)/400 date=6+differ%7
weekno=(date6)? date-7:date
(3) 如果year 年份小于1994年,则星期值weekno 按下列公式计算:
differ=(1994-year)*(365%7)+(1996-year)/4-(2001-year)/100+(2000-year)/400 weekno=6-dder%7
# include "iostream. h"
# include "iomanip. h"
int leap(int n)
{
if( (1) )
return 0
else
return 1;
}
int week( int year )
{
int a1, differ, date, weekno;
if (year = = 1994)
a1 =0;
else if (year > 1994)
a1=1;
else a1= -1;
switch(a1)
{
case 0: return 6; break;
case 1:
{
(2)
date = 6 + differ% 7; weekno = ( date > 6) ? date - 7 date;
}
return weekno; break;
case - 1:
{
differ = ( 1994 - year) * (365%7) + (1996 - year)/4 - (2001 - year)/100 + (2000 - year)/400;
weekno =6-differ%7; } return weekno; break;
}
}
void main( )
}
int i,year,m2,n,j;
cout < < “Please input 某年数:”;
cin> >year;
if ( ! leap(year) )
(3);
else
m2 =28;
int month [12]: {31 ,m2,31,30,31,30,31,31,30,31,30,31 };
(4)
for ( i=0; i<12; i+ + )
{
cout< < < <end1< <setw(4*n) < <";
for(j=1 ;j< =month [i] ;j+ +)
{
cout< <setw(4) < <j;
n+ +;
if(n> =7)
{
(5)
cout < < end1;
}
}
}
}
-
【程序说明】
定义一个多边形结构:struct polygon实现以下内容:(1)建立该结构的链表:create函数是创建链表,每输入一个结点的数据,就把该结点加入到链表当中,它返回创建的链表的头指针。(2)显示链表的各个结点数据:结点数据包括:多边形顶点数、各顶点的纵横坐标、当多边形顶点数为0时,链表创建结束。(3)编写一个函数disp,删除链表中的所有结点。需要注意的是:要先释放结点数据内存,再删除结点,如果在释放结点数据内存单元之前删除结点,则无法找到结点数据内存单元的地址,也就无法释放数据的内存单元。
【程序】
#include "iostxeam. h"
#include "iomanip. h"
stmct polygon
{
int n;
int *x;
int *y;
polygon *next;
};
void Push(polygon*& head, int n)
{
polygon* newNode = new polygon;
newNode = new polygon;
newNode->next=(1);
newNode->x = new int[n];
newNode->y = new int[n];
newNode->n=(2);
for(int i=0; i<=(3); i++) {
cout<<"请输入多边形各顶点x、y坐标, 坐标值之间用空格分隔: ";
cin>>newNode->x[i]>>newNode->y[i];
}
(4)= head; //在head前不需要额外的*
head = newNode;
}
polygon *create()
{
polygon* head = NULL;
polygon* tail;
int n;
cout<<"请输入多边形顶点的个数(顶点个数为0时结束): ";
cin>>n;
if(n==O) return (5);
Push(head,(6));
tail = head;
cout<<"请输入多边形顶点的个数(顶点个数为0时结束): ";
cin>>n;
while(n!=0)
{
Push(tail->next,(7)); // 在tail->next增加结点
tail = tail->next; //advance tail to point to last node
cout<<"请输入多边形顶点的个数(顶点个数为0时结束): ";
cin>>n;
}
remm head;
}
void disp(polygon *head)
{
inti, No=l;
eout<<setw( 10)<<"x"<<setw(6)<<"y"<<endl;
while(head !=NULL)
{
cout<<"第"<<No<<"结点: "<<endl;
for(i=0;i<=head->n-1;i++)
cout<<setw(10)<<head->x [i] <<setw(6)<<head->y[i]<<endl;
(8);
he ad=(9);
}//Match while statement
}
void del(polygon *head)
{
polygon *p;
while(head!=NIILL
{
p=(10);
head=head->next;
delete p->x;
delete p->y;
delete p;
}//Match while statement
void main()
{
polygon *head;
head=create();
disp(head);
del(head);
}
-
指出UML中全局、局部、参数、自我、投票、广播、创建、注销和临时9个约束对于链接角色、消息和对象的作用。
-
图1-7采用协作图描述借书和还书两个动态过程的交互关系。在UML中,重复度(multiplicity)定义了某个实体的一个实例可以与另一个类的多个实例相关联。指出图1-7中(5)、(6)处的重复度分别是多少?
-
假设这个银行有若干个节点,每个节点运行一个数据库系统。假设这些节点之间惟一的交互式用电子方式相互传送款项,这样的系统是分布式数据库系统吗?为什么?
-
阅读下列说明、流程图和算法,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
下面的流程图1—5用N-S盒图形式描述了数组A中的元素被划分的过程。其划分方法是:以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,而大于基准数的元素向高下标端移动。当划分结束时,基准数定位于A[i],并且数组中下标小于i的元素的值均小于基准数,下标大于i的元素的值均大于基准数。设数组A的下界为low,上界为high,数组中的元素互不相同。例如,对数组(4,2,8,3,6),以4为基准数的划分过程如下:
【算法说明】
将上述划分的思想进一步用于被划分出的数组的两部分,就可以对整个数组实现递增排序。设函数血p(int A[],int low,int high)实现了上述流程图的划分过程并返回基准数在数组A中的下标。递归函数void sort(int A[],iht L;int H)的功能是实现数组A中元素的递增排序。
【算法】
void sort(int A[],int1,int H) {
if (L<H) {
k=p(A, L, R): //p()返回基准数在数组A中的下标
sort((4)); //小于基准数的元素排序
sort((5)); //大于基准数的元素排序
}
}
-
【说明】
一个图书馆信息管理系统的分析与建模。下面是某图书馆的有关介绍。
图书馆雇有若干管理员,各自具有编码、姓名等属性。管理员可上岗,也可下岗。
图书馆中备有若干图书,每本图书有书号、书名、出版社、价格等属性。图书馆不定期地购买并注册新图书供读者借阅,也可将报废的旧书注销以停止借阅。
图书馆可为众多读者提供服务。每个读者在借阅之前需注册姓名、性别、地址、Email等内容。读者可在终端上查询。每个读者最多可同时借阅5本书。每本图书借期为30天;若有一本书超期,则不可再借其他图书。一本书超期一天罚款0.1元。若一本书超期3个月不归还,则发布通告。若读者的图书丢失,在罚款处理之前不能借书,每本报失的图书罚款该书价的2倍。注册新读者不受限制;在注销读者之前,该读者必须归还所有借阅的图书,或者报失并接受罚款。
在需求分析阶段,采用UML的用例图描述系统功能需求,如图1-6所示。指出图1-6中(1)(2)、(3)、(4)分别是哪个用例?
-
【说明】
设有关于银行借贷管理系统的E-R图。图中矩形表示实体,圆表示属性,双圆表示关键字属性,菱形表示实体间的联系。为了答题的方便,图中的实体和属性同时给出了中英文说明,回答问题时只需写出英文名即可。
根据E-R图中给出的词汇,按照“有关模式名(属性1,属性2,…)”的格式,将此E-R图转换为关系模式,并指出每个关系模式中的主码和外码,其中模式名根据需要取实体名或联系名。要求其中的关系模式至少属于第三范式。
-
如下的SQL语言用于查询“在该银行中一笔贷款贷给多个(至少2个)客户的所有贷款号和发放贷款的支行名称”的不完整语句,请在空缺处填A.正确的内容。
SELECT Borrow. Lno, Bname
FROM Borrow, Loan
WHERE(1)
GROUP BY Borrow. Lno
HAVING(2)
-
根据系统功能和数据流图填充下列数据字典条目中的(1)和(2):
试题得分表二准考证号+{课程名+成绩}
考生名册=报名号+准考证号+姓名+通信地址+出生年份+文化程度+职业
考生通知单=(1)
报名表=(2)
-
数据流图1—3中缺少3条数据流,请直接在图中添加。
-
【说明】
某考务处理系统主要功能是考生管理和成绩管理:
1.对考生送来的报名表进行检查。
2.对合格的报名表编好准考证号码后将准考证送给考生,将汇总后的考生名单送给阅卷站。
3.对阅卷站送来的成绩表进行检查,并根据指定的合格标准审定合格者。
4.填写考生通知单(内容包含该考生的准考证号、姓名、各课程成绩及最终合格/不合格标志),送给考生。
5.根据考生信息及考试成绩,按地区、年龄、文化程度和职业进行成绩分类统计及试题难度分析,产生统计分析表。
考务处理系统的顶层图如图1-1所示,第0层图如图1—2所示,加工2子图如图1-3所示。
指出哪张图的哪些文件可以不必画出。