软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷11
-
阅读下列程序说明和程序段,将应填人(n)处的字句写在对应栏内。
[说明]
下面是一个Applet程序,其功能是有2个按钮,分别为First和Second,以及一个Label控件。要求点击First时则能在Label中显示出Command:First,而点击Second时则能显示出 Command: Second,要求只能使用重载一次actionPerfonned()方法。
程序运行结果如图6所示。
import java. awt.*;
import java. awt. event. *;
import java. applet. *;
/*
< applet cede = exl_7, class width = 800 height = 400 >
</applet >
*/
public class ex]_? extends Applet implements ActionListener {
private String str = "ok";
private Label |;
private Button btn;
public void init( ) {
(1)
I = new Label(str);
I. reshape(10, 10, 150, 30);
add(I);
(2)
btn. reshape(10, 50, 60, 20);
(3)
add(btn);
btn = new Button(" Second" );
btn. reshape(10, 100, 60, 20);
(4)
btn, addActionListener(this);
add(btn);
}
public void actionPerformed(ActionEvent ae) {
str = " Command:" +ae. getActionCommand( )
(5)
ex1_7, html
< HTML >
< HEAD >
< TITLE > ext _7 </TITLE >
</HEAD >
< BODY >
< appletcode =" ext?. class" width =800 height =400 >
</applet >
</BODY >
</HTML >
-
阅读下列程序说明和C++代码,将应填入(n)处的字句写在对应栏内。
[说明]
①定义私有数据成员code、english分别用于表示考生的编号、英语成绩,它们都是int型的数据。
②完成成员函数void Student::inputinformation()的定义,该函数用于用户输入一个考生对象的信息,输入格式如下:
输入编号:
英语成绩:
计算机成绩:
③利用已实现的类Student的成员函数,完成函数void firstname(Student *A[],int uum)的定义,该函数根据考生信息A[],输出num个考生中总分最高者的编号及其相应的总分,在此不考虑总分相同的情况。
源程序文件test1.cpp清单如下:
#include < iostream. h >
class Student
(1)
int computer;
int total;
public
void getinformation( );
void computesum( );
int getcode( );
int gettotalscore( );
~Student( );
};
void Student: :getinformation( )
{
(2)
cout <<"英语成绩:";
cin> >english;
cout <<"计算机成绩:";
cin > > computer;
void Student:: computesum ( )
total = english + computer;
cout <<"编号" << code <<"总分:" <<total << endl;
int Student::getcode( )
return code;
}
int Student:: gettotalscore ( )
{
return total;
}
void firstname(Student * A[] ,int num)
{
(3)
tempsum = ( * A[0] ). gettotalscore( );
for( int i=1; i <num; i++)
{
if ( ( ( * A[i] ). gettotalscore( ) ) > tempsum)
{
tempcode = ( * A[i] ). getcode( );
tempsum = ( * A[i] ). gettotalscore( );
}
}
cout <<"总分最高者--" << tempcode <<":" << tempsum <<endl;
}
void main( )
{
Student * A[3];
int i,n =3
for(i=0;i<n;i ++)
A[i] = new Student;
A[i] -> getinformation( )
for(i=0;i<n;i ++)
{
A[i] -> computesum( )
firstname ( A,3 );
}
-
请补充函数fun(),该函数可以统计一个长度为n的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd ascasdfg asd as asd mlosd,子字符串为asd,则应输出4。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填人所编写的若干表达式或语句。
试题程序:
#include < stdio. h >
#include < string. h >
#include < conio. h >
int fun(char * str,char * substr)
{
int n;
char *p,*r;
(1);
while( * str)
{
p = str;
r = substr
while( * r)
if((2))
{
r++;
p++;
{
else
break;
if((3))
n++;
str ++;
}
return n;
}
main( )
{
char str[81],substr[3];
int n;
clrscr ( );
printf("输入主字符串:');
gets(str);
printf('输入子字符串:" );
gets( substr );
puts(str);
puts(substr);
n = fun(str,substr);
printf("n=%d\n",n)
}
-
阅读下列程序说明和C代码,将应填人(n)处的字句写在对应栏内。
[程序5说明]
下列文法可用来描述化学分子式的书写规则(例如,A12(CO3)3”Cu(OH)2):
λ→β\βλ
β→δ\δn
δ→ξ\ξθ\(λ)
其中:λ是—个分子式;δ或是一个元素,或是一个带括号的(子)分子式,元素或是一个大写字母(记为ξ),或是一个大写字母和一个小写字母(记为ξθ)β或是一个δ,或是在δ之后接上一个整数n,δn表示β有n个δ的元素或(子)分子式。—个完整的分子式由若干个β组成。
当然一个正确的分子式除符合上述文法规则外,还应满足分子式本身的语义要求。
下面的程序输入分子式,按上述文法分析分子式,并计算出该分子式的分子量。例如:元素H的原子量是1,元素O的原子量是16。输入分子式H2O,程序计算出它的分子量为18 (1×2+16)。程序中各元素的名及它的原子量从文件atom.dat中读入。
[程序5]
#include < stdio. h >
#include < string. h >
#define MAXN 300
#define GMLEN 30
struct elem { char name[ ]; /* 元素名*/
double v;/*原子量*/
} nTbl [MAXN];
char cmStr [GMLEN], * pos;
int c;FILE * fp;
double factor( );
double atom( ) /* 处理文法符号δ*/
{char w [3];int i; double num;
while((c = * pos++) =='||c =='\t'); /*略过空白字符*/
if(c == '\n') return 0.0;
if(c>='A' && C <='Z') {/*将元素名存入W */
w[i =0]=c;c= * pos ++
if(c >='a'&& c <='z')w[ ++i] =c;else pos--;
w[ ++i] ='\0',
for(i =0;nTbl [i]. v >0.0;i ++)
if(strcmp (w,nTbl[i]. name) ==0) return nTbl [i]. v;
printf (" \n元素表中没有所输入的无素: \t%s\n',w); retur n - 1.0;
} elseif (c = ='(') {
if((num=(1)) <0.0)return -l.0; /*包括可能为空的情况*/
if( * pos ++ ! = ')') { printf (" 分子式中括号不匹配!/n") ;return - 1.0; }
return num;
}
printf ("分子式中存在非法字符:\t%c\n" ,c);
return - 1.0;
}
double mAtom( ) /* 处理文法符号β*/
{ double num ;int n = ];
if((num=(2)) <0.0)return-l.0;
c= *pos++;
if(c >='O'&&c <='9') {
n = 0; while(c > = 0&&c < ='9')
{n=(3);
c= *poss ++;
}
}
pos --;
return num * n;
}
double factor( ) /*处理文法符号λ*/
{ double num =0.0,d;
if(( hum = mAtom ( )) < 0.0) return - 1.0;
while( * pos >= 'A'&& * pos <= 'Z'||* pos == '(') {
if((d=(4)) <0.0)return-1.0;
(5);
} return num;
void main( )
{ char fname[ ] ="atom. dst"; /*元素名及其原子量文件*/
int i;double num;
if((fp=fopon(fname,"r" )) == NULL) { /*以读方式打开正文文件*/
prinff("Can net open%s file. \n' ,fname) ;return /*程序非正常结束 */
i=0;
while(i < MAXN&&fscanf (fp," %s%lf,bTbl[i]. name,&nTbl[i]. v) ==2)
i++;
fclose(fp) ;nTbl[i]. v =-1.0;
while(1) [/*输入分子式和计算分子量循环,直至输入空行结束*/
printf(" \n 输入分子式! (空行结束) \n" ) ;gets(cmStr);
pos = cmStr;
if(cmStr[0] == '\0') break;
if( (num = later( ) ) > 0.0)
if( * pos! = '\0')printf("分子式不完整! \n" );
else printf("分子式的分子量为%f\n",num);
}
-
对于教学数据库的三个基本表S(S#,SNAME,AGE,SEX),SLLS#,C#,GRADE),C(C#, CNAME,TEACHER)。现根据查询条件填充下面SQL语句空白的部分。
1.检索LIU老师所授课程的课程号和课程名。
2.检索至少选修LIU老师所授课程中一门课程的女学生姓名。
3.检索WANG同学不学的课程的课程名。
4.检索全部学生都选修的课程的课程号与课程名。
5.检索选修课程包含LIU老师所授课程的学生学号。
[说明]
1.SELECT (1) FROM C WHERE TEACHER='LIU'
2. SELECT S. SNAME FROM S,SC
WHERE S.S#=SC.S#AND S. SEX='F'AND SC.C#=(2)
(SELECTC# FROM C WHERE TEACHER = 'LIU')
3. SELECT CNAME FROM C
wHEREc#< >(3) (SELECTSC. C# FROM S,SCWHERE S.S#=SC.S#AND S. SNAME=' WANG')
4. 由题知,该问题是在表C中找课程号和课程名,要求这门课被全部学生所选。
SELECT C#,CNAME
FROM C
WHERE NOT EXISTS
(SELECT *
FRoM S
WHERE NOT EXISTS
(SELECT *
FROM S
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE (4)
5. SELECT DISTINCT S#
FROM SC
WHERE (5)
(SELECT C#
FROM C
WHERE TEACHER = 'LIU'
-
说明输入串(a,a)#是否为G的句子。
-
经改写后的文法是否是LL(1)的?指出它的预测分析表中(1)~(3)处的内容。
-
对文法C[S]:S→a,|∧|(T);T→T,S|S;回答问题1~问题3。
对文法G进行改写,然后对每个非终结符写出不带回溯的递归于程序。
-
如果限制该算法最多输出K个可供选择的房间号,则在流程图1的。所指的判断框应改成什么处理?
-
如果等级为r的房间每人每天的住宿费为RATE(r),RATE为数组。为使该算法在输出每个候选的房间号RM(J)后,再输出这批散客每天所需的总住宿费DAYRENT(J),流程图1的p所指框中的最后处应增加什么处理?
-
阅读下列算法说明和流程图1,回答问题1至问题3。
[算法说明]
某旅馆共有N间客房。每间客房的房间号、房间等级、床位数以及占用状态分别存放在数组ROOM、RANK、NBED和STATUS中。房间等级值为1、2或3。房间的状态值为0(空闲)或1(占用)。客房是以房间(不是床位)为单位出租的。
本算法根据几个散客的要求预订一间空房。程序的输人为:人数M,房间等级要求R(R =0表示任意等级都可以)。程序的输出为:所有可供选择的房间号。
流程图1描述了该算法。
假设当前该旅馆各个房间的情况见表3。
当输入M=4,R=0时,该算法的输出是什么?