填空题[说明] 下面Application程序用while循环从键盘读入字符,记录输入的字符数并输出读入的字符,当输入字符“0”时结束while循环,同时结束程序。 [Java程序] import java.io.*; public class ContinuateInput public (1) void main(String[] args) (2) IOException int ch; int counter=0; System.out .println("请输入字符(输入0结束)"); while ((char) (ch=System.in. (3) ) != '0') counter++; System.out .println (( (4) )ch) ; System.out .println () ; System.out.println ("counted "+counter+" total bytes. ") ; System.out . (5) ;
填空题[说明]从键盘输入一个高精度正整数n,去掉其中s个数字后按原左右次序再组成一个新的正整数。对给定的n,要寻找一种方案,使得余下的数字组成的新数最小。算法分析:每次删除一个数字,选择一个使余下的数最小的数字作为删除对象。当s=1时,在n中删除哪一个数字能达到最小的目的?从左到右每相邻的两个数字比较:若出现减,郎左边大于右边,则删除左边的大数字;若不出现减,即所有数字全部升序,则删除最右边的大数字。当s>l(当然小于n的位数),按上述操作一个一个删除,删除一个达到最小后,再从头即从串首开始,删除第2个,依此分解为s次完成。若删除不到s个后已无左边大于右边的减序,则停止删除操作,打印余下串的左边L-s个数字即可。(x为统计删除数字的个数,m=1表示脱离循环,L为n的长度)。[流程图][问题]将流程图中的(1)~(5)处补充完整。
填空题阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。 [说明] 设一个环上有编号为0~n-1的n粒颜色不尽相同的珠子(每粒珠子颜色用字母表示,n粒珠子的颜色由输入的字符串表示)。从环上的某两粒珠子间剪开,则环上珠子形成一个序列然后按以下规则从序列中取走珠子:首先从序列左端取走所有连续的同色珠子;然后从序列右端在剩下的珠子中取走所有连续的同色珠子,两者之和为该剪开处可取走珠子的粒数。在不同位置剪开,能取走的珠子也不尽相同。 本程序所求的是在环上哪个位置剪开,按上述规则可取走的珠子粒数最多。程序中用数组存储字符串。例如:10粒珠子颜色对应字符串为“aaabbbadcc”,在0号珠子前剪开,序列为aaabbbadcc,从左端取走3粒a色珠子,从右端取走2粒c色珠子,共取走5粒珠子。若在3号珠子前剪开,即bbbadccaaa,共取走6粒珠子。 [C函数] int count(char*s,int start,int end) inti,c=0,color=s[start],step=(start>end)?-1:1; for(i=start;s[i]==color;i+=step) if(step>0 (2) ; return c; void main() char t,s[120]; int i,j,C,len,maxc,cut=0; printf("请输入环上代表不同颜色珠子字符串:"); scanf("%s",s ); len=strlen(s); for(i=maxc=0;i<len;i++) /*尝试不同的剪开方式*/ c=count(s,0,len-1); if(c<len) C+=count( (3) ); if(c>maxc)cut=i;maxc=c; ) /*数组s的元素循环向左移动一个位置*/ t=s[0]; for(j=1;i<len;i++) (4) ; (5) ; printf("在第%d号珠子前面剪开,可以取走%d个珠子./n",cut,maxc);
填空题[说明] 某班有n个同学,学号分别为1,2,…,n。为了每天指派若干个同学值日,他们放弃传统单调的轮留值日,别出心裁采用“定和值日”法:每天所指派值日同学的学号之和须等于其班号m(n<m<n(n+1)/2)并且规定:不允许任何两天值日的同学完全一样。 编程使n个同学按定和m值日(正整数n、m均从键盘输入,约定n<50,m<100),求出可持续的值日天数f(n,m)。运行程序,具体求出f(19,98)的值。 [函数] main ( ) int b, p, i , m, n, k; static int a[51][101]: long s=0; printf (" 请输入学生人数;"); scanf ( "%d", printf (" 请输入定和值: "); scanf ( "%d", a[1][0]=1; a[1][1]=1; /* 数组元素赋初值*/ for ( (1) ; j<=n; j++) for (i=j; (2) ; i++) /* 计算 a (2, m),…, a(n, m)*/ (3) ; b=0, for ( k=1 k<j-1; k++ (4) ; a[j][i]=b; (5) ; /* 求和s 为所求结果*/ printf (" "); printf ( "f ( %d, %d ) =%1d/n", n, m, s );
填空题【说明】在一些应用场合中,需要对用户的输入数据进行检查监控。以下VisualBasic程序实现了对新添加到List列表的内容进行监控,拒绝向List列表添加重复信息。例如,在List列表中存在元素“a01001;a01002”,如果用户输入数据为“a01001”或“a01002”,系统则弹出提示信息,拒绝将新数据加入List列表;如果用户输入的数据不同于List列表中的任何一个元素,则作为新元素加入List中。VisualBasic界面显示如图所示。根据程序功能说明,完成程序代码。【代码5-1】BeginVB.FormFormlCaption="List列表拒绝添加重复信息"//...窗体描述(略)BeginVB.CommandButtonCommand2Caption="退出"//...窗体描述(略)EndBeginVB.CommandButtonCommandlCaption="添加"//...窗体描述(略)EndBeginVB.TextBoxText1//...窗体描述(略)EndBeginVB.ListBoxList1Height=1860ItemData="Form1.fix":0000Left=1020List="Form1.fix":0002TabIndex=0Top=525Width=2580EndBeginVB.Labe1Labe11BackStyle=0'TransparentCaption="请输入编号"//...窗体描述(略)EndEnd【代码5-2】AttributeVBName="Form1"AttributeVB_GlobalNameSpace=FalseAttributeVBCreatable=FalseAttributeVBPredeclaredId=TrueAttributeVB_Exposed=FalsePrivateSubFormLoad()List1.AddItem"a01001"List1.AddItem"a01002"EndSubPrivateSubCormnand1Click()DimMyvalAsLongFori=0To(1)(2)If(3)ThenMsgBox"系统不允许重复输入,请重新输入"ExitSubEndIf(4)(5)EndSub
填空题[说明]
本程序求3~100之间的所有素数(质数)并统计个数;同时将这些素数从小到大依次写入顺序文件E: /dataout.txt;素数的个数显示在窗体Form1上。
[Visual Basic 代码]
Private Sub Command1_ Click ( )
Dim count as integer, flag as Boolean
Dim t1 as Integer, t2 as Integer
{{U}} (1) {{/U}}
Count=0
For t1=3 to 100
Flag=Tree
For t2=2 to Int( Sqr ( t1 ) )
If{{U}} (2) {{/U}}Then flag=False
Next t2
{{U}} (3) {{/U}}
count={{U}} (4) {{/U}}
write #1, t1
End if
Next t1
{{U}} (5) {{/U}}
Close #1
End Sub
填空题[说明] 某超市集团为发展业务向社会公开招聘N个工种的工作人员,每个工种各有不同的编号(1~M)和计划招聘人数。每位应聘者需申报两个工种,并参加集团组织的考试。该集团公司将按应聘者的成绩从高分至低分的顺序进行排队录取。具体录取原则是:从高分到低分依次对每位应聘者先按其第一志愿录取;当不能按其第一志愿录取时,便将他的成绩扣去5分后,重新排队,并按其第二志愿考虑录取。 以下C程序为输出各工种实际招聘的应聘人员,每个工种都保留一个录取者的有序队列。录取处理循环直至招聘额满或已对全部应聘者都做了录取处理后跳出。 在C程序中,类型STU包含有应聘者的基本信息:编号、成绩、志愿、排队成绩和录取志愿号。数组rz[]的每个元素对应一个工种,包含计划招聘人数和已录取的人数。 [C程序代码] #include #define N 36 #define EDMARK 5 typedef struct stu int no, total, z[2], sortm, zi; struct stu *next; STU; struct rznode int lmt , count; STU *next; rz [N] ; STU *head = NULL, *over = NULL; int all FILE *fp; char dataf [ ] = "zp2008.dat"; print (STU *p) for (;p!=NULL; p = p->next) printf("%d(%d)/t", p->no, p->total) ; insert(STU **p, STU *u) STU *v, *q; for (q = *p;q != NULL; v = q , (1) ) if ( q-> sortm < u->sortm) break; if ( q == *p) (2) ; else (3) ; u->next = q ; main ( ) int zn, i, no, total, z1, z2 ; STU *p, *v, *q; fp = fopen (dataf, "r") ; if (fp == NULL) printf ("Can't open file %s./n",dataf); exit (0) ; fscanf (fp,"%d", for (all = 0, i = i; i <= zn; i++) fscanf (fp, "%d", rz [i] .count = 0; rz[i] .next = NULL; all += (4) ; for (;;) if ((fscanf(fp,"%d%d%d%d", p = ( STU *) malloc (sizeof (STU)) ; p->no = no; p->total = p->sortm = total; p->zi = 0; p->z[0] : z1; p->z[1] = z2; (5) ; fclose (fp); for (;all ) p = head; head = head->next; if (rz[p->z[p->zi]].count < (6) ) rz[p->z[p->zi]].count ++; insert( all--; continue; if (p->zi >= 1 ) p->next = over; over = p; continue; p->sortm -= DEMARK; (7) ; insert( for ( i = 1; i <= zn; i++ ) printf("%d:/n",i); print( rz[i ].next); printf("/n"); printf("over:/n"); print (head); print(over); printf("/n")
填空题阅读以下说明和C++程序,将应填入{{U}} (n) {{/U}}处的字句写在对应栏内。 [说明] 下面程序是为汽车市场编制的一个程序的一部分。其中automobile是基类。 [C++程序] //Auto.h #ifndef AUTO_H #define AUTO_H class automobile { (1): int miles_per_gallon; //汽车每加仑行驶公里数 float fuel_capacity; //油箱容积 public: void initialize(int in_mpg,int in_fuel); int get_mpg(void); float get_fuel(void); float travel_distance(void); } #endif //Auto.cpp #include"auto.h" void automobile::initialize(int in_mpg,float in fuel) { miles_per_gallon=in_mpg; fuel_capacity=in_fuel; ) int automobile::get_mpg() //提供一辆特定汽车每加仑公里数 {return miles per_gallon;} float automobile::get_fuel() //提供油箱容积 {return fuel_capacity;} float automobile::travel_distance() {return{{U}} (2) {{/U}}} //car.h #ifndef CAR_H #define CAR_H #include"auto.h" class car:{{U}} (3) {{/U}} { int Total_doors; public: void initialize(int in_mpg,float in_fuel,int doors=4); int doors(void); }; #endif //car.cpp #include"car.h" void car::initialize(int in_mpg,float in_fuel,int door) { Total_doors=door; miles_per_galion=in_mpg; fuel_capacity=in_fuel; } int car::doors(void) {return Total doors;} //Allauto.cpp #include #include"auto.h" #include"car.h" int main() { car sedan; sedan.initialize(24,20.0,4); tout<<"The sedan can travel"<<{{U}} (4) {{/U}}<<"miles./n"; cout<<"The sedan has"<<{{U}} (5) {{/U}}<<"doors./n"; return 0; }
填空题[说明] 设计一程序,输入16个整数到一个数组中,将数组位序颠倒重新排序,使每个数字不再按原j的顺序排列,而是按j的二进制数颠倒后得出的数排列,例如,将第1个(0001)数与第8个(1000)数交换,将第3个数(0011)与第12个数(1100)交换。 [C++程序] #include<iostream.h> #define SIZE 16 #define SWAP (a,b) temper=(a); (a)= (b); (b) =temper; void maln() int data[SIZE]; int n: cout<<"请输入"<<SIZE<<"个整数:"; for (n=0;n<SIZE;n++) (1) ; int j=0,m; for (int i=0; i<n; i++) if(j>i) (2) ; (3) ; while( (4) ) &&j>=m) j-=m; m>>=1: (5) ; cout<<endl<<"排序后:"; for(n=0;n<SIZE;n++) cout<<data [n]; <<" ";
填空题阅读以下说明和C++代码,回答问题。 [说明] 已知类SubClass的getSum方法返回其父类成员i与类SubClass成员i的和,类SuperClass中的getSum为纯虚拟函数,程序中的第23行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,分析程序运行到第15行且尚未执行第15行的语句时成员变量j的值,最后给出程序运行后的输出结果。 [C++代码] 01 #inclUde<iostream> 02 using namespace std; 03 class SuperClass 04 private: 05 int i; 06 publiC: 07 SuperClass()(i=5;) 08 virtual iht getValueO(return i ;) 09 virtual int getSum()=0; 10 ; 11 class SubClass:public SuperClass 12 int J ; 13 public: 14 SubClass(int j):j(0) 15 (1) =j; //用参数j的值更新数据成员 16 ; 17 int getValue()return j;) 18 int getSum() 19 return (2) getValue()+j; 20 21 ; 22 void main(void) 23 SuperClass s=new SubClass(-3); 24 cout<<s->getValue()<<""; 25 tout<<s->getSum()<<endl; 26 delete s; 27
填空题【说明】 下面的程序中定义了两个方法求自然数1~100的和。具体如下:int suml(int n);利用循环求1~n的和,int sum2(int n);利用递归方法求和1~n的和;在main()方法中调用这两个方法求1~100的和并显示。在程序的每条横线处填写一个适当的语句,使程序的功能完整。 public class Sum public static void main (1) //1. 调用sum1(int n),求1~100的和 //标准输出 (2) ("1~100的和:" +sum1(100)); //2. 调用sum2(int n),求1~100的和 //标准输出 (2) ("1~100的和:"+sum2(100)); static iht sum1( int n) int result=0; for(int i=1;i<=n;i++) (3) retrun result; static int sum2(int n) if (4) return 1 else (5)
填空题[说明]
本程序将利用文本框txtInput 输入的一行字符串中的所有字母加密,加密,加密结果在文本txtCode中显示。加密方法如下:将每个字母的序号移动5个位置,即“A”->“F”“a”->“f”,“B”->“G”……“Y”->“D”,“Z”->“E”。程序段如下:
[Visual Basic 代码]
Private Sub Form_ Click()
Dim strInput As String*70 ; 输入字符串
Dim Code as String*70 ;加密结果
Dim strTemp As String*1 ;当前处理的字符
Dim i as Integer
Dim Length As Integer ;字符串长度
Dim iAsc As Integer ;第i个字ASCII码
{{U}} (1) {{/U}} ;取字符串
i=1
Code=“”
{{U}} (2) {{/U}} ;去掉字符串右边的空格,求真正的长度
Do While(i<=Length)
{{U}}(3) {{/U}} ;取第i个字符
If (strTemp>="A" And strTemp<="Z',) Then
iAsc= Asc (strTemp)+5
If iAsc>Asc(“Z”)Then iAsc=iAsc-26
Code=Left$(Code,i-1)+Chr$ (iAsc)
ElseIf (strTemp>="a" And strTemp<="z") Then
iAsc=Asc(strTemp)+5
If iAsc>Asc (“z”) TheniAsc=iAsc-26
Code=Left$(Code,i-1)+Chr$(iAsc)
Else
Code=Left$(Code,i-1)+strTemp
End If
{{U}} (4) {{/U}}
Loop
{{U}} (5) {{/U}} ;显示加密结果
End Sub
填空题【流程图】下面的流程图描述了对16位二进制整数求补的算法。计算过程是:从二进制数的低位(最右位)开始,依次向高位逐位查看,直到首次遇到“1”时,停止查看。然后,对该“1”位左面的更高位(如果有的话),逐位求反,所得的结果就是对原二进制数求补的结果。例如:对二进制整数1011100110101000求补的结果是0100011001011000。设16位二进制整数中的各位,从低位到高位,依次存放在整型数组BIT的BIT[1]~BIT[16]中。例如,二进制整数1011100110101000存放在数组BIT后,就有BIT1[1]=0,BIT[2]=0,……,BIT[15]=0,BIT[16]=1。流程图(如图1所示)中(1)处按“循环变量名:循环初值,增量,循环终值”格式描述。若流程图中存在空操作,则用NOP表示。
填空题[说明] 设计一个类模板Sample用于对一个有序数组采用二分法查找元素下标。 [c++程序] #include<iostream. h> #define Max 100 //最多元素个数 template<class T> class Sample T A [Max]; //存放有序数序 int n; //实际元素个数 Public: Sample //默认构造函数 Sample(T a[] ,int i); //初始化构造函数 int seek(T c); void disp for (int i=0; i<n; i++) cout<<A [i]<<" "; cout<<endl; ; template<class T> Sample<T>::Sample(T a[],int i) n=I; for (int j=0; j<I; j++) (1) ; template<class T> int Sample<T>::seek(T c) int low=0,high=n-1,mid; while( (2) ) mid=(low+high)/2; if( (3) ) return mid; else if ( (4) ) low=mid+1; else (5) ; return-1; void main() char a[]="acegkmpwxz"; Sample<char>s(a,1.); cout<<"元素序列:" ;s. disp(); cout<<"元素'g' 的下标: "<<s. seek('g')<<endl;
填空题【说明】 以下程序实现了利用鼠标任意移动该圆形的位置,仔细阅读代码和相关注释,将程序补充完整。 【代码6】 import java.awt.*; import java.awt.event.*; public class CIUSAMPLE extends Frame implements MouseMotionListener, MouseListener static CIUSAMPLE frm=new CIUSAMPLE (); int x=70,y=60,posX=70,posY=60,dx,dy; public static void main ( String args[]) frm.setTitle ("Dragging a circle"); frm.setSize ( 200,150 ); (1) frm.addMouseMotionListener ( frm ); frm. setVisible ( true ); public void mousePressed ( MouseEvent e ) (2) dy=e.getY () -posY; public void mouseDragged ( MouseEvent e ) (3) y=e.getY () -dy; if ( dx>0 (4) public void paint ( Graphics g ) g.setColor ( Color. pink ); // 设置绘图颜色为粉红 g.fillOval ( x,y,50,50 ); //以基准点为图形的左上角绘出圆形 (5) posY=y; public void mouseMoved ( MouseEvent e ) public void mouseReleased ( MouseEvent e ) public void mouseEntered ( MouseEvent e ) public void mouseExited ( MouseEvent e ) public void mouseClicked ( MouseEvent e )
填空题[说明] 下面程序定义了一个类Point及其成员函数,然后从类Point派生出类Circle及其成员函数。 [C++程序] //POINT. H #ifndef POINT_H # define POINT_H class Point public: Point (float x=0,float y=0) ; void setPoint (float, float) ; float getX () const return x; float getY () const return y; protected: float :x,y; ; #endif //POINT.CPP #include <iostream.h> #include " point .h " Point :: Point (float a, float b) x=a; y=b void Point::setPoint(float a,float b) x=a; y=b //CIRCLE . H #ifndef CIRCLE_H #define CIRCLE_H #include "point.h" class Circle: (1) public : Circle (float r=0.0, float x=0, float y=0) ; void setRadius (float) ; float getRadius () const; float area() const; protected: float radius; ; //CIRCLE.CPP #include "iostream.h" #include "circle .h " Circle::Circle(float r,float a,float b) : (2) radius=r; void Circle::setRadius (float r) radius=r; float Circle::getRadius () const return radius; float Circle::area () const return 3 .14159*radius*radius ; //text.cpp #include <iostream.h> #include " point .h " #include " circle .h " main () Circle c(2.5,3.7,4.3) ; cout<< "X coordinate is "<<c.getX () <</n Radius is: "<<c.getRadius (); (3) ; //设置新的圆心 (2,2) 。 Point &pRef=c; cout<<"/n Circle printed as a point is:" <<"]"<< (4) <<"."<< (5) <<"]";
填空题阅读以下函数说明和C语言函数,将应填入{{U}} (n) {{/U}}处的字句写在对应栏内。 [说明1] 函数void fun(char*w,char x,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。 [C函数1] void fun(char*W,char x,int*n) { int i,P; p=0; w[*n]=x; while(x>w[p]){{U}} (1) {{/U}}; for(i=*n,i>p;i--)w[i]={{U}} (2) {{/U}}; w[p]=x; ++*n; } [说明2] 函数void revstr(char*s)将字符串s逆置。例如:字符串“abcde”,经过逆置后变为“edcba”。 [C函数2] void revstr(char*s) { char*p,c; if(s==NULL)return; p={{U}} (3) {{/U}}; /*p指向字符串s的最后一个有效字符*/ while(s<p){ /*交换并移动指针*/ C=*s; {{U}} (4) {{/U}}=*p; {{U}} (5) {{/U}}=c; } }
填空题已知类Stock和类JavaMain都定义在JavaMain.java文件中,类Stock的定义中有四处错误,分别在代码的第01、02、06、07行。请修改错误并给出修改后该行的完整代码,并写出改正错误后程序运行的输出结果。
填空题[说明]
若S和T是用结点大小为1的单链表存储的两个串,试设计一个算法找出S中第一个不在T中出现的字符。查找过程是这样的,取S中的一个字符(结点),然后和T中所有的字符一一比较,直到比完仍没有相同的字符时,查找过程结束,否则再取S中下一个字符,重新进行上述过程。
[函数]
typedef struct node {
char data;
struct node *next;
}LinkStrNode; //结点类型
typedef LinkStrNode *LinkString; //LinkString 为链串类型
LifikString S; //S 是链串的头指针
char SearchNoin ( LinkString S, LinkString T )
{//查找不在T中出现的字符
LinkStrNode *p, *q;
{{U}} (1) {{/U}};
q=T;
while ({{U}} (2) {{/U}})
{//取S中结点字符
while({{U}} (3) {{/U}})//进行字符比较
q=q->next;
if(q==NULL) return {{U}}(4) {{/U}};//找到并返回字符值
q=T;//指针恢复串T的开始结点
({{U}} (5) {{/U}});
}
printf("there's no such character.");
return NULL:
}
填空题【说明】下列流程图(如图4所示)用泰勒(Taylor)展开式sinx=x-x3/3!+x5/5!-x7/7!+…+(-1)n×x2n+1/(2n+1)!+…【流程图】计算并打印sinx的近似值。其中用ε(>0)表示误差要求。
