题目
阅读以下函数说明、图和C程序代码,将C程序段中(1)~(6)空缺处的语句填写完整。
[说明]
散列文件的存储单位称为桶(BUCKET)。假如一个桶能存放m个记录,当桶中已有m个同义词(散列函数值相同)的记录时,存放第m+1个同义词会发生“溢出”。此时需要将第m+1个同义词存放到另一个称为“溢出桶”的桶中。相对地,称存放前m个同义词的桶为“基桶”。溢出桶和基桶大小相同,用指针链接。查找指定元素记录时,首先在基桶中查找。若找到,则成功返回,否则沿指针到溢出桶中进行查找。
例如,设散列函数为Hash(Key)=Key mod7,记录的关键字序列为15,14,21,87,96,293,35,24, 149,19,63,16,103,77,5,153,145,356,51,68,705,453,建立的散列文件内容如图2-27所示。
为简化起见,散列文件的存储单位以内存单元表示。
函数InsertToHashTable(int NewElemKey)的功能是:若新元素NewElemKey正确插入散列文件中,则返回值0;否则返回值-1。
采用的散列函数为Hash(NewElemKey)=NewElemKey%P,其中P设定基桶的数目。
函数中使用的预定义符号如下。
第1题
阅读以下说明,以及用C++在开发过程中所编写的程序代码,将应填入(n)处的字句写在对应栏内。
【说明】
在下面函数横线处填上适当的字句,使其输出结果为:
构造函数.
构造函数.
1,2
5,6
析构函数
析构函数.
【C++代码】
include "iostream.h"
class AA
{ public;
AA(int i,int j)
{A=i; B=j;
cout<<"构造函数.\n";
}
~AA(){(1);}
void print();
private:
int A, B;
};
void AA∷print()
{cout<<A<<","<<B<<endl;}
void main()
{
AA *a1, *a2;
(2)=new AA(1, 2);
a2=new AA(5, 6);
(3);
a2->print();
(4) a1;
(5) a2;
}
第2题
阅读以下应用说明及Visual Basic部分程序代码,将应填入(n)处的字句写在对应栏内。
【说明】
本应用程序是一个小写数字转换成大写格式的转换器,其运行窗口如图5所示。
窗口中有两个标签(lblNumber和lblChinese)、两个文本框(txtNnmber和txtChinese)和一个命令按钮(cmdChange)。当单击按钮cmdChange时,将文本框txtNumber中数字转换成中文大写,并显示在文本框txtChinese中。例如,在文本框txtNumber输入0076845,单击cmdChange按钮,将在文本框txtChinese中显示“柒万陆仟捌佰肆拾伍”。
程序中调用的函数CChinse(Strdigit As String)的功能是先删除字符串的所有前导0,再调用函数Change(Strdigit As String),将数字字符串Strdigit转换成中文大写格式。
为了防止用户在文本框txtNumber输入非数字形式的字符,程序将以空字符代替所输入的非数字有形字符。
【程序】
Private Function Transfer(Strdigit As String)As String
′完成小写向大写的转换,这段代码省略
End Function
Private Function CChinese(Strdigit As String)As String
Dim intLen,intCounter As Integer
intLen = Len (Strdigit)
If intLen>0 Then
intcounter = 0
Do '过滤数字串Strdigit的前导0
intcounter = intcounter + 1
Loop Until Mid(Strdigit,(1))
intLen =(2)
Strdigit =(3) (Strdigit,intLen)
CChinese = Transfer(Strdigit)
End If
End Function
Private Sub cmdChange_Click()
txtChinese.Text=CChinese((4)) '调用Cchinese函数
End Sub
Private Sub txtNumber_KeyPress(KeyAscii As Integer)
Select Case KeyAscii '根据输入字符的ASCII码的值进行判断
Case KeyAscii<32 '保留输入的控制字符
Case 48 To 57 '保留输入的数字字符
Case Else '其他情况以空字符代替
(5)=0
End Select
End Sub
第3题
阅读以下说明和C语言函数,将解答填入对应栏内。
【说明】
下面待修改的C程序完成的功能是:对于给定的一个长正整数,从其个位数开始,每隔一位取一个数字(即取其个位、百位、万位等数字),形成一个新的整数并输出。例如,将该程序修改正确后,运行时若输入“14251382”,则输出的整数为“4532”。
下面给出的C程序代码中有五个错误,请指出所有的错误。
【C程序代码】
01 include <stdio.h>
02
03 int main()
04 {
05 long n, num;
06 int i;
07
08 do {
09 printf("请输入一个正整数:");
10 scanf("%ld", n);
11 }while(n <= 0);
12 k = 1;
13 for (i = 1; n >= 0; i++) {
14 if (i % 2 = 1) {
15 num= num+ (n % 10) * k;
16 k = k * 10;
17 }
18 n = n / 10;
19 }
20 printf("新数据为: %d \n",num);
21 return 0;
22 }
第4题
阅读以下函数说明和C代码,将C程序中(1)~(5)空缺处的语句填写完整。
[说明]
函数int Toplogical(LinkedWDigraphG)的功能是对图G中的顶点进行拓扑排序,并返回关键路径的长度。其中,图G表示一个具有n个顶点的AOE-网,图中顶点从1~n依次编号,图G的存储结构采用邻接表表示,其数据类型定义如下。
例如,某AOE-网如图6-22所示,其邻接表存储结构如图6-23所示。
[函数]
第5题
阅读以下说明和C程序代码,将程序补充完整。
[说明]
下面C程序代码的功能是:对于输入的一个正整数n(100≤n<1000),先判断其是否是回文数(正读反读都一样的数)。若不是,则将n与其反序数相加,再判断得到的和数是否为回文数,若还不是,再将该和数与其反序数相加并进行判断,依此类推,直到得到一个回文数为止。例如,278不是回文数,其反序数为872,相加后得到的1150还不是回文数,再将1150与其反序数511相加,得到的1661是回文数。
函数int isPalm(long m)的功能是:将正整数m的各位数字取出存入数组中,然后判断其是否为回文数。若m是回文数则返回1,否则返回0。
[C程序代码]
include<stdio.h>
include<stdlib.h>
int isPalm(long m)
{
int i=0, k=0;
char str[32];
while(m>0) {
str[k++]= _______ +'0';
m=m/10;
}
for(i=0; i<k/2; i++)
if(str[i]!=str _______ )return 0;
return 1;
}
int main()
{
long n, a, t;
printf("input a positive integer: "); scanf("%ld", &n);
if(n<100||n>=1000)return -1;
while(_______ ) {
printf("%id->", n);
for(a=0, t=n; t>0; ){
a= _______ *10+t%10; t=t/10;
n= _______ ;
printf("%id\n", n);
system("pause"); return 0;
第6题
阅读以下说明和C程序代码,将应填入______处的语句写在答题纸的对应栏内。
[说明]
函数MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数n转换成 B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:
define MAXSIZE 32
typedef struct{
int * elem; /* 栈的存储区 */
int max; /* 栈的容量,即栈中最多能存放的元素个数 */
int top; /* 栈顶指针 */
}Stack;
[C代码]
int InitStack(Stack * S,int n) / * 创建容量为n的空栈 */
{ S->elem=(int *)malloc(n * sizeof(int));
if(S->elem==NULL)return-1;
S->max=n; (1)=O;return 0;
}
int Push(Stack * S,int item) / * 将整数item压入栈顶 * /
{ if(S->top==S->max){ printf(“Stack is full! \n”);return-1;}
(2)=item;return 0;
}
int StackEmpty(StackS) {return (! S.top)? 1:0;} / * 判断栈是否为空 * /
int Pop(Stack *S ) / * 栈顶元素出栈 * /
{ if(! S->top){printf(“Pop an empty stack! \n”);return-1;}
return (3);
}
void MultibaseOutput(long n,int B)
{ int m;StackS;
if (InitStack(&S,MAXSIZE)){printf(“Failure! \n”);return;}
do {
if(Push(&S, (4) )){printf(“Failure! \n”);return;}
n=(5);
}while(n!=0);
while(! StackEmpty(S)){ / * 输出B进制的数 * /
m=Pop(&S);
if(m<10)printf(“%d”,m); / * 小于10,输出数字 * /
else printf(“%c”,m+55); / * 大于或等于10,输出相应的字符 * /
}
printf(“\n”);
}
第7题
●试题八
阅读以下说明及Visual Basic部分程序代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
本程序是一个可进行数制转换的应用程序,图1所示是其运行界面。txtDec为TextBox控件名,Lblkes为转换结果labe1控件名。
【程序代码】
Option Explicit
Private Function convert(pintDec As Intege,pintS As Integer)As String
Dim intCt As Integer,intR As Integer
Dim strCov As String,strRes As String
intR=pintDec Mod pintS
Do While (1)
strCov=strCov & Str(intR)
(2)
intR=pintDec Mod pintS
Loop
For intCt= (3) To 1 Step-1
strRes=strRes & Mid(strCov,intCt,1)
Next intCt
convert=strRes
End Function
Private Sub cmdQuit_Click()′退出
Unload Me
End Sub
Private Sub optBin_Click()′二进制
lblRes.Caption="转换结果:"& (4)
End Sub
Private Sub optHex_Click()′十六进制
lblRes.Caption="转换结果:"& (5)
End Sub
Private Sub optOct_Click()′八进制
lblRes.Caption="转换结果:"&Oct(Val(txtDe
C.Text))
End Sub
第8题
阅读以下应用说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。
【应用说明】
某应用程序可选择打开用户指定的文本文件,将其内容显示在指定的文本框内供用户编辑,并将编辑后的结果保存在用户指定的文件中。运行时的窗口如图6-1所示,其中有6个标签、一个驱动器列表框、一个目录列表框、一个文件列表框、一个文件类型组合框、一个文件编辑文本框、一个文件名文本框以及两个命令按钮。
该程序的开发要求如下。
(1)通过驱动器列表框(Drivel)、目录列表框(Dirl)和文件列表框(Filel),选择文件。
(2)文件类型组合框(Cmb_type)设置为下拉式列表框,其中有三个供选项,分别为“所有文件(*.*)”、“文本文件(*.txt)”和“可执行文件(*.exe)”。在文件列表框中列出的文件类型会自动与文件类型组合框中选择的文件类型相匹配。
(3)在文件列表框中单击一个文件名时,该文件名会显示在文件名文本框 (Txt filename)中。
(4)在文件列表框中双击一个文件名时,若是文本文件,则在文件编辑文本框 (Txt file)中显示该文件的内容并可进行编辑;若不是文本文件,则弹出一个对话框,提示“请选择文本文件!”。
(5)对于编辑后的文本文件,可在文件名文本框中输入新的文件名,并单击命令按钮(Cmd save)进行保存。
【Visual Basic程序代码】
Private Sub Form_Load()
Cmb_type.Addltem "所有文件(*.*)"
Cmb_type.Addltem "文本文件(*.txt)"
Cmb_type.Addltem "可执行文件(*.exe)"
Cmb_type.ListIndex=0
Filel.Pattern="*.*": Txt_filename.Text=" "
Txt_file.Text= " "
End Sub
Private Sub Dirl Change()
Filel.Path=(1)
End Sub
Private Sub Drivel Change()
Dirl.Path=Drivel.Drive
End Sub
Private Sub Cmb_type_click()
Select Case Cmb_type.(2)
Case 0
Filel.Pattern="*.*"
Case 1
Filel.Pattern="*.txt"
Case 2
Filel.Pattern="*.exe"
End Select
End Sub
Private Sub Cmd_save_Click()
usrFile=GetFileName() '函数GetFileName获得要保存的文件名
Open usrFile For Output As 1 '定义usrFile为1号输出文件
Print 1,Txt file.Text '输出到1号文件
Close 1
End Sub
Private Sub Filel_DblClick()
If right(Filel.FileName,3)<>(3)Then
MsgBox "请选择文本文件!"
Exit Sub
End If
usrFile=GetFileName() '函数GetFileName获得要打开的文件名
Open usrFile For Input As 1 '定义usrFile为1号输入文件
Txt_file.Text=" "
DO While (4) EOF(1)
Line Input l,fContext '从1号文件读入一行
Txt_file.Text;Txt file.Text +(5)+vbCrLf
Loop
Close 1
End Sub
'其他代码略
第9题
阅读以下说明及Visual Basic 程序代码,将应填入(n)处的字句写在对应栏内。
[程序5.1说明]
下列程序运行时,当单击窗体后,从键盘输入一个字符,判断该字符是字母字符、数字字符还是其他字符,并做相应的显示。窗体上无任何控件,并禁用Ase和Chr函数,Select Case语句中禁用枚举值。
[Visual Basic代码]
Private Sub Form. Load ()
Dim x As String*1
X=(1) (“请输入单个字符”,“字符”)
Select Case UCase ((2) )
Case (3)。
Print X+“是字母字符”
Case (4)
Print X+ “是数字字符”
Case Else
Print X+“是其他字符”
End Select
[程序5.2说明]
在窗体上画一个名称为Timer1的计时器和一个名称为Labe11的标签。当运行程序后,将在标签中显示当前时间的数字时钟(包括时:分:秒)。
[Visual Basic代码]
Private Sub Fom_Load ()
Timer1.Interval=1000
EndSub
Private Sub Timer1_ timer() (5)
EndSub
第10题
●试题八
阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。
【程序】
#include<stdio.h>
main()
{FILE*fp;
charstr[100];inti=0;
if((fp=fopen("text.txt" (1) ))==NULL)
{printf("can't open this file.\n");exit(0);}
printf("input astring:\n");gest(str);
while(str[i])
{if(str[i]>=′a′ && str[i]<=′z′)
str[i]= (2) ;
fputc(str[i], (3) );
i++;
}
fclose(fp);
fp=fopen("test.txt", (4) );
fgets(str,100,fp);
printf("%s\n",str);
(5) ;
}
为了保护您的账号安全,请在“赏学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!