在Visual Basic中,公用标准模块文件的扩展名是(10)。A.frm B.cis C.vbp D.bas
在Visual Basic中,公用标准模块文件的扩展名是(10)。 A.frm B.cis
C.vbp D.bas
在Visual Basic中,公用标准模块文件的扩展名是(10)。 A.frm B.cis
C.vbp D.bas
第1题
阅读以下程序说明和C程序,将程序段中(1)~(7)空缺处的语句填写完整。
【说明】
【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】
define N 1024
define M 10
int b [N+M-1]
int equal(int k, int j int m) {
int i;
for(i=0; i<m; i++
if ( b[ k + i] (1) )
return 0;
return 1; }
int exchange (int k, int m, int v){
while ( b[ k + m - 1 ) == v ) {
b[ kncm--i]=! v (2);
}
(3)=v;
return k;
}
init ( iht v) {
int k
for( k = 0;K = N + M - 1;k++)
b[k] = v;
}
main ( ) {
int m, v, k, n, j;
printf ('Enter m (l<m<10) , v v=0, v=1)\ n") ;
scanf (" %d%d , &m, &v);
n = 0x01 << m;
init (!v);
k=0;
while((4)< n)
for (j=0;j<k;j++)
if (equal (k, j, m)) {
k=exchange (k, m, v)
j=(5);
}
for (k= 0 ;k<n ;k++ )
print{ (" %d\ n" , b[k]) ;
}
}
【C程序2】
include<stdio. h>
define N 7
define S 15
int w[N+1] = {0, 1, 4, 3, 4, 5, 2, 7};
int knap (int S, int n){
if (S == 0)
return 1;
if (s<0 || (s>0 && n<1))
return 0;
if ((6))) {
printf( "4d", w[n]);
return 1;
}
return (7)
}
main ( ) {
if (knap (S, N)
printf("OK:\n");
else
printf("NO!\n")
}
第2题
阅读以下说明和Java以及HTML代码,将应填入(n)处的字句写在对应栏内。
[说明]
编写一个Applet程序,接受HTML文件传递的整数参数,根据该参数指定Applet中文本框的长度。编写对应的HTML文件运行这个Applet。
[Java 代码]
import java. applet.*;
import java. awt.*;
public class chuangdics extends (1)
{
TextField tf=new TextField ();
int tfLength=0;
public void init()
{
try
{
tfLength=Integer. parseInt( (2) ("length"));
tf. setColumns (tfLength);
add (tf);
}
catch (NumberFormatException nfe)
{
tf. (3) ("HTML 文件传人的参数格式错误。");
add(tf);
}
}
}
[HTML 代码]
<html>
<head>
<title>(4)</title>
</head>
<body>
<hr>
<applet code=chuangdics width=700 height=150>
<param name=length value=20>
(5)
<hr>
</body>
</htmI>
第3题
阅读以下说明Visual Basic代码,回答问题1~2,将解答填入对应的栏内。
[说明]
本程序实现的功能是判断指定的文本文件中是否包含指定的字符串,并且如果包含则返回其第一次出现的位置(行号、列号)。程序运行界面如下图所示,用户只要通过驱动器列表框、目录列表框选定文件夹,文件列表框会自动列出该文件夹下所有文本文件名称,选中其中某个文件,再输入目标字符串并且单击“查找”按钮,就能看到查找的结果。
在开发过程中,驱动器列表框名为Drive1,目录列表框名为Dirl,文件列表框名为File1,目标字符串输入框名为Text1,“查找”按钮名为Command1。
[Visual Basic 代码]
Private Sub Drivel_Change()
Dirl. Path=(1) '更新目录列表框的路径
End Sub
Private Sub Dirl_Change( )
(2)= Dirl. Path '更新文件列表框的路径 End Sub
Private Sub Commandl_Click( )
Dim fso, a As Object
Dim i, j As Integer
If (3) = "" Then '判断是否已经选中某个文件
MsgBox "请选择一个文件文件!"
(4) '退出事件过程
End If
'创建文件系统对象以及文本流对象
Set fso = CreateOhjecl( "Scripting. FileSystemOhject" )
Set a = fso. OpenTextFile( Dirl. Path & "/" &(3))
i=1
Do While (5)<> True '逐行读取文件,直至文件末尾
strLine = a. ReadLine
j = InStr(1,(6))'返回目标字符串在文件这一行中的位置
If j > 0 Then '如果目标字符串在这一行出现,则返回其位置
MsgBox "字符串第一次出现的位置是" & "(" & i & "," &j & "),,"
(4) '退出事件过程
End If
i:i+l
Loop
MsgBox "字符串在文件中不出现,"
End Sub
第4题
阅读以下说明和流程图,回答问题将解答填入对应栏内。
[说明]
已知递推数列:a(1)=1,a (2s)= a (s),a(2s+1)=a (s)+a (s+1)(s 为正整数)。试求该数列的第n项与前n项中哪些项最大?最大值为多少?
算法分析:该数列序号分为奇数或偶数两种情况做不同递推,所得数列呈大小有规律的摆动。设置a数组,赋初值a (1)=1。根据递推式,在循环中分项序号s (2~n)为奇数或偶数作不同递推:每得一项 a (s),即与最大值max 作比较,如果a (s)>max,则max=a(i)。最后,在所有项中搜索最大项(因最大项可能多于一项),并打印最大值max。
[问题]
将流程图中的(1)~(5)处补充完整。
注:流程图中(1)循环开始的说明按照“循环变量名:循环初值,循环终值,增量”格式描述。
[流程图]
第5题
阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。
【说明】
以下程序的功能是计算正方体、球体和圆柱体的表面积和体积并输出。
程序由4个类组成:类cube、sphere和cylinder分别表示正方体、球体和圆柱体;抽象类 container为抽象类,提供了两个纯虚拟函数surface_area()和volum(),作为通用接口。
【C++程序】
include<iostream.h>
define pi 3.1416
class container{
protected:
double radius;
public:
container(double radius) {container::radius=radius;}
virtual double surface_area()=0;
virtual double velum()=0;
};
class cube:(1){ //定义正方体类
public:
cube(double radius):container(radius){};
double surface_area () {return 6 * radius * radius;}
double volum() {return radius * radius * radius;}
};
class sphere:(2){ //定义球体类
public:
sphere(double radius): container(radius){};
double surface_area() { return (3);}
double volum() {return pi * radius * radius * radius * 4/3;}
};
class cylinder:(4){ //定义圆柱体类
double height;
public:
cylinder(double radius,double height):container(radius)
{
container::height=height;
}
double surface_are a () { return 2 * pi * radius * (height+radius); }
double volum () {return (5);}
};
void main()
{
container * p;
cube obj1 (5);
sphere obj2(5);
cylinder obj3(5,5);
p=&obj1;
cout<<“正方体表面积”(<<p->surface_area()<<end1;
cont<<“正方体体积”<<p->volume()<<end1;
p=&obj2;
cout<<“球体表面积”<<p->surface_area()<<end1;
cout<<“球体体积”<<p->volume()<<end1;
p=&obj3;
cout<<“球体表面积”<<p->surface_area()<<end1;
cout<<“球体体积”<<p->volume()<<end1;
}
第6题
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
本程序从若干个原始文件合并成的合并文件中恢复出其中一个或全部原始文件。所有文件均作为二进制文件进行处理。合并文件中先顺序存储各原始文件,然后顺序存储各原始文件的控制信息,即文件名、文件长度和在合并文件中的位置(偏移量)。其结构为:
typedef struct {char fname [256] /*原始文件名*/
long length; /*原始文件长度(字节数)*/
long offset; /*原始文件在合并文件中的位置(偏移量)*/
}FileInfo;
在合并文件最后存储如下一个特殊的标志信息作为合并文件的结束标记:
FileInfo EndFlag={"Combined File",0,_offset};
其中_offset是第一个原始文件的控制信息在合并文件中的位置(偏移量)。
启动本程序的命令行的格式是:
程序名 合并文件名 [原始文件名]
如果不指定原始文件名,默认恢复合并文件中的所有原始文件。
程序中涉及的部分文件操作的库函数简要说明如下:
int fread(void * buffer,int size,int count,FILE * fbin):从二进制文件流fbin中读取 count块长度为size字节的数据块到buffer指向的存储区。返回值为实际读取的数据块数。
int fwrite(void * buffer,int size,int count,FILE * fbin):各参数和返回值的意义与fread相同,但对文件进行写操作。
int fseek(FILE * fbin,long offset,int position):将文件流fbin的读/写位置以position为基准移动offset字节。position的值可以是SEEK_SET(文件头),SEEK_CUR(当前位置), SEEK_END(文件尾);offset为正,表示向文件尾方向移动,为负表示向文件头方向移动,为零表示到基准位置。
long ftell(FILE * fbin):返回文件流fbin的当前读/写位置(相对于文件头的偏移量)。上述偏移量均以字节为单位,即偏移字节数。
【程序】
include <stdio. h>
include <string. h>
typedef struct { char fname[256];long lengt;long offset;
} Filelnfo;
void copyfile( FILE*fin, FILE * fout,int fsize)
{ char buf[1024];int siz=1024;
while(fsize !=0){ /*每次复制siz个字节,直至复制完fsize个字节*/
if(siz >fsize) (1);
fread(buf,1,siz,fin); fwrite(buf,1,siz,fout);
fsize=(2);}
}
int dofile(FILE * fin,Filelnfo * inp)
{ long offset;
FILE * fout;
if (( fout = fopen ( inp - > fname ,"wb" ))==NULL) {
printf("创建文件错误: %s\n" , inp -> fname);
return 1;
}
offset=(3); /*保留合并文件读/写位置*/
fseek((4)); /*定位于被恢复文件首*/
copyfile ( fin, fout, inp - > length);
fclose(fout);
printf("\n ---文件名: %\n 文件长: %ld. \n",inp -> fname, inp -> length);
(5); /*恢复合并文件读/写位置*/
return 0;
}
int main( int argc, char * argv[ ])
{ Filelnfo finfo;
char fname[256] ;FILE * fcmbn;
if(argc <2) { printf("输入合并文件名:" ) ;scanf("%s" ,fname);
else strcpy(fname,argv[1]);
if((fcmbn = fopen(fname,"rb" )) == NULL) {
printf("文件打开错误: %s\n" ,fname);return 1;
}
fseek(fcmbn, -sizeof(Filelnfo),SEEK_END); /*定位于合并文件末尾的标志信息*/
fread(&finfo,1,sizeof(Filelnfo) ,fcmbn);
if(finfo. length!=0||strcmp(finfo. fnane," CombinedFile" )){
printf("指定的文件不是合法的合并文件\n");
fclose (fcmbn); return 2;
}
fseek(fcmbn,finfo. offset,SEEK_SET); /*定位于首个原始文件的控制信息*/
for(;;){ /*恢复一个(argc>2)或全部(argc=2)原始文件*/
fread ( &finfo,1, sizeof (Fitelnfo), fcmbn);
if(finfo, length ==0) break;
if (argc> 2 && strcmp(finfo. fname,argv[2] )) continue;
if (dofile ( fcmbn, &finfo)!=0) break;
}
fcolse(fcmbn);return 0;
第7题
阅读以下技术说明和C语言代码,根据要求回答问题1至问题6。
【说明】
有两个进程(编号分别为0和1)需要访问同一个共享资源。为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个进程访问该共享资源。以下【C代码1】给出了一种实现方法。
【C代码1】
int flag[2]; /+flag数组,初始化为FALSE*/
Enter_Critical_Section(int my_task_id, int other_task_id)
{ while (flag[other_task_id]==TRUE); /*空循环语句*/
flag[my_task_id]=TRUE;
}
Exit_Critical_Section(int my_task_id, int other_task_id)
{ flag[my_task_id]=FALSE;
}
当一个进程要访问临界资源时,就可以调用【C代码1】给出的这两个函数。【C代码2】给出了进程0的一个例子。
【C代码2】
Enter_Critical_Section(0,1);
……使用这个资源……
Exit_Critical_Section(0,1);
……做其他的事情……
什么是临界资源(critical resource)?请用100字以内的文字简要说明。
第8题
阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。
[说明]
某班有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", &n );
printf (" 请输入定和值: ");
scanf ( "%d", &m );
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 );
}
第9题
阅读以下函数说明和C语言函数,将应填入(n)处的字句填写在对应栏内。
[函数2.1说明]
函数fun1 (int m, int k, int xx [])的功能是:将大于整数m且紧靠m的k个素数存入数组xx中传回。例如:若输入17,5,则应输出:19,23,29,31,37。
[函数2.1]
fun1 (int m, int k, int xx [] )
{
inti, j, s=0;
for ( i=m+1; k>0; i++ )
{for (j=2; j<i; j++ )
if ( i %j=0 )
(1)
if( i==j )
{
(2)
k--; }
}
}
[函数2.2说明]
函数void fun 2 ()的功能是:打印出杨辉三角形(要求打印出10行)。
[函数2.2]
void fun2 ( )
{
int i, j;
int a[10][10];
printf ("\n" );
for (i=0; i<10; i++
{a [i] [0]=1;
(3))
for (i=2; i<l0; i++ )
for (j=1; j<i; j++)
(4)
for (i=0; i<10; i++ )
{for (j=0; j<=i; j++ )
(5)
printf ( "\n" );
}
}
第10题
阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
该程序的功能是从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后把结果xx输出到文件OUT6.DAT中。
例如:原文:You He Me
I am a student.
结果:Me He You
student a am I
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
【函数】
include<string.h>
include<conio.h>
include<ctype.h>
include<stdio.h>
char xx[50] [80];
int maxline=0; /*文章的总行数*/
int ReaaDat(void);
void WriteDat(void);
void StrOL(void)
{
char * p1, * p2,t[80];
int i;
for(i=0;i<maxline;i++)
{ p1=xx[i];t[0]=0;
while(*p1)p1++;
while(p1>=xx[i])
{ while(!isalpha(*p1) &&p1!=xx[i])p1--;
p2=p1;
while((1))p1--;
if(p1==xx[i])
if(isalpha(*p1))p1--;
else if(!isalpha(*(p1+1)))break;
p2++;
(2);
strcat(t, p1+1);
strcat(t," ");
}
strcpy(xx[i],t);
}
}
void main( )
{
if((3)) {
printf("数据文件in.dat不能打开!\n\007" );
return;
}
StroL();
writeDat();
getch();
} int ReadDat(void)
{
FILE * fp;
int i =0;
char * p;
if((fp=fopen("e:\a\in.dat"," r" ))==NULL)return 1;
while(fgets(xx[i],80,fp)!=NULL) {
p=strchr(xx[i],'\n')
if(p)*p=0;
i++;
}
maxline=(4)
fclose(fp);
return 0;
}
void WriteDat(void)
{
FILE * fp;
int i;
fp=fopen("e:\\a\\out6,dat","w");
for(i=0;i<(5);i++){
printf("%s\n",xx[i]);
fprintf(fp,"%s\n",xx[i])
}
fclose(fp)
}
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!