问答题(5)
问答题[说明]
下面的程序利用递归算法计算x和y的最大公约数。
[函数2.1]
main ( )
{ int x,y,k,t;
scanf(" % d% d" ,
if(x>y) { t=x;x=y; y=t;}
{{U}} (1) {{/U}};
while(k! =0){
y=x;
{{U}}(2) {{/U}};
k=y%x;
}
prinff( "% d" ,x); }
[函数2.2说明]
函数fun(char *str,char *substr的功能是计算子串sugbstr在串str中出现的次数。
[函数2.2]
fun(ehar * str, char * substr)
{ int x,y,z;
{{U}}(3) {{/U}};
for(x=0;str[ x] ! = '/O';x + + )
for(y=x,z=0;sabstr[z] = =str[y];{{U}} (4) {{/U}},y+ +)
if( (5) = ='/0') {
num + +;
break;
}
return(num);
}
问答题[说明]
本程序中预设了若干个用户名和口令。用户输入正确的用户名后,可以查找对应的口令,一旦输入结束标记“end”,程序结束。
[C++程序]
#include <iostream. h>
#include <string. h>
class User
{ protected:
char user[10];
char pass[7];
public:
User(char[ ],char[]);
{{U}}(1) {{/U}}{return user;}
{{U}}(2) {{/U}}{return pass;}
};
User::User(char u[],char p[])
{ strcpy(user,u);
strcpy(pass,p); }
void main()
{ User ua[]={User("Li","123456"),User("wang","654321"),User("Song","666666")
char name[10];
while(1)
cout< < "输入用户名:";
cin> >name;
if({{U}} (3) {{/U}}= =0) break;
for(int i=0;i<3;i+ +)
if(strcmp(name,ua[i].getuser()) = =0){
cout< <"密码:" < < ua[i].getpass() < <endl;
{{U}}(4) {{/U}};
if({{U}} (5) {{/U}})cout< <"该用户不存在!" < <endl;
}
}
问答题[函数2.1说明] 下面程序的功能是:将由键盘输入的某个十进制数转换成对应的R进制数并输出。这里R是 2到16的整数,由键盘输入。例如,输入n=128,base=13后的输出为9B。[函数2.1]#include <stdio.h>main() char b[16]='0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'; int c[64],n,i=0,base; printf("Enter a number:");scaaf("%d", printf("Enter new base:");scanf("%d", doc[i]= (1) ; i++; n=n/base; while( (2) ); printf("Transmit new base:"); for(- -i;i>=0;- -i)printf("%c", (3) );[函数2.2说明] 所谓回文字符中是指正序和逆序拼写相同的字符串,例如astrtsa,adgdtdgda等。下面函数int fun(char *str)的功能是判断字符串str是否是回文,当字符串是回文时,函数返回1,否则返回0。[函数2.2]int fun(char *str) int i,j,l; for(i=0;str[i]! ='/0';i++); l=i/2; for(j=0,i- -;j<=1; (4) ) if( (5) ) return 0; return 1;
问答题【说明】
给定函数fun的功能是:将从键盘上输入的每个单词的第一个字母转换为大写字母,输入时各单词必须用空格隔开,用“.”结束输入。
【函数】
int fun(char *c,int status)
{
if({{U}} (1) {{/U}}=='')
return 1;
else
{
if({{U}} (2) {{/U}}
return 0;
}
}
main()
{
int flag=1;
char ch;
printf("请输入一字符串,用点号结束输入!/n");
do {
ch=getchar();
flag=fun(
putchar(ch);
}while(ch!='.');
printf("/n");
}
问答题[说明]下面的流程图描述了计算自然数1到N(N≥1)之和的过程。[流程图][问题1]将流程图中的(1)~(3)处补充完整。[问题2]为使流程图能计算并输出1*3+2*4+…+N*(N+2)的值,A框内应填写(4);为使流程图能计算并输出不大于N的全体奇数之和,B框内应填写(5)。
问答题【说明】主窗口有一个按钮、一个文本框和一个复选框,初始时窗口大小不能调整,选中复选框后窗口大小可以调整,如果撤销复选框的选择,则窗口的大小又不能调整,如下图所示。【Java代码】importjava.awt.*;importjava.awt.event.*;classMyFrameextendsFrameimplementsItemListener,ActionListenerCheckboxbox;TextAreatext;Buttonbutton;MyFrame((1))super(s);box=newCheckbox("设置窗口是否可调整大小");text=newTextArea(12,12);button=(2)("关闭窗口");button.addActionListener(this);box.addltemListener(this);setBounds(100,100,200,300);setVisible(true);add(text,BorderLayout.CENTER);add(box,BorderLayout.SOUTH);add(button,BorderLayout.NORTH);setResizable((3));validate();publicvoiditemStateChanged(ItemEvente)if(box.getState()==true)setResizable(true);elsesetResizable(false);publicvoidactionPerformed(ActionEvente)(4);classsimplepublicstaticvoidmain(Stringargs[])(5)("simple");
问答题[说明] 本程序的功能是给公司的员工Tom,Jack,Green增加薪水。三人的职位分别是programmer, Manager,CEO。 程序由6个类组成:WorkerTest是主类,programmer,Manager,CEO三个类,薪水增加的规则是 programmer的涨幅是5%;Manager的是10%;CEO也是Manager,但是它除了有Manager的涨幅,还有1000元的bonus。接口SalaryRaise提供了一个增加薪水的方法raise()。[java程序] public class WorkerTest public WorkerTest( ) public static void main( String[] args) Programmer programmer = new Programmer( "Tom" ,3000); Manager manager = new Manager( "Jack" ,4000); CEO ceo = new CEO( "Green" ,4000); Worker [] worker = new Worker[3]; programmer, raise( ); manager, raise( ); ceo. raise( ); worker[0] = programmer; worker [1] = manager; worker[2] = ceo; for ( int i = 0 ;i < worker, length; i + + ) System. out. prinfln (" Name:" + worker [i]. getName ( ) +" / tSalary:" + worker [i]. getSalary ());public interface SalaryRaise void raise( ); public class Worker public String name; public double (1) ; public Worker( ) public String getName( ) return name; public void setName( String name) this. name = name; public double getSalary( ) return salary; public void setSalary(double salary) this. salary = salary; public class Programmer extends Worker implements (2) public Programmer( ) public void raise( ) double pets=0.05; double sala = this. getSalary( ) * (1 + pers); this. setSalary (sala); public Programmer( Siring name, double salary) t this. name = name; this. salary = salary;public class Manager extends (3) implements SalaryRaise public Manager( ) public Manager(String name, double salary) this. name = name; this. salary = salary; public void raise( ) double pets = 0.1; double sala = this. getSalary() * (1 + pers); this. setSalary(sala); public class CEO extends Manager implements SalaryRaise public CEO() public CEO( String name,double salary) this. name = name; this. salary = salary; public void raise( ) double bonus = 1000; (4) ; double sala = this. getSalary( ); (5) ; this. setSalary(sala);
问答题阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]函数GetListElemPtr(LinkListL,inti)的功能是查找含头结点单链表的第i个元素。若找到,则返回指向该结点的指针,否则返回空指针。函数DelListElem(LinkListL,inti,ElemType*e)的功能是删除含头结点单链表的第i个元素结点,若成功则返回SUCCESS,并由参数e带回被删除元素的值,否则返回ERROR。例如,某含头结点单链表L如下图(a)所示,删除第3个元素结点后的单链表如下图(b)所示。#defineSUCCESS0#defineERROR-1typedefintStatus;typedefintElemType;链表的结点类型定义如下:typedefstructNode{ElemTypedata;structNode*next;}Node,*LinkList;[C代码]LinkListGetListElemPtr(LinkListL,inti){/*L是含头结点的单链表的头指针,在该单链表中查找第i个元素结点;若找到,则返回该元素结点的指针,否则返回NULL*/LinkListp;intk;/*用于元素结点计数*/if(i<1||!L||!L->next)returnNULL;k=1;p=L->next;/*令p指向第1个元素所在结点*/while(p++k;}returnp;}StatusDelListElem(LinkListL,inti,ElemType*e){/*在含头结点的单链表L中,删除第i个元素,并由e带回其值*/LinkListp,q;/*令P指向第i个元素的前驱结点*/if(i==1)______;elsep=GetListElemPtr(L,i-1);if(!P||!p->next)returnERROR;/*不存在第i个元素*/q=______;/*令q指向待删除的结点*/p->next=q->next;//从链表中删除结点*/______;/*通过参数e带回被删除结点的数据*/free(q);returnSUCCESS;}
问答题【说明】设学生(学生数少于50人)某次考试的成绩按学号顺序逐行存放于某文件中,文件以单行句点“.”为结束符。下面的流程图用于读取该文件,并把全部成绩从高到低排序到数组B[50]中。【流程图】
问答题【说明】本应用程序的运行窗口如图2所示。只要用户单击“闪烁”按钮,文字“欢迎光临”就会以0.3秒消失、0.3秒显示反复进行闪烁;单击“停止”按钮时,闪烁停止,恢复图示的初态。在开发过程中,需要设置的属性如表1所示。表1属性设置对象对象名属性名属性值窗体FrmlCaption闪烁显示演示标签LabelCaption欢迎光临命令按钮CmdFCaption闪烁命令按钮CmdTCaption停止定时器TimerlEnabled (1) Interval (2) 在开发过程中,需要编写的程序代码如下:【程序】PrivateSubCmdF_Click()Timerl.(3)=TrueLabel.Visible=FalseEndSubPrivateSubTimerl_Timer()(4)=notLabel.VisibleEndSubPrivateSubCmdT_Click()Timer].Enabled=(5)LabelVisible=trueEndSub
问答题【说明】
下面是一个Applet程序,其功能是输出已定义好的两个变量x和chr。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。
注意:不改动程序的结构,不得增行或删行。
import java. awt.*;
{{U}} (1) {{/U}}
{{U}} (2) {{/U}}
{
int x=10;
{{U}} (3) {{/U}}
Label output1;
Label output2;
{{U}} (4) {{/U}}
}
output1 = new Label("定义int类型变量"+"x,的初值为"+x);
output2 = new Label("定义char类型变量"+"chr,的初值为"+chr);
add(output1);
add(output2);
}
}
<HTML>
<HEAD>
<TITLE> ex34_3 </TITLE>
</HEAD>
<BODY>
{{U}} (5) {{/U}}
width=400 height=400>
</applet>
</BODY>
</HTML>
问答题试题二(共15分)阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。[说明]如果矩阵A中的元素A[i,j]满足条件:A[i,j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。一个矩阵可能存在多个马鞍点,也可能不存在马鞍点。下面的函数求解并输出一个矩阵中的所有马鞍点,最后返回该矩阵中马鞍点的个数。[C函数]
问答题(5)
问答题【说明】请完成下列Java程序。程序的执行结果是生成一个具有一个TextField类型的对象in、Button类型的对象btn和Label类型的对象out图形用户界面,程序的功能是计算用户输入数的平方,如图3所示。注意:请勿改动main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。【程序】importjava.awt.*;importjava,awt.event.*;publicclasssquare{publicstaticvoidmain(Stringargs[]){{{U}}(1){{/U}}}}classAppFrameextendsFrame{TheAdapterTestlistener=newTheAdapterTest();TextFieldin=newTextField(5);Buttonbtn=newButton("计算");Labelout=newLabel("用于显示计算结果");publicAppFrame(){setLayout(newFlowLayout());add(in);add(btn)add(out);btn.addActionListener(newBtnActionAdapter());addWindowListener(listener);setSize(400,100);show();}classBtnActionAdapterimplements{{U}}(2){{/U}}{publicvoidactionPerformed({{U}}(3){{/U}}){Strings=in.getText();doubled={{U}}(4){{/U}}doublesq=d*d;out.setText(d+"的平方是:"+sq);}}classTheAdapterTestextendsWindowAdapter{publicvoidwindowCIosing({{U}}(5){{/U}}){System.exit(1)}}}
问答题【函数2.1说明】
函数palindrome(char s[])的功能是,判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。
【函数2.1】
int palindrome( char s[ ] )
{ char * pi, * pj;
pi=s; pj=s+strlen(s)-1;
while( pi<pjpj --
}
if({{U}} (2) {{/U}})return -1;
else return 0;
}
【函数2.2说明】
函数f(char * str,char del)的功能是:将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。
例如若str的值为“33123333435”,del的值为“3”,调用此函数后,将输出3个子字符串,分别为“12”、“4”和“5”。
【函数2.2】
void f( char * str, char del)
{ int i ,j ,len;
len = strlen (str)
i=0;
while(i < len) {
while({{U}} (3) {{/U}})i++; /*忽略连续的标志字符*/
/*寻找从str[i]开始直到标志字符出现的一个子字符串*/
j=i+1;
while(str[j] != del /*给找到的字符序列置字符串结束标志*/
printf("%s/t",
{{U}}(5) {{/U}};
}
}
问答题【说明】
编写程序,对于从键盘输入的3个实数a、b、c,计算实系数一元二次方程的根并输出所求的根。
【函数】
#include<sldio.h>
#include<sldlib.h>
#include<math.h>
Main()
{
float a,b,c,delta,x1,x2;
printf("Enter a,b,c");
scanf("%f%f%f",
if({{U}} (1) {{/U}})
if({{U}} (2) {{/U}})
printf("Input error!/n");
else
printf("The single root is%f/n",{{U}} (3) {{/U}});
else
{
delta=b*b-4*a*c;
if({{U}} (4) {{/U}})
{
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
printf("x1=%8.2f/nx2=%8.2f/n",x1,x2,);
}
else if(delta==0)
printf("x1=x2=%8.2f/n",{{U}} (5) {{/U}};
else
{
Printf("z2=%8.2f+%8.2f*i/n",-b/(2*a),sqrt(-delta)/)(2*abs(a)));
Printf("z2=%8.2f-%8.2f*i/n",-b/(2*a),sqrt(-delta)/(2*abs(a)));
}
}
}
问答题试题七阅读以下应用说明、属性设置及VisualBasic程序代码,将应填入(n)处的字句写在答题纸的对应栏内。[应用说明7]本应用程序的运行窗口如下图所示:只要用户单击“闪烁”按钮,文字“欢迎光临”就会以0.3秒消失、0.3秒显示反复进行闪烁;单击“停止”按钮时,闪烁停止,恢复图示的初态。在开发过程中,需要设置的属性如下:[属性设置7]在开发过程中,需要编写的程序代码如下:[程序代码7]PrivateSubCmdF_Click()Timer1.(3)=TrueLabe1.Visible=FalseEndSubPrivateSubTimer1_Timer()(4)=notLabe1.VisibleEndSubPrivateSubCmdT_Click()Timer1.Enabled=(5)Labe1.Visible=trueEndSub
问答题(5)
问答题【说明】下面的程序的功能是利用实现Runnable接口的方法来创建线程,并利用它来执行响应的一些操作。最后使得m的执行结果:100,如图3。注意:请勿改动main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。classClassName{{U}}(1){{/U}}Runnable{intn;{{U}}(2){{/U}}{try{Thread.sleep(2000);n=100;}catch({{U}}(3){{/U}}e){}}publicstaticvoidmain(String[]args){try{ClassNamea=newClassName();{{U}}(4){{/U}}threadl.{{U}}(5){{/U}}();threadl,join();intm=a.n;System.out.println("m="+m);}catch({{U}}(3){{/U}}e){}}}
