题目内容 (请给出正确答案)
[主观题]

阅读以下说明和流程图,回答问题将解答填入对应栏内。[说明] 已知递推数列:a(1)=1,a (2s)= a (s),a

阅读以下说明和流程图,回答问题将解答填入对应栏内。

[说明]

已知递推数列: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)循环开始的说明按照“循环变量名:循环初值,循环终值,增量”格式描述。

[流程图]

阅读以下说明和流程图,回答问题将解答填入对应栏内。[说明] 已知递推数列:a(1)=1,a (2s)

查看答案
如搜索结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能会需要:
您的账号:
发送账号密码至手机
发送
更多“阅读以下说明和流程图,回答问题将解答填入对应栏内。[说明] …”相关的问题

第1题

阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。【说明】 以下程序的功能是计算正方体、球

阅读以下说明和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;

}

点击查看答案

第2题

阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。【说明】 本程序从若干个原始文件合并

阅读下列程序说明和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;

点击查看答案

第3题

阅读以下技术说明和C语言代码,根据要求回答问题1至问题6。 【说明】 有两个进程(编号分别为0和1)需

阅读以下技术说明和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字以内的文字简要说明。

点击查看答案

第4题

阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。 [说明] 某班有n个同学,学号分别为1,

阅读以下说明和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 );

}

点击查看答案

第5题

阅读以下函数说明和C语言函数,将应填入(n)处的字句填写在对应栏内。[函数2.1说明] 函数fun1 (int

阅读以下函数说明和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" );

}

}

点击查看答案

第6题

阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。【说明】 该程序的功能是从文件IN.DAT中读

阅读以下说明和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)

}

点击查看答案

第7题

阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。 【说明2.1】 L为一个带头结点的循环链

阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。

【说明2.1】

L为一个带头结点的循环链表。函数deletenode(LinkList L, int c)的功能是删除L中数据域data的值大于c的所有结点,并由这些结点组建成一个新的带头结点的循环链表,其头指针作为函数的返回值。

【函数2.1】

LinkList deletenode(LinkList L, int c)

{

LinkList Lc,p,pre;

pre=L;

p=(1);

Lc=(LinkList)malloc(sizeof(ListNode) );

Lc->next=Lc

while(p!=L)

if(p->data>c)

{

(2);

(3);

Lc->next=p;

p=pre->next;

}

else

{

pre=p;

p=pre->next;

}

return Lc;

}

【说明2.2】

递归函数dec_to_k_2(int n, int k)的功能是将十进制正整数n转换成k<2≤k≤9)进制数,并打印。

【函数2.2】

dec_to_k_2(int n, int k)

{ /*将十进制正整数n转换成k(2≤k≤9)进制数*/

if(n!=0)

{

dec_to_k_2((4),k);

printf("%d",(5));

}

}

点击查看答案

第8题

阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。 [函数2.1说明] 下面程序的功能是:将

阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。

[函数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",&n);

printf("Enter new base:");scanf("%d",&base);

do{c[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;

}

点击查看答案

第9题

阅读下列说明、流程图和算法,将应填入(n)处的字句写在对应栏内。 【流程图说明】 下图所示的流程图5.

阅读下列说明、流程图和算法,将应填入(n)处的字句写在对应栏内。

【流程图说明】

下图所示的流程图5.3用N-S盒图形式描述了数组Array中的元素被划分的过程。其划分方法;以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,而大于基准数的元素向高下标端移动。当划分结束时,基准数定位于Array[i],并且数组中下标小于i的元素的值均小于基准数,下标大于i的元素的值均大于基准数。设数组A的下界为low,上界为high,数组中的元素互不相同。

【算法说明】

将上述划分的思想进一步用于被划分出的数组的两部分,就可以对整个数组实现递增排序。设函数int p(int Array[],int low,int high)实现了上述流程图的划分过程并返回基准数在数组Ar ray中的下标。递归函数void sort(int Array[],int L,int H)的功能是实现数组Array中元素的递增排序。

【算法】

void sort(int Array[],int L,int H){

if (L<H) {

k=p(Array,L,H);/*p()返回基准数在数组Array中的下标*/

sort((4));/*小于基准数的元素排序*/

sort((5));/*大于基准数的元素排序*/

}

}

点击查看答案

第10题

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。【说明】 编写程序,利用带参数的主

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

【说明】

编写程序,利用带参数的主函数main(),实现二进制文件的复制。比如,若该程序已生成可执行文件filebin.exe,在DOS操作系统命令状态下键入如下命令行:

filebin f0.fil f1.fil

则实现将已存在的二进制文件f1.fil依原样复制给名为f0.fil的二进制文件。

【函数】

include<stdio.h>

void fcopy(FILE *fout, FILE *fin)

{

char k;

do{

k=fgetc((1));

if(feof(fin))

break;

fputc((2));

}while(1);

}

void main(int argc,char *argv[])

{

FILE *fin,*fout;

if(argc!=(3))

return;

if((fin=fopen(argv[2],"rb"))==NULL)

return;

fout=(4);

fcopy((5));

fclose(fin);

fclose(fout);

}

点击查看答案
热门考试 全部 >
相关试卷 全部 >
账号:
你好,尊敬的上学吧用户
发送账号至手机
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
谢谢您的反馈

您认为本题答案有误,我们将认真、仔细核查,
如果您知道正确答案,欢迎您来纠错

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
上学吧
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反上学吧购买须知被冻结。您可在“上学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
上学吧
点击打开微信