搜题
网友您好,请在下方输入框内输入要搜索的题目:
搜题
题目内容 (请给出正确答案)
提问人:网友zthcrh 发布时间:2022-01-06
[主观题]

●试题四 阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明4.1】 假设

●试题四

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

【说明4.1】

假设两个队列共享一个循环向量空间(如图1-2所示),其类型Queue2定义如下:

typedef struct{

DateType data [MaxSize];

int front[2],rear[2];

}Queue2;

对于i=0或1,front[i]和rear[i]分别为第i个队列的头指针和尾指针。函数EnQueue(Queue2*Q,int i,DateType x)的功能是实现第i个队列的入队操作。

【函数4.1】

int EnQueue(Queue2*Q,int i,DateType x)

{∥若第i个队列不满,则元素x入队列,并返回1;否则,返回0

if(i<0‖i>1)return 0;

if(Q->rear[i]==Q->front[ (1) ]

return 0;

Q->data[ (2) ]=x;

Q->rear[i]=[ (3) ];

return 1;

}

【说明4.2】

函数BTreeEqual(BinTreeNode*T1,BinTreeNode*T2)的功能是递归法判断两棵二叉树是否相等,若相等则返回1,否则返回0。函数中参数T1和T2分别为指向这两棵二叉树根结点的指针。当两棵树的结构完全相同,并且对应结点的值也相同时才被认为相等。

已知二叉树中的结点类型BinTreeNode定义为:

struct BinTreeNode{

char data;

BinTreeNode*left,*right;

};

其中data为结点值域,left和right分别为指向左、右子女结点的指针域,

【函数4.2】

int BTreeEqual(BinTreeNode*T1,BinTreeNode*T2)

{

if(T1==NULL && T2==NULL)return 1;∥若两棵树均为空,则相等

else if((4) )return 0;∥若一棵为空一棵不为空,则不等

else if((5) )return 1;∥若根结点值相等并且左、右子树

∥也相等,则两棵树相等,否则不等

else return 0;

}

简答题官方参考答案 (由简答题聘请的专业题库老师提供的解答)
查看官方参考答案
更多“●试题四 阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明4.1】 假设”相关的问题
第1题
●试题四 阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 函数Qui

●试题四

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

【说明】

函数QuickSort是在一维数组A[n]上进行快速排序的递归算法。

【函数】

void QuickSort(int A[],int s,int t)

{int i=s,j=t+1,temp;

int x=A[s];

do{

do i++;while (1) ;

do j--;while(A[j]>x);

if(i<j){temp=A[i]; (2) ; (3) ;}

}while(i<j);

A[a]=A[j];A[j]=x;

if(s<i-1) (4) ;

if(j+1<t) (5) ;

}

点击查看答案
第2题
●试题八 阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 以下程

●试题八

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

}

点击查看答案
第3题
●试题三 阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 函数mov

●试题三

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

【说明】

函数move(int*a,int n)用于整理数组a[]的前n个元素,使其中小于0的元素移到数组的前端,大于0的元素移到数组的后端,等于0的元素留在数表中间。

令a[0]~a[low-1]小于0(初始为空);a[low]~a[i-1]等于0(初始为空);a[i]~a[high]还未考察,当前考察元素为a[i]。a[high+1]~a[n-1]大于0(初始为空)。

【函数】

move(int*a,int n)

{

int i,low,high,t;

low=i=0;high=n-1;

while((1) )

if(a[i]<0)

{

t=a[i];a[i]=a[low];a[low]=t;

(2) ;i++;

}

else if((3) )

{t=a[i];a[i]=a[high];a[high]=t;

(4) ;

}

else (5) ;

}

点击查看答案
第4题
●试题四 阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 将一正整数

●试题四

阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列,新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面),最后调用writeDat()函数的新序列输出到文件out.dat中。

在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。

例:序列 {6,8,9,1,2,5,4,7,3}

经重排后成为{3,4,5,2,1,6,8,9,7}

【函数】

#include<stdio.h>

#include<conio.h>

void jsValue(int a[10][9])

{int i,j,k,n,temp;

int b[9];

for(i=0;i<10;i++)

{temp=a[i][0];

k=8;n=0;

for(j=8;j=0;j--)

{if(temp<a[i][j]) (1) =a[i][j];

if(temp>a[i][j]) (2) =a[i][j];

if(temp=a[i][j]) (3) =temp;

}

for(j=0;j<9;j++)a[i][j]=b[j];

}

}

void main()

{

int a[10][9]={{6,8,9,1,2,5,4,7,3},{3,5,8,9,1,2,6,4,7},

{8,2,1,9,3,5,4,6,7},{3,5,1,2,9,8,6,7,4},

{4,7,8,9,1,2,5,3,6},{4,7,3,5,1,2,6,8,9},

{9,1,3,5,8,6,2,4,7},{2,6,1,9,8,3,5,7,4},

{5,3,7,9,1,8,2,6,4},{7,1,3,2,5,8,9,4,6}

};

int i,j;

(4) ;

for(i=0;i<10;i++){

for(j=0;j<9;j++){

printf("%d",a[i][j]);

if((5) )printf(",");

}

printf("\n");

}

getch();

}

点击查看答案
第5题
●试题一 阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。 【函数1.1说明】

●试题一

阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。

【函数1.1说明】

函数strcpy(char*to,char*from)将字符串from复制到字符串to。

【函数1.1】

void strcpy(char*to,char*from)

{while((1 ) );}

【函数1.2说明】

函数merge(int a[ ],int n,int b[ ],int m,int *c)是将两个从小到大有序数组a和b复制合并出一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。

【函数1.2】

void merge(int a[ ],int n,int b[ ],int m,int *c)

{ int i,j;

for(i=j=0;i<n && j<m;)

*c++=a[i]<b[j]? a[i++]:b[j++];

while((2) )*c++=a[i++];

while((3) )*c++=b[j++];

}

【函数1.3说明】

递归函数sum(int a[ ],int n)的返回值是数组a[ ]的前n个元素之和。

【函数1.3】

int sum(int a[ ],int n)

{ if(n>0)return (4) ;

else (5) ;

}

点击查看答案
第6题
●试题二 阅读下列函数说明和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) );

}

}

点击查看答案
第7题
●试题二 阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 函数pri

●试题二

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

【说明】

函数print(BinTreeNode*t;DateType &x)的功能是在二叉树中查找值为x的结点,并打印该结点所有祖先结点。在此算法中,假设值为x的结点不多于一个。此算法采用后序的非递归遍历形式。因为退栈时需要区分右子树。函数中使用栈ST保存结点指针ptr以及标志tag,Top是栈顶指针。

【函数】

void print(BinTreeNode*t;DateType &x){

stack ST;int i,top;top=0;∥置空栈

while(t!=NULL &&t->data!=x‖top!=0)

{while(t!=NULL && t->data!=x)

{

∥寻找值为x的结点

(1) ;

ST[top].ptr=t;

ST[top].tag=0;

(2) ;

}

if(t!=Null && t->data==x){∥找到值为x的结点

for(i=1; (3) ;i++)

printf("%d",ST[top].ptr->data);}

else{

while((4) )

top--;

if(top>0)

{

ST[top].tag=1;

(5) ;

}

}

}

点击查看答案
第8题
●试题三 阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 函数dif

●试题三

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

【说明】

函数diff的功能是:根据两个由整数(都大于-32768)按升序构成的单链表L1和L2(分别由A,B指向)构造一个单链表L3(由*r指向),要求L3中的所有整数都是L1,并且不是L2中的整数,还要求L3中的所有整数都两两不等。

【函数】

#include<mallo

C.h>

typedef struct node{

int d;

struct node *next

}Node;

void diff(Node *A,Node *B,Node **r)

{

int lastnum;

Node*p;

*r=NULL;

if(!A)return;

while((1) )

if(A->d<B->d)

{

lastnum=A->d;

p=(Node*)malloc(sizeof(Node));

p->d=lastnum;

p->next=*r; (2) ;

do

A=A->next;

while((3) );

}

else if(A->d>B->d)

B=B->next;

else{

(4) ;

lastnum=A->d;

while (A && A->d==lastnum)A=A->next;

}

while(A)

{

lastnum=A->d;

p=(Node*)malloc(sizeof(Node));

p->d=lastnum;

(5) ;

*r=p;

while (A && A->d==lastnum) A=A->next;

}

}

点击查看答案
第9题
●试题三 阅读下列说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 本题给出四

●试题三

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

【说明】

本题给出四个函数,它们的功能分别是:

1.int push(PNODE *top,int e)是进栈函数,形参top是栈顶指针的指针,形参e是入栈元素。

2.int pop(PNODE *top,int *e)是出栈函数,形参top是栈顶指针的指针,形参e作为返回出栈元素使用。

3.int enQueue(PNODE *tail,int e)是入队函数,形参tail是队尾指针的指针,形参e是入队元素。

4.int deQueue(PNODE *tail,int *e)是出队函数,形参tail是队尾指针的指针,形参e作为返回出队元素使用。

以上四个函数中,返回值为0表示操作成功,返回值为-1表示操作失败。

栈是用链表实现的;队是用带有辅助结点(头结点)的单向循环链表实现的。两种链表的结点类型均为:

typedef struct node{

int value;

struct node *next;

}NODE,*PNODE;

【函数1】

int push(PNODE *top,int e)

{

PNODE p=(PNODE)malloc (sizeof(NODE));

if (!p) return-1;

p-> value =e;

(1) ;.

*top=p;

return 0;

}

【函数2】

int pop (PNODE *top,int *e)

{

PNODE p=*top;

if(p==NULL)return-1;

*e=p->value;

(2) ;

free(p);

return 0;

}

【函数3】

int enQueue (PNODE *tail,int e)

{PNODE p,t;

t=*tail;

p=(PNODE)malloc(sizeof(NODE));

if(!p)return-l;

p->value=e;

p->next=t->next;

(3) ;

*tail=p;

return 0;

}

【函数4】

int deQueue(PNODE *tail,int *e)

{PNODE p,q;

if((*tail)->next==*tail)return -1;

p=(*tail)->next;

q=p->next;

*e=q->value;

(4) =q->next;

if(*tail==q) (5) ;

free(q);

return 0;

}

点击查看答案
第10题
●试题二 阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明2.1】 以下

●试题二

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

【说明2.1】

以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。

【函数2.1】

void fun1(int a[])

{int i,j,k,r,x,m;

for(i=2;i<=n;i++)

{ (1) ;

k=1;r=i-1;

while(k<=r)

{m=(k+r)/2;

if(x<a[m])r=m-1;

else (2) ;

}

for(j=i-1;j>=k;j--)

a[j+1]=a[j];

(3) ;

}

}

【说明2.2】

以下程序可以把从键盘上输入的十进制数(1ong型)以二~十六进制形式输出。

【程序2.2】

#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],d,i=0,base;

long n;

printf(″enter a number:′n″);

scanf(″%1d″,&n);

printf(″enter new basc:kn″);

scanf(″%d″,&base);

do

{c[i]= (4) ;

i++;n=n/base;

}while(n!=0);

printf("transmite new base:\n");

for(--i;i>=0;--i)

{ d=c[i];

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

}

}

点击查看答案
重要提示: 请勿将账号共享给其他人使用,违者账号将被封禁!
查看《购买须知》>>>
重置密码
账号:
旧密码:
新密码:
确认密码:
确认修改
购买搜题卡查看答案
购买前请仔细阅读《购买须知》
请选择支付方式
微信支付
支付宝支付
点击支付即表示你同意并接受《服务协议》《购买须知》
立即支付
搜题卡使用说明

1. 搜题次数扣减规则:

功能 扣减规则
基础费
(查看答案)
加收费
(AI功能)
文字搜题、查看答案 1/每题 0/每次
语音搜题、查看答案 1/每题 2/每次
单题拍照识别、查看答案 1/每题 2/每次
整页拍照识别、查看答案 1/每题 5/每次

备注:网站、APP、小程序均支持文字搜题、查看答案;语音搜题、单题拍照识别、整页拍照识别仅APP、小程序支持。

2. 使用语音搜索、拍照搜索等AI功能需安装APP(或打开微信小程序)。

3. 搜题卡过期将作废,不支持退款,请在有效期内使用完毕。

请使用微信扫码支付(元)

订单号:

遇到问题请联系在线客服

请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系在线客服
恭喜您,购买搜题卡成功 系统为您生成的账号密码如下:
重要提示:请勿将账号共享给其他人使用,违者账号将被封禁。
发送账号到微信 保存账号查看答案
怕账号密码记不住?建议关注微信公众号绑定微信,开通微信扫码登录功能
警告:系统检测到您的账号存在安全风险

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

- 微信扫码关注简答题 -
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反简答题购买须知被冻结。您可在“简答题”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
- 微信扫码关注简答题 -
请用微信扫码测试
欢迎分享答案

为鼓励登录用户提交答案,简答题每个月将会抽取一批参与作答的用户给予奖励,具体奖励活动请关注官方微信公众号:简答题

简答题官方微信公众号

简答题
下载APP
关注公众号
TOP