广工数据结构参考答案全(anyview)分析

广工数据结构参考答案全(anyview)分析
广工数据结构参考答案全(anyview)分析

广工数据结构anyview 80道上机题

1.

void Descend(int &x, int &y, int &z)

/* 按从大到小顺序返回x,y和z的值*/ {

int t;

if(x

{

t=z;

z=x;

x=t;

}

if(y

{

t=y;

y=z;

z=t;

}

if(y>x)

{

t=x;

x=y;

y=t;

}

}

2.

Status Fibonacci(int k, int m, int &f)

/* 求k阶斐波那契序列的第m项的值f */ {

int *a;

int i=1;

if(k<2||m<0) return ERROR;

if(m

{

if(m==k-1) f=1;

else f=0;

return OK;

}

a=(int*)malloc((m+1)*sizeof(int));

for(i=0;i

i=k+1;

a[k-1]=1;

a[k]=1;

while(i<=m)

{

a[i]=2*a[i-1]-a[i-k-1];

i++;

}

f=a[m];

return OK;

}

3.

void Scores(ResultType *result, ScoreType *score)

/* 求各校的男、女总分和团体总分, 并依次存入数组score */

/* 假设比赛结果已经储存在result[ ]数组中, */

/* 并以特殊记录{"", male, ' ', "", 0 }(域scorce=0)*/

/* 表示结束*/

{

int i;

for(i=0;result[i].score!=0;i++)

{

score[result[i].schoolname-'A'].totalscore+=result[i].score;

if(result[i].gender==male)

score[result[i].schoolname-'A'].malescore+=result[i].score;

else

score[result[i].schoolname-'A'].femalescore+=result[i].score;

}

}

4

Status Series(int ARRSIZE, int a[])

/* 求i!*2^i序列的值并依次存入长度为ARRSIZE的数组a;*/

/* 若所有值均不超过MAXINT,则返回OK,否则返回OVERFLOW */

{

int i=1,b=1,na=1;

while(i<=ARRSIZE)

{

na*=i;b*=2;

if(na*b>MAXINT) return OVERFLOW;

a[i-1]=na*b;

i++;

if(i>ARRSIZE+1) return OVERFLOW;

}

return OK;

}

5

float Polynomial(int n, int a[], float x)

/* 求一元多项式的值P(x)。*/

/* 数组a的元素a[i]为i次项的系数,i=0,...,n */

{

float ans=a[0],t=1.0;

int i=1;

while(i<=n)

{

t*=x;

ans+=(t*a[i]);

i++;

}

return ans;

}

6

void InsertOrderList(SqList &L, ElemType x)

// 在有序的顺序表L 中保序插入数据元素x

{

int i=L.length-1;

while(L.elem[i]>x)

{

L.elem[i+1]=L.elem[i];

i--;

}

L.elem[i+1]=x;

L.length++;

}

7

char Compare(SqList A, SqList B)

// 比较顺序表A和B,

// 返回'<', 若A

// '=', 若A=B;

// '>', 若A>B

{

int i=0;

while(A.elem[i]==B.elem[i]&&i

if(i==A.length&&i==B.length) return '=';

if(A.elem[i]>B.elem[i]||i==B.length) return '>';

return '<';

}

8

LinkList Locate(LinkList &L, ElemType x)

// If 'x' in the linked list whose head node is pointed

// by 'L', then return pointer ha pointing node 'x',

// otherwise return 'NULL'

{

LinkList p;

p=L->next;//第一个元素

while(p->next!=NULL)

{

if(p->data==x) return p;

p=p->next;

}

return NULL;

}

9

int Length(LinkList L)

// Return the length of the linked list

// whose head node is pointed by 'L'

{

int i=0;

while(L->next!=NULL)

{

i++;

L=L->next;

}

return i;

}

10

void Insert(LinkList &L, int i, ElemType b) {

int j=1;

if(i==0) return ;

LinkList p,q;

q=L;

p=(LinkList)malloc(sizeof(LNode));

p->data=b;

if(i==1)

{

p->next=L;

L=p;

}

else

{

while(jnext!=NULL)

{

j++;

q=q->next;

}

if(j

p->next=q->next;

q->next=p;

}

}

11

void Delete(LinkList &L, int i)

{

int j=1;

LinkList p,q;

p=L;

if(i==0) return ;

if(i==1)

{

L=L->next;

return;

}

while(j

{

j++;

p=p->next;

if(p->next==NULL) return;

}

q=p;

p=p->next;

q->next=p->next;

free(p);

}

12

void Purge(LinkList &L)

{

LinkList cur,temp,del;//cur当前结点,temp遍历下一个结点,del删除结点cur=L->next;

temp=cur->next;

if(cur==NULL||temp==NULL) return;//空或者只有一个元素,返回

while(cur->next)

{

temp=cur->next;

while(temp)

{

if(cur->data==temp->data)

{

del=temp;

temp=temp->next;//temp指向下一个元素

cur->next=temp; //删除后连接

free(del);

}

else temp=temp->next;

}

cur=cur->next;

}

}//时间复杂度O(n*n)

13

void Inverse(SqList &L)

{

int i=0;

ElemType t;

while(i

{

t=L.elem[i];

L.elem[i]=L.elem[L.length-i-1];

L.elem[L.length-i-1]=t;

i++;

}

}

14

void Inverse(LinkList &L)

/* 对带头结点的单链表L实现就地逆置*/

{

LinkList p,q,k;

p=q=L->next;

p=p->next;

L->next->next=NULL;

if(!p) return ;

while(p)

{

k=q;

q=p;

p=p->next;

q->next=k;

}

L->next=q;

}

15

void Merge(LinkList ha, LinkList hb, LinkList &hc)

/* 依题意,合并带头结点的单链表ha和hb为hc */

{

LinkList pa,pb,pc;

hc=ha;

pc=hc;

pa=ha->next;

pb=hb->next;

if(!pa) {hc=hb;return;}

if(!pb) {hc=ha;return;}

while(pa||pb)

{

pc->next=pa;

if(!pb) {return;}

pc=pc->next;

pa=pa->next;

pc->next=pb;

if(!pa) {return;}

pb=pb->next;

pc=pc->next;

}

}

16

void Union(LinkList &lc, LinkList &la, LinkList &lb) {

LinkList pa,pb,pc;

pa=la->next;pb=lb->next; //合并

lc=pc=la;

while(pa&&pb)

{

if(pa->data <= pb->data)

{

pc->next=pa;

pc=pa;

pa=pa->next;

}

else

{

pc->next=pb;

pc=pb;

pb=pb->next;

}

}

pc->next=pa ? pa : pb;

pa=pb=lc->next; //逆置

pa=pa->next;

lc->next->next=NULL;

if(!pa) return ;

while(pa)

{

pc=pb;

pb=pa;

pa=pa->next;

pb->next=pc;

}

lc->next=pb;

}

17

ElemType DeleteNode(LinkList s)

/* 删除指针s所指结点的前驱结点,并返回被删结点的元素值*/ {

LinkList p;

ElemType a;

p=s->next;

while(p->next->next!=s) p=p->next;

a=p->next->data;

p->next=s;

return a;

}

18

void PerfectBiLink(BiLinkList &CL)

{

BiLinkList pre,net,t;

pre=t=CL;

net=t->next;

while(net!=t)

{

net->prev=pre;

pre=net;

net=net->next;

}

t->prev=pre;

}

19

void Split(LinkList &lc, LinkList &ld, LinkList &lo, LinkList ll)

{

LinkList itor,pc,pd,po;

itor=ll->next;

lc=(LinkList)malloc(sizeof(LNode));pc=lc;

ld=(LinkList)malloc(sizeof(LNode));pd=ld;

lo=(LinkList)malloc(sizeof(LNode));po=lo;

while(itor)

{

if(itor->data>='a'&&itor->data<='z'||itor->data>='A'&&itor->data<='Z')

{

pc->next=itor;

pc=itor;

}

else if(itor->data<='9'&&itor->data>='0')

{

pd->next=itor;

pd=itor;

}

else

{

po->next=itor;

po=itor;

}

itor=itor->next;

}

pc->next=lc;

pd->next=ld;

po->next=lo;

}

20

void ReverseEven(BiLinkList &L)

{

BiLinkList p1,p2;

p1=L->next;p2=L;

while(p1->next!=L)

{

if(p1->next->next!=L)

{

p1->next=p1->next->next;//接隔一个

p1=p1->next;//去到隔一个处

p2->prev=p1->prev;//p2的前驱为p1前驱

p1->prev=p1->prev->prev;

p2->prev->next=p2;//p1的前驱的后继为p2

p2=p2->prev;//p2去到p2前驱

}

else

{

p2->prev=p1->next;

p1->next->next=p2;

p2=p2->prev;

break;

}

}

p1->next=p2;

p2->prev=p1;

}

21

float Evaluate(SqPoly pn, float x)

/* pn.data[i].coef 存放ai,*/

/* pn.data[i].exp存放ei (i=1,2,...,m) */

/* 本算法计算并返回多项式的值。不判别溢出。*/ /* 入口时要求0≤e1

int i,j;

float ans=0.0,s;

for(i=0;i

{

s=1;

for(j=0;j

ans+=pn.data[i].coef*s;

}

return ans;

} //O(n*n)

22

void Difference(LinkedPoly &pa)

/* 稀疏多项式pa 以循环链表作存储结构,*/

/* 将此链表修改成它的导函数,并释放无用结点*/

{

PolyLink p;

p=pa->next;

while(p!=pa)

{

if(p->exp==0)

{

pa->next=p->next;

free(p);

p=pa->next;

}

else

{

p->coef *= p->exp;

p->exp--;

p=p->next;

}

}

}

23

Status match(char *str)

/* 若str是属该模式的字符序列,*/

/* 则返回TRUE,否则返回FALSE */

{

Stack s;

InitStack(s);

SElemType e;

int i=0;

while(str[i]!='&')

{

Push(s,str[i]);

i++;

}

i++;

while(str[i]!='@')

{

GetTop(s,e);

if(StackEmpty(s)||e!=str[i]) return FALSE;

Pop(s,e);

i++;

}

if(!StackEmpty(s)) return FALSE;

return TRUE;

}

24

Status MatchCheck(SqList exp)

/* 顺序表exp表示表达式;*/

/* 若exp中的括号配对,则返回TRUE,否则返回FALSE */ /* 注:本函数不使用栈*/ {

int i=0,count=0;

while(i

{

if(exp.elem[i]=='(') count++;

if(exp.elem[i]==')') count--;

if(count<0) return FALSE;

i++;

}

if(!count) return TRUE;

return FALSE;

}

25

Status MatchCheck(SqList exp)

/* 顺序表exp表示表达式;*/

/* 若exp中的括号配对,则返回TRUE,否则返回FALSE */ {

int i=0;

Stack s;

SElemType e;

InitStack(s);

while(i

{

if(exp.elem[i]=='('||exp.elem[i]=='['||exp.elem[i]=='{')

Push(s,exp.elem[i]);

else if(exp.elem[i]==')'||exp.elem[i]==']'||exp.elem[i]=='}')

{

if(StackEmpty(s)) return FALSE;

else

{

GetTop(s,e);

switch(exp.elem[i])

{

case ')':

if(e=='(') {Pop(s,e); break;}

else return FALSE;

case ']':

if(e=='[') {Pop(s,e); break;}

else return FALSE;

case '}':

if(e=='{') {Pop(s,e); break;}

else return FALSE;

default: break;

}

}

}

i++;

}

if(StackEmpty(s)) return TRUE;

return FALSE;

}

26

void ChangeColor(GTYPE g, int m, int n,

char c, int i0, int j0)

/* 在g[1..m][1..n]中,将元素g[i0][j0] */

/* 所在的同色区域的颜色置换为颜色c */

{

char color=g[i0][j0];

g[i0][j0]=c;

int dx[4]={-1,+1,0,0},dy[4]={0,0,-1,+1},i;

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

{

if(i0+dx[i]<=m&&j0+dy[i]<=n&&j0+dy[i]>=1&&i0+dx[i]>=1&&g[i0+dx[i]][j0+dy[i]]==color) ChangeColor(g,m,n,c,i0+dx[i],j0+dy[i]);

}

}

27

char *RPExpression(char *e)

/* 返回表达式e的逆波兰式*/

{

int i,j=0;

char *str;

str=(char*)malloc(30*sizeof(char));

SElemType e1;

Stack so;

for(i=0;e[i]!='\0';i++)

{

if(e[i]<='9'&&e[i]>='0'||e[i]>='a'&&e[i]<='z'||e[i]>='A'&&e[i]<='Z')//入数字栈

{

str[j++]=e[i];

}

else

{

if(e[i]=='('||e[i]=='['||StackEmpty(so))//入栈

Push(so,e[i]);

else if(e[i]==')')

{

while(Top(so)!='(')//将()内的操作符做运算

{

str[j++]=Top(so);//操作符入栈

Pop(so,e1);

}

Pop(so,e1);

}

else if(e[i]==']')

广工Anyview试题答案第八章

/********** 【习题】请编写函数func(char s[], char t[], int n), 由数组s中长度为n的字符序列构造其逆序列,并存储在数组t中。例如,由给定字符序列?慜敲求得逆序列?敜慲;由?瑜浩履 求得?敜業屴。 **********/ void func(char s[], char t[], int n) /* 数组s的前n个元素存放给定的字符序列, 数组t的前n个元素存放s的逆序列。 注意:数组的下标从0开始。 */ { for(int i=0;i

广工Anyview试题答案第五章

/********** 【习题5.002】编写程序,利用while语句在同一行中 逐个显示从1至5的数字,每个数字之前保留2个空格。**********/ void main() { int i=1; while(i<=5) { printf(" %d",i); i++; } } /********** 【习题5.003】编写程序,利用for语句在同一行中逐个 显示从1至6的数字,每个数字之前保留2个空格。 **********/ void main() { for(int i=1;i<=6;i++) printf(" %d",i);

} /********** 【习题5.004】n是系统给定的外部整型变量(不需要 自行定义)。编写程序,利用循环语句在同一行中逐 个显示从1至n的数字,每个数字之前保留2个空格。**********/ void main() { for(int i=1;i<=n;i++) printf(" %d",i) ; } /********** 【习题5.012】请仅在程序空缺处填入合适内容,使其 实现功能:依次输入5个整数,计算它们之和并输出。**********/ #include void main() { int i,sum=0,n; for (i=1;i<=5;i++)

{ scanf("%d",&n); sum=sum+n; } printf("sum = %d",sum); } /********** 【习题5.020】n和s是系统给定的外部整型变量(不需要 自行定义)。编写程序,求1到n之间的整数之和,并将结果存放到s。 **********/ void main() { for(int i=1;i<=n;i++) s+=i; } /********** 【习题5.022】n是系统给定的外部变量。编写程序, 求1到n间的自然数之和。请定义局部变量s存放求和 的结果,并用下列语句输出结果 printf("1+2+...+n=%d\n",s);

2016最新广工anyview数据结构答案

【题目】若两棵二叉树T1和T2皆为空,或者皆不空且T1的左、右子树和T2的左、右子树分别相似,则称二叉树T1和T2相似。试编写算法,判别给定两棵二叉树是否相似。 二叉链表类型定义: typedef struct BiTNode { TElemType data; struct BiTNode *lchild, *rchild; } BiTNode, *BiTree; **********/ Status Similar(BiTree T1, BiTree T2) /* 判断两棵二叉树是否相似的递归算法*/ { if(!T1&&!T2)//同为空时,两树相似 return TRUE;

else if(T1&&T1){ if(Similar(T1 -> lchild,T2 -> lchild) && Similar(T1 -> rchild,T2 -> rchild)) //两树都不为空时,判断左右子树是否相似 return TRUE; else return FALSE; }else//以上两种情况都不符合,就直接返回FALSE return FALSE; } /********** 【题目】编写递归算法,求对二叉树T先序遍历时 第k个访问的结点的值。 二叉链表类型定义: typedef struct BiTNode {

TElemType data; struct BiTNode *lchild, *rchild; } BiTNode, *BiTree; **********/ TElemType PreOrder(BiTree T, int &k) { TElemType x='#'; if(T==NULL)return '#'; if(k==1)return T->data; if(T->lchild!=NULL) { k--; x=PreOrder(T->lchild,k); } if(T->rchild!=NULL&&x=='#')

广工Anyview试题答案-第五章

广工Anyview试题答案-第五章

/********** 【习题5.002】编写程序,利用while语句在同一行中 逐个显示从1至5的数字,每个数字之前保留2个空格。 **********/ void main() { int i=1; while(i<=5) { printf(" %d",i); i++; } } /********** 【习题5.003】编写程序,利用for语句在同一行中逐个 显示从1至6的数字,每个数字之前保留2个空格。 **********/

void main() { for(int i=1;i<=6;i++) printf(" %d",i); } /********** 【习题5.004】n是系统给定的外部整型变量(不需要 自行定义)。编写程序,利用循环语句在同一行中逐 个显示从1至n的数字,每个数字之前保留2个空格。 **********/ void main() { for(int i=1;i<=n;i++) printf(" %d",i) ; } /********** 【习题5.012】请仅在程序空缺处填入合适内容,

使其 实现功能:依次输入5个整数,计算它们之和并输出。 **********/ #include void main() { int i,sum=0,n; for (i=1;i<=5;i++) { scanf("%d",&n); sum=sum+n; } printf("sum = %d",sum); } /********** 【习题5.020】n和s是系统给定的外部整型变量(不需要 自行定义)。编写程序,求1到n之间的整数之和,并将结 果存放到s。 **********/

广工Anyview试题答案第八章

/**********【习题】请编写函数func(char s[], char t[], int n), 由数组s中长度为n的字符序列构造其逆序列,并存储在数组t中。 例如,由给定字符序列s="are"求得逆序列t="era";由s="time" 求得t="emit"。 **********/ void func(char s[], char t[], int n) /* 数组s的前n个元素存放给定的字符序列, 数组t的前n个元素存放s的逆序列。 注意:数组的下标从0开始。 */ { for(int i=0;i

广工Anyview试题答案 第四章

/********** 【习题4.011】关系表达式,if语句第一种形式 在以下程序空缺处填写合适内容,使得程序判断用户输入的字符是否为'@',若是则显示:"输入正确"。**********/ #include void main() { char c; scanf("%c",&c); if( c=='@' ) printf("输入正确\n"); } /********** 【习题4.012】关系表达式,if语句第一种形式 在以下程序空缺处填写合适内容,使得程序输入 一个整数赋给变量a,计算并输出a的绝对值a1。**********/ #include #include void main() { int a,a1; scanf("%d",&a); a1=abs(a); printf("|%d| = %d\n",a,a1); } /********** 【习题4.013】逻辑表达式,if语句第一种形式 在以下程序空缺处填写合适内容,使得程序对 输入的整型变量x的值进行判断,若变量x值为“假”时输出“False”。 **********/ #include int main( ) { int x; scanf("%d",&x); if(x==0 )

printf("False!\n"); return 0; } /********** 【习题4.016】if语句的子句为复合语句 在以下程序空缺处填写合适内容,使得程序将输入到变量a和b的两个整数按照由大到小的顺序输出。**********/ #include void main( ) { inta,b,t; scanf("%d %d",&a,&b); if(ab成立则将b的平方值赋予 c,否则将0赋予c;最后显示c的值。 **********/ void main() { intc,d; c=( else c=0; printf("c=%d\n",c); } /********** 【习题4.211】已知3个非零整数被分别输入到整型

2016广工Anyview试题答案-第六章

【习题6.033】系统给定外部整型数组a、整型变量n、max、min 和实型变量avg(不需要自行定义)。编写程序,求数组a中前n 个元素的最大值max、最小值min及平均值avg。 **********/ void main() { inti,sum=0; max=min=a[0]; for(i=0;i=max) max=a[i]; if(a[i]<=min) min=a[i]; sum+=a[i]; } avg=sum/(float)n; } /********** 【习题6.043】系统给定外部整型变量n和整型数组a(不需要 自行定义)。编写程序,找出数组a中前n个元素中的最小元素及其下标,然后把它和数组中最前面的元素a[0]交换位置。 **********/ void main() { int b=a[0],temp,min,z; for(int i=1;ia[i]) b=a[i]; } min=b; for(int j=0;j

【习题6.050】系统给定外部字符串s和整型数组c[26](不需要 自行定义)。编写程序,将字符串s中26个小写字母出现的次数 依次统计到数组c中。例如,当s=“abcijkabcdexyzuvwx”时, 数组c的26个元素值依次为:2 2 2 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 2 1 1。 **********/ #include void main() { int i; for(i=0;s[i];i++) if(s[i]>='a'&&s[i]<='z') c[s[i]-'a']++; for(i=0;i<26;i++) printf("%d ",c[i]); printf("\n"); } /********** 【习题6.051】系统给定外部字符串s和整型数组c[26] (不需要自行定义)。编写程序,将字符串s中26个字母 (不区分大小写)出现的次数依次统计到数组c中。例如, 当s=“AbcijKaBcdEXyzuvwx”时,数组c的26个元素值 依次为:2 2 2 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 2 1 1。 **********/ void main() { int i; for(i=0;s[i];i++) { if(s[i]>='A'&&s[i]<='Z') c[s[i]-'A']++; if(s[i]>='a'&&s[i]<='z') c[s[i]-'a']++; } } /********** 【习题6.110】系统给定外部字符数组变量s和数组长度n(不需要自行定义)。main函数的功能是:把字符串s中所有小写字母转换为大写字母,其他字符不变。例如,当s="68abcdEFGhijkLM86"

广工AnyView数据结构第15章答案

/********** 【题目】试写一算法,如果三个整数a,b和c的值 不是依次非递增的,则通过交换,令其为非递增。 ***********/ void Descend(int &a, int &b, int &c) /* 通过交换,令a >= b >= c */ { if(c<=b&&b<=a) return; else { if(a

/********** 【题目】已知k阶裴波那契序列的定义为 f(0)=0, f(1)=0, ..., f(k-2)=0, f(k-1)=1; f(n)=f(n-1)+f(n-2)+...+f(n-k), n=k,k+1,... 试编写求k阶裴波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。 **********/ Status Fibonacci(int k, int m, int &f) /* 求k阶斐波那契序列的第m项的值f */ { if(k<=1||m<0) return ERROR; else if(m==k-1) f=1; else if(m==0) f=0; else { int i,j,sum; int *t; t=(int*)malloc(m*sizeof(int)); for(i=0;i<=k-2;i++) t[i]=0; t[k-1]=1; for(i=k;i<=m;i++) { sum=0; for(j=i-k;j<=i;j++) sum+=t[j]; t[i]=sum; } f=t[m]; } return OK; } /********** 【题目】试编写算法,计算i!×2^i的值并存入数组 a[0..n-1]的第i-1个分量中(i=1,2,…,n)。假设计 算机中允许的整数最大值为MAXINT,则当对某个k (1≤k≤n)使k!×2^k>MAXINT时,应按出错处理。注意选择你认为较好的出错处理方法。 **********/

广工水力学试题

全国2001年10月高等教育自学考试 水力学试题 课程代码:02444 第一部分选择题(共20分) 一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。 1.某流体的运动粘度v=3×10-6m2/s,密度ρ=800kg/m3,其动力粘度μ为( ) 图中相互之间可以列总流伯努利方程的断面是 断面和2-2断面 断面和3-3断面 断面和3-3断面 断面和4-4断面 3.如图所示,孔板上各孔口的大小形状相同,则各孔口的出流量是( ) >Q B =Q B

A.z1 B.z2 C.z1+ z2 D.z1+ z2+h w 6.在已知通过流量Q、渠道底坡i、边坡系数m及粗糙系数n的条件下,计算梯形断面渠道尺寸的补充条件及设问不能是( ) A.给定水深h,求底宽b B.给定宽深比β,求水深h与底宽b C.给定最大允许流速[v]max,求水底h与底宽b D.给定水力坡度J,求水深h与底宽b 7.断面单位能量e随水深h的变化规律是( ) A.e存在极大值 B.e存在极小值 C.e随h增加而单调增加 D.e随h增加而单调减少 8.下列各型水面曲线中,表现为上凸型的水面曲线是( ) 型型型型 9.根据堰顶厚度与堰上水头的比值,堰可分为( ) A.宽顶堰、实用堰和薄壁堰 B.自由溢流堰、淹没溢流堰和侧收缩堰 C.三角堰、梯形堰和矩形堰 D.溢流堰、曲线型实用堰和折线型实用堰 10.速度v、长度l、运动粘度v的无量纲组合是( ) A.vl v 2 B. v l v 2 C. v l v 22 D. vl v 第二部分非选择题(共80分) 二、填空题(本大题共10空,每空1分,共10分) 不写解答过程,将正确的答案写在每小题的空格内。错填或不填均分无。 11.潜体所受浮力的大小与其所在液体的______成正比。

广工Anyview试题答案 第七章

/********** 【习题7.067】编写函数将一个NxN的二维数组的周边元素“顺时针”轮转1位。 例如:轮转前的数组轮转后的数组 1 2 3 4 1 2 4 5 6 ---> 7 5 3 7 8 9 8 9 6 **********/ voidturningClockwise(char a[N][N]) { int i; int flog=1; int t=a[0][N-1]; for(i=N-1;i>0;i--) a[0][i]=a[0][i-1]; for(i=0;i0;i--) a[i][N-1]=a[i-1][N-1]; a[1][N-1]=t; } /********** 【习题7.010】写一函数求3个整数中最小的数。 **********/ int min(int x, int y, int z) /* 返回3个整数x,y和z中最小的数*/ { if(x<=y&&x<=z) return x; if(y<=x&&y<=z) return y; if(z<=y&&z<=x) return z; } /********** 【习题7.020】编写函数,求用1元、5元和10元三种纸币支付n元钱共有多少种支付法?

例如,16元可有6种支付方法: 方法 1 2 3 4 5 6 10元0 0 0 0 1 1 5元0 1 2 3 0 1 1元16 11 6 1 6 1 **********/ int change(int n) { inti,j,k; int m=0; for(i=0;i<=n;i++) for(j=0;j<=n/5;j++) for(k=0;k<=n/10;k++) if(i+j*5+k*10==n) m++; return m; } /********** 【习题7.030】先编写一个判断素数的函数。再编写一个函数 将一个偶数表示为两个素数之和,并返回其中较小的素数。 注:素数指只能被1和自身整除的正整数。规定0,1不是素数。**********/ int prime(int n) /* 判断素数,如果是素数返回1,不是素数则返回0 */ { int k; if(n==0||n==1) return 0; for (k=2;k<(n/2);k++) if(n%k==0) return 0; return 1; } int f(int i) /* 将偶数i表示为两个素数之和,返回其中较小的素数*/ { int n; for(n=3;n<=i;n++) if(prime(i-n)&&prime(n)) return n; }

广工数据结构参考答案全(anyview)分析

广工数据结构anyview 80道上机题 1. void Descend(int &x, int &y, int &z) /* 按从大到小顺序返回x,y和z的值*/ { int t; if(xx) { t=x; x=y; y=t; } } 2. Status Fibonacci(int k, int m, int &f) /* 求k阶斐波那契序列的第m项的值f */ { int *a; int i=1; if(k<2||m<0) return ERROR; if(m

a[k-1]=1; a[k]=1; while(i<=m) { a[i]=2*a[i-1]-a[i-k-1]; i++; } f=a[m]; return OK; } 3. void Scores(ResultType *result, ScoreType *score) /* 求各校的男、女总分和团体总分, 并依次存入数组score */ /* 假设比赛结果已经储存在result[ ]数组中, */ /* 并以特殊记录{"", male, ' ', "", 0 }(域scorce=0)*/ /* 表示结束*/ { int i; for(i=0;result[i].score!=0;i++) { score[result[i].schoolname-'A'].totalscore+=result[i].score; if(result[i].gender==male) score[result[i].schoolname-'A'].malescore+=result[i].score; else score[result[i].schoolname-'A'].femalescore+=result[i].score; } } 4 Status Series(int ARRSIZE, int a[]) /* 求i!*2^i序列的值并依次存入长度为ARRSIZE的数组a;*/ /* 若所有值均不超过MAXINT,则返回OK,否则返回OVERFLOW */ { int i=1,b=1,na=1; while(i<=ARRSIZE) { na*=i;b*=2; if(na*b>MAXINT) return OVERFLOW; a[i-1]=na*b; i++; if(i>ARRSIZE+1) return OVERFLOW; } return OK; } 5

广工数据结构实验设计报告BTree

数据结构设计性实验报告 课程名称数据结构实验 题目名称B树(难度1.4) 学生学院计算机学院 专业班级 学号 姓名 指导教师黄剑锋 2015年 06月25日

B树抽象数据类型实现 一、设计简介 本次设计在AnyviewCL自由编程平台上实现了B树的6种基本操作,并根据这个基本操作设计了友好的交际界面,操作简单易懂,并在AnyviewCL自由编程平台上可视化测试B树各个基本操作,保证了各基本的操作算法的正确性。 经在AnyviewCL自由编程平台严格测试后,将本设计移植到Visual C++ 6.0平台生成可运行程序,并进行各个基本操作的测试,保证了程序运行的稳定性。 其中数据来源为一组在0~1000内的int型随机数,但数据由typedefintKeyType定义,若需要改变数据类型,只需要将int替换成所需的数据类型即可。 二、抽象数据类型定义及各种基本操作的描述 ADT BTree{ 数据对象:D是具有相同特征的数据元素集合。 数据关系: 若D为空集,则称为空树; (1)树中每个结点最多含有m棵子树; (2)若根结点不是叶子结点,则至少有2个子树; (3)除根结点之外的所有非终端结点至少有┌m/2┐棵子树; (4)每个非终端结点中包含信息:(n,A0,K1,A1,K2,A2,…,Kn,An)。其中:1)Ki(1<=i<=n)为关键字,且关键字按升序排序; 2)指针Ai(0<=i<=n)指向子树的根结点,Ai-1指向子树中所有结点的关键字均小于Ki,且大于Ki-1; 3)关键字的个数n必须满足:┌m/2┐-1<=n<=m-1。 (5)所有的叶子节点都在同一层,子叶结点不包含任何信息。 基本操作P: CreatBTree(&T, n, m); 初始条件:初始化关键字个数n大于等于0,B树的阶数m大于3小于等于20。 操作结果:构建一棵阶数为m,含有n个关键字的B树。 SearchBTree(T, k, &p);

广工Anyview试题答案

/********** 【习题9.023】结构体类型定义如下: struct date{int year; int month; int day;}; //定义日期结构体类型 struct student { char name[20]; struct date birth; //出生日期 }; 结构体数组s存储了n个人的名字和出生日期。写一函数,求这n个人中年龄最大(即出生日期最小)者的姓名。 **********/ char *oldest(student s[], int n) { int j,k=0; for(j=1;js[j].birth.year) k=j; else if(s[k].birth.year==s[j].birth.year) {if(s[k].birth.month>s[j].birth.month) k=j; else if(s[k].birth.month==s[j].birth.month) if(s[k].birth.day>s[j].birth.day) k=j;} } return s[k].name; } /********** 【习题9.025】结构体类型定义如下: struct date{int year; int month; int day;}; //定义日期结构体类型 struct student { char id[10]; //学号 char name[20]; //姓名 struct date birth; //出生日期 }; 结构体数组s存储了n个人的学号、名字和出生日期。写一函数,以结构体的形式返回这n个人中年龄最大(即出生日期最小)者的信息。 **********/ struct student oldest(struct student s[], int n) { int j,k=0; for(j=1;js[j].birth.year) k=j; else if(s[k].birth.year==s[j].birth.year) {if(s[k].birth.month>s[j].birth.month) k=j;

广工Anyview试题答案

广工A n y v i e w试题答 案 Document number【AA80KGB-AA98YT-AAT8CB-2A6UT-A18GG】

/********** 【习题8.011】请编写函数func(char s[], char t[], int n), 由数组s中长度为n的字符序列构造其逆序列,并存储在数组t中。 例如,由给定字符序列s="are"求得逆序列t="era";由s="time" 求得t="emit"。 **********/ void func(char s[], char t[], int n) /* 数组s的前n个元素存放给定的字符序列, 数组t的前n个元素存放s的逆序列。 注意:数组的下标从0开始。 */ { for(int i=0;i

相关主题
相关文档
最新文档