问答题要求执行该段程序后能弹出一个对话框,对话框中有“确定”和“取消”按钮,以及一个带问号的图标,并要求第一个按钮为默认按钮。
Private Sub Form_Load()
MsgBox"要重新输入吗?"______,"询问"
End Sub
问答题【说明】本应用程序是一个乘法计算器,其运行窗口如图2所示。在该界面中,“被乘数”、“乘数”以及“积”等文字为标签,相应的3个输入输出数据框为文本框,此外还有3个命令按钮。用户在“被乘数”和“乘数”相应的文本框内输入数据,再单击“运算”按钮,便能在“积”对应的文本框中看到相乘的结果;当用户单击“清除”按钮时,就会清除各文本框中的数据;当用户单击“关闭”按钮时就会关闭该窗口并退出应用程序。用户不能在“积”对应的文本框中输入数据。【属性设置】各个对象、有关的属性名以及需要修改的属性值设计如下:对象对象名属性名属性值窗体frmMultiplyCaption乘法计算器标签1Lbl1Caption被乘数:标签2Lbl2Caption乘数:标签3Lbl3Caption积:文本框1Txt1Text(空)文本框2Txt2Text(空)文本框3Txt3Text(空)Enabled (1) 按钮1 (2) Caption运算按钮2cmdClearCaption清空按钮3cmdCloseCaption退出【程序】PrivateSubcmdMultiply_Click()txt3.Text=Trim(Str$((3))'加法运算获得和数EndSubPrivateSub(4)(txt1.Text=""'空字符串赋值给文本框txt1的内容txt2.Text=""'空字符串赋值给文本框txt2的内容txt3.Text=""'空字符串赋值给文本框txt3的内容EndSubPrivateSubcmdClose_Click()(5)'退出应用程序EndSub
问答题【应用说明】某应用程序可选择打开用户指定的文本文件,将其内容显示在指定的文本框内供用户编辑,并将编辑后的结果保存在用户指定的文件中。运行时的窗口如图6-1所示,其中有6个标签、一个驱动器列表框、一个目录列表框、一个文件列表框、一个文件类型组合框、一个文件编辑文本框、一个文件名文本框以及两个命令按钮。该程序的开发要求如下。(1)通过驱动器列表框(Drivel)、目录列表框(Dirl)和文件列表框(Filel),选择文件。(2)文件类型组合框(Cmb_type)设置为下拉式列表框,其中有三个供选项,分别为“所有文件(*.*)”、“文本文件(*.txt)”和“可执行文件(*.exe)”。在文件列表框中列出的文件类型会自动与文件类型组合框中选择的文件类型相匹配。(3)在文件列表框中单击一个文件名时,该文件名会显示在文件名文本框(Txtfilename)中。(4)在文件列表框中双击一个文件名时,若是文本文件,则在文件编辑文本框(Txtfile)中显示该文件的内容并可进行编辑;若不是文本文件,则弹出一个对话框,提示“请选择文本文件!”。(5)对于编辑后的文本文件,可在文件名文本框中输入新的文件名,并单击命令按钮(Cmdsave)进行保存。【VisualBasic程序代码】PrivateSubForm_Load()Cmb_type.Addltem"所有文件(*.*)"Cmb_type.Addltem"文本文件(*.txt)"Cmb_type.Addltem"可执行文件(*.exe)"Cmb_type.ListIndex=0Filel.Pattern="*.*":Txt_filename.Text=""Txt_file.Text=""EndSubPrivateSubDirlChange()Filel.Path={{U}}(1){{/U}}EndSubPrivateSubDrivelChange()Dirl.Path=Drivel.DriveEndSubPrivateSubCmb_type_click()SelectCaseCmb_type.{{U}}(2){{/U}}Case0Filel.Pattern="*.*"Case1Filel.Pattern="*.txt"Case2Filel.Pattern="*.exe"EndSelectEndSubPrivateSubCmd_save_Click()usrFile=GetFileName()'函数GetFileName获得要保存的文件名OpenusrFileForOutputAs#1'定义usrFile为1号输出文件Print#1,Txtfile.Text'输出到1号文件Close#1EndSubPrivateSubFilel_DblClick()Ifright(Filel.FileName,3)<>{{U}}(3){{/U}}ThenMsgBox"请选择文本文件!"ExitSubEndIfusrFile=GetFileName()'函数GetFileName获得要打开的文件名OpenusrFileForInputAs#1'定义usrFile为1号输入文件Txt_file.Text=""DOWhile{{U}}(4){{/U}}EOF(1)LineInput#l,fContext'从1号文件读入一行Txt_file.Text;Txtfile.Text+{{U}}(5){{/U}}+vbCrLfLoopClose#1EndSub'其他代码略
问答题【说明】
某电信公司记录了每个用户的详细通话情况(每次通话数据记录在一行),现将某用户某月的通话数据存入一个文本文件dial.txt,其数据格式如下:
拨入或拨出标记通话开始时间通话结束时间对方号码 注1:数据字段以一个空格作为分隔符。
注2:拨入和拨出标记均为小写字母。拨入标记为i,表示其他用户呼叫本机,本机用户不需付费:拨出标记为o,表示本机呼叫其他用户,此时本机用户需要付费。
注3:通话开始和结束时间的格式均为HH:MM:SS。其中HH表示小时,取值00~ 23;MM表示分钟,取值00~59;SS表示秒,取值00~59。从通话开始到结束这段时间称为通话时间,假定每次通话时间以秒为单位,最短为1秒,最长不超过24小时。
注4:跨月的通话记录计入下个月的通话数据文件。
例如“o23:01:1200:12:15…”表示本次通话是本机呼叫其他用户,时间从23时01分12秒至次日的0时12分15秒,通话时间为71分03秒。
下面程序的功能是计算并输出该用户本月电话费(单位:元)。
通话计费规则为:
1.月通话费按每次通话费累加;
2.每次的通话费按通话时间每分钟0.08元计算,不足1分钟时按1分钟计费。
对于每次的拨出通话,程序中先分别计算出通话开始和结束时间相对于当日0点0分0秒的时间长度(以秒为单位),然后算出本次通话时间和通话费。
例如,若输入文件dial.txt的数据如下所示,则输出fee=7.44。
o 14:05:23 14:11:25 82346789
i 15:10:00 16:01:15 13890000000
o 10:53:12 11:07:05 63000123
o 23:01:12 00:12:15 13356789001
【C程序代码】
#include<stdio.h>
FILE *fin;
Int main()
{
char str[80];
int h1,h2,m1,m2,s1,s2;
long t_start,t_end,interval;
int c;
double fee=0;
fin=fopen("dial.txt","r");
if (!fin)
return-1;
while (!feof(fin)) {
if (!fgets(str,80,fin)) break;
if ({{U}} (1) {{/U}}) continue;
h1= (str[2] -48) *10+str[3] -48;
m1= (str[5] -48) *10+str[6] -48;
s1= (str[8] -48) *10+str[9] -48;
h2= (str[11] -48) *10+str[12] -48;
m2= (str[14] -48) *10+str[15] -48;
s2=(str[17]-48)*10+str[18]-48;
t_start=h1*60*60+m1*60+s1; /*通话开始时间*/
t_end=h2*60*60+m2.60+s2; /*通话结束时间*/
if({{U}} (2) {{/U}}) /*若通话开始和结束时间跨日*/
interval;{{U}} (3) {{/U}}-t_start+t_end;
else
interval=t_end-t_start;
c= {{U}}(4) {{/U}}; /*计算完整分钟数表示的通话时间*/
if (interval % 60)
{{U}} (5) {{/U}};
fee+=c*0.08;
}
fclose(fin);
printf("fee=%.2lf/n",fee);
return 0;
}
问答题试题三(共15分)阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。[说明]函数Insert_key(*root,key)的功能是将键值key插入到*root指向根结点的二叉查找树中(二叉查找树为空时*root为空指针)。若给定的二叉查找树中已经包含键值为key的结点,则不进行插入操作并返回0;否则申请新结点、存入key的值并将新结点加入树中,返回1。提示:二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树:·若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值;·若它的右子树非空,则其右子树上所有结点的键值均大于根结点的键值;·左、右子树本身就是二叉查找树。设二叉查找树采用二叉链表存储结构,链表结点类型定义如下:[C函数]
问答题[说明] 打保龄球是用一个滚球去打出10个站立的柱,将柱击倒。一局分10轮,每轮可滚球一次或多次,以击倒的柱数为依据计分。一局得分为10轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的滚球情况有关。即某轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。具体的滚球击柱规则和计分方法如下: 1) 若某一轮的第一次滚球击倒全部10个柱,则本轮不再滚球(若是第10轮则还需另加两次滚球)。该轮得分为本次倒柱数(即10)与以后两次滚球所击倒柱数之和。 2) 若某一轮的第一次滚球未击倒10个柱,则可对剩下未倒的柱再滚球一次。如果这两次滚球击倒全部10个柱,则本轮不再滚球(若是第10轮则还需另加一次滚球),该轮得分为本次倒柱数10与以后一次滚球所击倒柱数之和。 3) 若某一轮的两次滚球未击倒全部10个柱,则本轮不再继续滚球,该轮得分为这两次滚球击倒的柱数之和。 总之,若一轮中一次滚球或两次滚球击倒10个柱,则本轮得分是本轮首次滚球开始的连续3次滚球击倒柱数之和(其中有一次或两次不是本轮滚球)。若一轮内二次滚球击倒柱数不足10个,则本轮得分即为这两次击倒柱数之和。表3-15是打保龄球计分的某个实例说明。 {{B}}表3-15 某保龄球计分实例表{{/B}}
轮
1
2
3
4
5
6
7
8
9
10
附加
各轮第1次得分
10
10
10
7
9
8
8
10
9
10
8
各轮第2次得分
—
—
—
2
1
1
2
—
1
—
2
各轮得分
30
27
19
9
18
9
20
20
20
20
累计总分
30
57
76
85
103
112
132
152
172
192
以下[C程序]是模拟打一局保龄球的过程,统计各轮得分和累计总分。程序交互地逐轮逐次输入一次滚球击倒的柱数,计算该轮得分和累计总分。为记录一轮内击倒10柱,但还暂不能计算该轮得分和累计总分的情况,程序引入变量ok,用来记录当前已完成完整计算的轮次。程序每输入一次滚球击倒柱数,就检查还未完成完整计算的轮次,并计算。 [C程序] #include<stdio.h> #define N 13 struct { int n; /* 一轮内滚球次球 */ int f; /* 第一次击倒柱数 */ int s; /* 第一次击倒柱数 */ int score; /* 本轮得分 */ int total; /* 至本轮累计总分 */ int m; /* 完成本轮得分计算,还需滚球次数 */ } a[N]; int ok = 0; /* 已完成完整计算的轮次数 */ int ball(int i, int n, int max) /* 完成一次滚球,输入正确击倒柱数 */ { int d, j, k; static c=1; while (1) { if(i <= 10) printf(" 输入第%d轮的第%d次滚球击倒柱数。(<=%d)/n", i, n, max ); else printf(" 输入附加的第%d次滚球击倒柱数。(<=%d)/n", C++, max); scanf("%d , if (d >=0 printf(" 不合理的击倒柱数,请重新输入。/n") ) if (ok < {{U}}(1) {{/U}}) { /* 对以前未完成计算的轮次分别计算得分与累计总分*/ for(j = ok+1; {{U}}(2) {{/U}}; j++) { a[j].score += d; if (--a[j].m == 0) { a[j].total = ({{U}} (3) {{/U}}) + a[j].score; ok = {{U}}(4) {{/U}}; } } } return d; } main ( ) { int i, first, second, k; /* i表示轮次 */ for ( i = 1 ; ok < 10 ; i++) a[i].score = a[i].f = first = ball(i,1,10); if ( first == 10) a[i].m = 2; a[i].n = 1; if (first < 10 if (first + second == 10) a[i].m = 1; {{U}}(6) {{/U}}; } if (i <= 10 {{U}} (7) {{/U}}; } printf( "各轮处1次得分"); for(k = 1; k <= 1; k++) printf("%5d", a[k].f); printf("/n 各轮第2次得分"); for(k=1; k <= i; k++) if (a[k].n < 2) printf(" /"); else printf("%5d", a[k].s); printf("/n 各轮得分"); for(k = 1; k <= ok; k++) printf("%5d", a[k].score); printf("/n 累计总分"); for(k = 1; k <= ok; k++) printf("%5d", a[k].total); printf("/n"); } }
问答题[函数2.1说明]
下面程序的功能是计算x和y的最小公倍数。
[函数2.1]
main()
{ int m,n,d,r;
seanf("%d %d",
if(m<n) {r=m;m=n;n=r;}
{{U}}(1) {{/U}};
while (d%n! =0) {{U}}(2) {{/U}};
printf("%d/n",d);
}
[函数2.2说明]
下述程序接收键盘输入,直到句点“.”时结束。输入的字符被原样输出,但连续的空格输入将转换成一个空格。
[函数2.2]
#include <stdio.h>
main()
{ char c,preChar='/0';
c = getchar();
while(c! = '.'){
if({{U}} (3) {{/U}}) putchar(c);
else if(preChar! =' ') putchar(c);
{{U}}(4) {{/U}};
c={{U}} (5) {{/U}};
}
}
问答题试题一(共15分)阅读下列说明和流程图,将应填入(n)处的字句写在答题纸的对应栏内。[流程图说明]流程图1-1描述了一个算法,该算法将给定的原字符串中的所有前导空白和尾部空白都删除,但保留非空字符之间的空白。例如,原字符串“FileName”,处理后变成“FileName”。流程图1-2、流程图1-3、流程图1-4分别详细描述了流程图1-1中的框A、B、C。假设原字符串中的各个字符依次存放在字符数组ch的各元素ch(1)、ch(2)、...、ch(n)中,字符常量KB表示空白字符。流程图1-1的处理过程是:先从头开始找出该字符串中的第一个非空白字符ch(i),再从串尾开始向前找出位于最末位的非空白字符ch(j),然后将ch(i)、...、ch(j)依次送入ch(1)、ch(2)、...中。如果原字符串中没有字符或全是空白字符,则输出相应的说明。在流程图中,strlen是取字符串长度函数。[流程图1-1][流程图1-2][流程图1-3][流程图1-4][问题]在流程图1-1中,判断框P中的条件可表示为:i>(5)
问答题[说明]本程序在3×3方格中填入1到10以内9个互不相等的整数,使所有相邻两个方格内的两个整数之和为质数。程序的输出是全部满足条件的方格。方格的序号如下图所示。程序采用试探法,从序号为0的方格开始,依次为当前方格寻找一个合理的可填整数,并在当前位置正确填入后,为下一方格寻找可填入的合理整数;如不能为当前方格寻找一个合理的可填整数,就要后退到前一方格,调整前一方格的填入整数;当序号为8的方格也填入合理的整数后,就找到了一个解。为检查当前方格所填整数的合理性,程序引入数组CheckMatrix,存放需要进行合理性检查的相邻方格的序号。事实上,CheckMatrix中只要求第i个方格中的数向前兼容,即填写第4个方格时,只检查在它之前、与之相邻的第1,3个方格是否满足和为素数的条件。[程序]#include<stdio.h>intpos,a[9],b[11];/*用于存储方格所填入的整数*/voidwrite(inta[])/*方格输出函数*/……intisPrime(intm)/*素数判断函数,若m为素数则返回1,否则返回0*/……intselectNum(intstart)/*找到start到10之间尚未使用过的最小的数,若没有则返回0*/intj;for(j=start;j<=10;j++)if(b[j])returnj;return0;intcheck()/*检查填入pos位置的整数是否合理*/inti,jintcheckMatrix[][3]=-1,0,-1,1,-1,0,-1,1,3,-1,2,4,-1,3,-1,4,6,-1,5,7,-1;for(i=0;(j=(1))>=0;i++)if(!isPrime((2)))return0;return1;voidextend()/*为下一方格找一个尚未使用过的整数*/(3)=selectNum(1);b[a[pos]]=0;voidchange()/*为当前方格找下一个尚未使用过的整数,若找不到则回溯*/intj;while(pos>=0if(pos<0)return;(4);a[pos]=j;b[j]=0;voidfind()intok=1;pos=0;a[pos]=1;b[a[pos]]=0;doif(ok)if((5))write(a);change();elseextend();elsechange();ok=check(pos);while(pos>=0);voidmain()inti;for(i=1;i<=10;i++)b[i]=1;find();
问答题【说明】本应用程序的运行窗口如图2所示。只要用户单击“闪烁”按钮,文字“欢迎光临”就会以0.3秒消失、0.3秒显示反复进行闪烁;单击“停止”按钮时,闪烁停止,恢复图示的初态。在开发过程中,需要设置的属性如表1所示。{{B}}表1属性设置{{/B}}对象对象名属性名属性值窗体FrmlCaption闪烁显示演示标签LabelCaption欢迎光临命令按钮CmdFCaption闪烁命令按钮CmdTCaption停止定时器TimerlEnabled {{U}} (1) {{/U}}Interval {{U}} (2) {{/U}}在开发过程中,需要编写的程序代码如下:【程序】PrivateSubCmdF_Click()Timerl.{{U}}(3){{/U}}=TrueLabel.Visible=FalseEndSubPrivateSubTimerl_Timer(){{U}}(4){{/U}}=notLabel.VisibleEndSubPrivateSubCmdT_Click()Timer].Enabled={{U}}(5){{/U}}LabelVisible=trueEndSub
问答题[说明]下面的流程图用于计算一个英文句子中最长单词的长度(即单词中字母个数)MAX。假设该英文句子中只含字母、空格和句点“.”,其中句点表示结尾,空格之间连续的字母串称为单词。[流程图]
问答题【说明】
以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。
【程序】
#include < stdio. h >
main( )
{ FILE * fp;
char str[100]; int i=0;
if((fp=fopen("text.txt"{{U}} (1) {{/U}})) ==NULL)
{ printf("can't open this file. /n") ;exit(0) ;}
printf(" input astring: /n" ); gest(str);
while( str[i] )
{ if(str[i] >='a'
fputc(str[i],{{U}} (3) {{/U}});
i++;
}
fclose(fp);
fp=fopen(" test.txt",{{U}} (4) {{/U}});
fgets(str, 100, fp);
printf("%s/n" ,str);
{{U}} (5) {{/U}};
}
问答题【说明】
进行两个整数之间的比较,由考生通过输入窗口分别输入两个整数,程序比较出结果。例如:先后输入的两个数分别为25和36。
比较结果显示:
25!=36
25<36
25<=36
【Java代码】
import javax.swing.JOptionPane;
public class Java3
{
public static void main(String args[])
{
String{{U}} (1) {{/U}} // 用户输入第1个字符串
secondNumber, // 用户输入第2个字符串
result; // 包含输出
int number1, // 比较的第1个数
number2; // 比较的第2个数
// 用户输入的第1个字符串
firstNumber =
JOptionPane.{{U}} (2) {{/U}}("Enter first integer:");
//读用户输入的第2个字符串
secondNumber =
JOptionPane.showlnputDialog("Enter second integer:");
将字符串类型转换成整数类型
number1= Integer.{{U}} (3) {{/U}}(firstNumber);
number2= Integer.parselnt(secondNumber);
result= "":
if ({{U}} (4) {{/U}})
result=number1+"=="+number2;
if (number1 != number2)
result=number1+"!="+number2;
if (number1<number2)
result=result+"/n"+number1+"<"+ number2;
if (number1>number2)
result=result+"/n"+number1+">"+number2;
if (number1<=number2)
result=result+"/n"+number1+"<="+number2;
if (numbed>=number2)
result=result+"/n"+number1+">="+number2;
//显示结果
JOptionPane.{{U}} (5) {{/U}}.(
null, result, "Comparison Results",
JOptionPane. INFORMATION_MESSAGE);
//程序正常退出
System.exit(0);
}
}
问答题试题一(15分,每空3分)阅读下列说明和流程图,将应填入(n)的字句写在答题纸的对应栏内。[流程图说明]下面的流程图描述了对8位二进制整数求补的算法。该算法的计算过程如下:从二进制数的低位(最右位)开始,依次向高位逐位查看,直到首次遇到“1”时,停止查看。然后,对该“1”位左面的更高位(如果有的话),逐位求反,所得的结果就是对原二进制数求补的结果。例如:对二进制整数10101000求补的结果是01011000。设8位二进制整数中的各位,从低位到高位,依次存放在整型数组BIT的BIT[1]~BIT[8]中。例如,二进制整数10101000存放在数组BIT后,就有BIT[1]=0,BIT[2]=0,...,BIT[7]=0,BIT[8]=1。若流程图中存在空操作,则用NOP表示。[流程图]流程图中(1)处按“循环变量名:循环初值,增量,循环终值”格式描述。
问答题[说明]
函数DelA - InsB ( LinkedList La, LinkedList Lb, int key 1,int key 2,int len)的功能是,将线性表A中关键码为key 1的节点开始的len个节点,按原顺序移至线性表B中关键码为key 2的节点之前。若移动成功,则返回0;否则返回-1。
线性表的存储结构为带头节点的单链表,La为表A的头指针,Lb为表B的头指针。单链表节点的类型定义如下。
typedef struct node{
int key;
struct node*next;
} *LinkedList;
[C程序]
int DelA_InsB (LinkedLiSt La, LinkedList Lb, int key1,int key2,int len
{ LinkedList p, q, S, prep, pres;
int k;
if (!La ->next || !Lb ->next || len<=0)
return-l;
p = La->next;
prep = La;
while (p
p = p->next;
}
if (!p)
return -1; /* 表A中不存在键值为key1的节点 */
q = p;
k = 1;
while (q
k++;
}
if (!q)
return -1; /* 表A中不存在要被删除的len个节点 */
S = Lb ->next;
{{U}} (3) {{/U}};
while (s
s = e->next;
}
if (!s)
return -1; /* 表B中不存在键值为key2的节点 */
{{U}} (4) {{/U}} q->next; /* 将表A中的len个节点删除 */
q->next= {{U}}(5) {{/U}}
pres->next = p; /* 将len个节点移至表B */
return 0;
}
问答题[说明]某单位组织一次职业技术考核比赛,由十名评委对选手的现场表现打分(0到100以内的数值)。本程序接收原始评分后,去掉一个最高分、一个最低分,最后计算并输出选手最后得分。在接收输入第i个评分时,若输入数据的类型、范围不正确,程序将给出相应提示,并等待下一次输入,直至正确接收第i个评分为止。程序的运行界面如下:在开发过程中,文本框名为Text1,界面上有上至下三个按钮分别取名为CmdMark、CmdReresh和CmdExit。[VisualBasic代码]PrivateSubCmdMark_Click()’按钮“输入评分”的单击事件响应代码DimiAsInteger,tempAsVariant’声明变量Dimmarks(1To10),maxMark,minMark,sumMark,markAsSinglesumMark=0Text1.Text=“编号”&Chr(9)&“评分”&vbCrLfFori=1To10’接收十个评分输入DoWhile1=1’验证并接收第i个评委的评分temp=InputBox(“请输入”&i&“号评委的评分:”)If{{U}}(1){{/U}}IsNumeric(temp)ThenMsgBox“数据类型错误,请重试!”ElseIfCSng(temp)<0OrCSng(temp)>100ThenMsgBox“数值范围错误,请重试!”Else:ExitDoEndIfLoopmarks(i)=CSng(temp)Ifi=1ThenmaxMark={{U}}(2){{/U}}:minMark={{U}}(2){{/U}}Ifmarks(i)>maxMarkThenmaxMark=marks(i)IfminMark>marks(i)Then{{U}}(3){{/U}}sumMark=sumMark+marks(i)Text1.Text=Text1.Text&i&Chr(9)&marks(i)&vbCrLf输出第i个评委的评分Nextmark=({{U}}(4){{/U}})/8’计算选手最后得分Text1.Text=Text1.Text&"去掉一个最高分:"&maxMark&vbCrLf&_"去掉一个最低分:"&minMark&vbCrLf&_"选手最后得分:"&markEndSubPrivateSubCommand2_Click()’按钮“刷新屏幕”的单击事件响应代码{{U}}(5){{/U}}.Text=“单击”输入评分“按钮,开始统分……”EndSubPrivateSubCommand3_Click()按钮“退出程序”的单击事件响应代码EndEndSub
问答题【函数2.1说明】 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 【函数2.1】 Fun1 (int n) int i; for(i=2;i<=n;i++) while ( (1) ) if (n%i==0) printf("%d*",i); (2) ; else break; printf("%d",/n); 【函数2.2说明】 下面程序的功能是:海滩上有一堆桃子,5只猴子来分。第1只猴子把这堆桃子平均分为5份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第2只猴子把剩下的桃子又平均分成5份,又多了一个,它同样把多的一个扔入海中,拿走了一份。第 3、4、5只猴子都是这样做的,问海滩上原来最少有多少个猴子? 【函数2.2】 main() int i,m,j,k,count; for(i=4;i<10000;i+=4) count=0; (3) ;for(k=0;k<5;k++) (4) ; i=j; if(j%4==0) (5) ; else break; i=m; if(count==4) printf("%d/n",count); break;
问答题5.
问答题【说明】【C程序1】用回溯算法来产生由0或1组成的2m个二进位串,使该串满足以下要求。视串为首尾相连的环,则由m位二进制数字组成的2m个子序列,每个可能的子序列都互不相同。例如,如果m=3,在串11101000首尾相连构成的环中,由3位二进制数字组成的每个可能的子序列都在环中恰好出现一次,它们依次是111,110,101,010,100,000,001,011,如图2-14所示。【C程序2】是求“背包问题”的一组解的递归算法程序。“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为W1,W2,…,Wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。【C程序1】#defineN1024#defineM10intb[N+M-1]intequal(intk,intjintm){inti;for(i=0;i<m;i++if(b[k+i]{{U}}(1){{/U}})return0;return1;}intexchange(intk,intm,intv){while(b[k+m-1)==v){b[kncm--i]=!v{{U}}(2){{/U}};}{{U}}(3){{/U}}=v;returnk;}init(ihtv){intkfor(k=0;K=N+M-1;k++)b[k]=v;}main(){intm,v,k,n,j;printf('Enterm(l<m<10),vv=0,v=1)/n");scanf("%d%d,n=0x01<<m;init(!v);k=0;while({{U}}(4){{/U}}<n)for(j=0;j<k;j++)if(equal(k,j,m)){k=exchange(k,m,v)j={{U}}(5){{/U}};}for(k=0;k<n;k++)print{("%d/n",b[k]);}}【C程序2】#include<stdio.h>#defineN7#defineS15intw[N+1]={0,1,4,3,4,5,2,7};intknap(intS,intn){if(S==0)return1;if(s<0||(s>0if({{U}}(6){{/U}})){printf("4d",w[n]);return1;}return{{U}}(7){{/U}}}main(){if(knap(S,N)printf("OK:/n");elseprintf("NO!/n")}
问答题试题六(共15分)阅读以下说明和C++代码,将解答写入答题纸的对应栏内。[说明]类Stock的定义中有三处错误,分别在代码的第04、06、10行。请补齐下述代码中的空缺1,修改错误并给出修改后该行的完整代码,最后完善程序运行后的输出结果。[C++代码]程序运行后的输出结果为:1:3.5(2)(3)
