当前位置:文档之家› 广工Anyview试题答案

广工Anyview试题答案

广工Anyview试题答案
广工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

t[i]=s[n-i-1];

}

/**********

【习题8.012】请编写函数func(char*s, char *t),由字符

串s构造其逆串t。例如,由给定串s="are"求得逆串t="era";

由s="time"求得t="emit"。

**********/

void func(char *s, char *t)

/* s是给定字符串的起始地址,

t是求得s的逆串的起始地址

*/

{

int n=0;

for(int i=0;*(s+i)!='\0';i++)

n++;

for(i=0;i

t[i]=s[n-i-1];

}

/**********

【习题8.015】对长度为n的字符串s1,除首、尾字符外,将

其余字符按ASCII码降序排列,组合成一个新的字符串s2。

**********/

void func(char *s1, char *s2, int n)

/* s1为字符串的起始地址,

s2为新字符串的起始地址,

n为字符串的长度。

要求:s1串不能发生改变,

s2串存放新的字符串。

*/

{

for(int i=0;i

*(s2+i)=*(s1+i);

if(n<4)break;

else

{

char t=*(s2+1);int k=1;int j,h;

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

{

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

if(t<=*(s2+j))

{t=*(s2+j);h=j;}

*(s2+h)=s2[k++];s2[k-1]=t;t=s2[k];

}

}

}

/**********

【习题8.016】对字符串s1,除首、尾字符外,将其余字符按ASCII码降序排列,组合成一个新的字符串s2。

**********/

void func(char *s1, char *s2)

{

for(int i=0;*(s1+i)!='\0';i++)

*(s2+i)=*(s1+i);

int n=i;

if(n<4)break;

else

{

char t=*(s2+1);int k=1;int j,h;

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

{

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

if(t<=*(s2+j))

{t=*(s2+j);h=j;}

*(s2+h)=s2[k++];s2[k-1]=t;t=s2[k];

}

}

}

/**********

【习题8.018】以字符串s第m(>=0)个字符开始的所有字符,按升序的次序构成字符串t。

**********/

void substr(char *s, int m, char *t)

/* s为字符串的起始地址,

m>=0,

t为新字符串的起始地址,

注意:字符串尾字符之后跟随着一个结束符‘\0’,

即ASCII码为0的字符,结束符不属于字符串。

要求:s串不能发生改变,

t串存放新的字符串。

*/

{

int f=0;

for(int i=m;s[i]!='\0';i++)

t[f++]=s[i];t[f]='\0';

if(m==0||m==1||m==2){break;}

else

{

char c=t[0]; int k=0;

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

{

for(int j=i;t[j]!='\0';j++)

if(c>=t[j])c=t[j];

t[j]=t[k];t[k++]=c;c=t[k];

}

}

}

/**********

【习题8.020】在字符串s中查找字符c,如果找到,返回字符c

首次出现在字符串s中的位置指针;否则,返回空指针NULL。

**********/

char *match(char *s, char c)

/* 返回字符在串s中首次出现的位置指针 */

{

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

if(*(s+i)==c)

return s+i;

return NULL;

}

/**********

【习题8.033】编写函数,计算年份year中第yearday天相应的月

和日。例如,调用函数month_day(2000,61,&m,&d)之后,m=3,

d=1,即2000年的第61天是3月1日。

**********/

int month_day(int year, int yearday, int *pmonth, int *pday) /* year是年,

yearday是天数,

若year和yearday合理,

则*pmonth和*pday是计算得出的月和日,函数返回1;

否则,函数返回0。

*/

{

int date[12]={31,29,31,30,31,30,31,31,30,31,30,31};

if(year%4==0&&yearday>0&&yearday<367)

{*pmonth=yearday/31+1;

if(*pmonth>2)

{*pday=yearday;

for(int i=0;i<*pmonth-1;i++)

*pday-=date[i];}

else if(*pmonth==1)*pday=yearday;

else *pday=yearday-31;return 1;}

else

if(year%4!=0&&yearday>0&&yearday<366)

{*pmonth=yearday/29+1; date[1]=28;

if(*pmonth>2)

{*pday=yearday;

for(int i=0;i<*pmonth-1;i++)

*pday-=date[i];}

else if(*pmonth==1)*pday=yearday;

else *pday=yearday-31;return 1;}

return 0;

}

/**********

【习题8.044】请编写一个函数func,通过略去非数字字符,将字符串s转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。**********/

long func(char *s)

/* s是一个数字字符串的地址,

函数返回值为由s含有的数字字符转换得到的数(包含正负数情况)*/

{

{

int i=0;

long t=0;

bool meet_negative=false;

bool meet_number=false;

while(s[i])

{

if(47<(int)s[i]&&(int)s[i]<58)

{

meet_number=true;

t*=10;

t+=((int)s[i]-48);

}

if(s[i]=='-'&&meet_number==false)

meet_negative=true;

i++;

}

if(meet_negative==true)

return -t;

return t;

}

}

/**********

【习题8.105】请编写一个函数findmax(int []s, int n),返回数组s中n(>0)个整数中的最大值。注意:要求在函数中采用指针(而不是下标)来处理数组元素。

**********/

int findmax(int s[], int n)

/* 返回s中n(>0)个整数的最大值。

注意:要求在函数中采用指针(而不是下标)来处理数组元素。

*/

{

int t=*s;

for(int i=0;i

if(*(s+i)>t)t=*(s+i);

return t;

}

/**********

【习题8.124】请编写一个函数min3adj(int s[], int n),数组s中

有n(>0)个整数,返回在s中相邻三个数的和中的最小值。

**********/

int min3adj(int s[], int n)

/* 数组s含n(>=3)个整数,

返回在s中相邻三个数的和中的最小值。

*/

{

int t=*(s+n-1)+*(s+n-2)+*(s+n-3);

for(int i=n-1;i>1;i--)

if(t>*(s+i)+*(s+i-1)+*(s+i-2))

t=*(s+i)+*(s+i-1)+*(s+i-2);

return t;

}

/**********

【习题8.132】编写函数,通过指针参数sum将x和y的

和赋给相应实际参数。例如,若x=134、y=378,则sum

的实参变量被赋值512。

**********/

void func(int x, int y, int *sum)

{

*sum=x+y;

}

/**********

【习题8.136】编写函数,返回指针参数x和y所指向的变量的值之和。

**********/

int func(int *x, int *y)

{

return *x+*y;

}

/**********

【习题8.138】编写函数,比较指针参数x和y分别

指向的变量,若前者的值较大,则交换两者的值,

并返回1;否则无须交换,返回0。

**********/

int func(int *x, int *y)

{

if(*x>*y)

{int t=*x;*x=*y;*y=t;return 1;}

return 0;

}

/**********

【习题8.143】假设指针a指向某数组中的一个元素。编写函数,在从元素*a开始的n个元素范围内,向后

查找给定值x,一旦找到值等于x的元素,则返回该元素的序号;若找不到,则返回0。例如,假定a指向的10个元素依次为5,6,3,0,-4,8,9,-6,8,-7,若x=5,

则返回1;若x=8,则返回6;若y=4,则返回0。

**********/

int func(int n, int *a, int x)

{

for(int i=0;i

if(*(a+i)==x)

return i+1;

return 0;

}

/**********

【习题8.146】假设指针a指向某数组中的一个元素。编写函数,对从元素*a开始的n个元素,统计并返回

值为x的元素个数(若不存在这样的元素,则返回0)。**********/

int func(int n, int *a, int x)

{

int t=0;

for(int i=0;i

if(*(a+i)==x)t++;

if(t==0)return 0;

return t;

}

/**********

【习题8.203】编写函数,返回指针参数s所指向的字符串的长度。例如,若该串为"I am a student.",

则函数返回值是15。注意:字符串结束符是'\0',不计入长度。不允许调用库函数strlen()。

**********/

int func(char *s)

{

for(int i=0;*(s+i)!='\0';i++){}

return i;

}

/**********

【习题8.212】编写函数,在指针参数s所指向的字符串中顺序查找由c指定的字符。一旦找到,则返回该字符在串中的序号(串的首个字符的序号为1),否则返回0。例如,若该串为"I am a student.",

c='t',则函数返回值为9。注意:字符串结束符是

'\0',不允许调用字符串库函数。

**********/

int func(char *s, char c)

{

for(int i=0;*(s+i)!='\0';i++)

if(*(s+i)==c)

return i+1;

}

/**********

【习题8.215】编写函数,在指针参数s所指向的字符串中统计并返回由c指定的字符的个数。例如,若该串为"I am a student.",c='t',则函数返回值

为2。注意:字符串结束符是'\0',不允许调用字符串库函数。

**********/

int func(char *s, char c)

{

int t=0;

for(int i=0;*(s+i)!='\0';i++)

if(*(s+i)==c)

t++;

return t;

}

/**********

【习题8.222】编写函数,复制指针参数s指向的字符串到由指针参数t已经指向的存储区域。注意:字符串结束符是'\0',不允许调用字符串库函数。**********/

void func(char *s, char *t)

{

for(int i=0;*(s+i)!='\0';i++)

*(t+i)=*(s+i);*(t+i)='\0';

}

/**********

【习题8.225】编写函数,由指针参数s指向的字

符串头n个字符构造一个字符串,并存储到到由指针参数t已经指向的存储区域。例如,若s指向的字符串为"I am a student.",n=4,则t指向的

串为"I am"。注意:字符串结束符是'\0',不允

许调用字符串库函数。

**********/

void func(char *s, int n, char *t)

{

for(int i=0;i

*(t+i)=*(s+i);*(t+i)='\0';

}

/**********

【习题8.228】编写函数,由指针参数s指向的字

符串后n个字符构造一个字符串,并存储到到由指针参数t已经指向的存储区域。例如,若s指向的字符串为"I am a student.",n=8,则t指向的

串为"student."。注意:字符串结束符是'\0',

不允许调用字符串库函数。

**********/

void func(char *s, int n, char *t)

{

for(int i=0;*(s+i)!='\0';i++){}

int k=0;

for(int j=i-n;*(s+j)!='\0';j++)

*(t+(k++))=*(s+j);*(t+k)='\0';

}

/**********

【习题8.231】编写函数,由指针参数s指向的字

符串中第i个字符开始的n个字符构造一个字符串,

并存储到到由指针参数t已经指向的存储区域。例如,若s指向的串为"I am a student.",i=8,

n=7,则t指向的串为"student"。注意:字符串

结束符是'\0',不允许调用字符串库函数。

**********/

void func(char *s, int i, int n, char *t)

{

int k=0;

for(int j=i-1;k

*(t+(k++))=*(s+j);*(t+k)='\0';

}

/**********

【习题8.234】编写函数,通过将s字符串中所有小写字母转换成大写字母,构造一个字符串并存储在t已经指向的存储区域,但原来的s串不改变。例如,若s字符串为"I am a student.",则构造的t串为"I AM A

STUDENT.”。

**********/

void func(char *s, char *t)

{

for(int i=0;*(s+i)!='\0';i++)

{

if('a'<=*(s+i)&&*(s+i)<='z')

*(t+i)=(char)(*(s+i)-32);

else *(t+i)=*(s+i);

}

*(t+i)='\0';

}

/**********

【习题8.237】编写函数,通过将s字符串中所有大写字母转换成小写字母,构造一个字符串并存储在t已经指向的存储区域,但原来的s串不改变。例如,若s字符串为"I Am a Student.",则构造的t串为"i am a

student.”。

**********/

void func(char *s, char *t)

{

for(int i=0;*(s+i)!='\0';i++)

{

if('A'<=*(s+i)&&*(s+i)<='Z')

*(t+i)=(char)(*(s+i)+32);

else *(t+i)=*(s+i);

}

*(t+i)='\0';

}

/**********

【习题8.243】编写函数,在字符串s中顺序查找字

符串t,若找到,则返回其出现的位置,否则返回0。

例如,设s="I am a student.",若t="stu",则返

回值是8;若t="an",则返回值是0。注意:字符串

结束符是'\0',不允许调用字符串库函数。

**********/

int func(char *s, char *t)

{

int k=0;

for(int i=0;*(s+i)!='\0';i++)

if(*(s+i)==*(t+k))

if(*(s+i+1)==*(t+k+1))

return i+1;

return 0;

}

/**********

【习题8.246】假设字符串中每个连续字母序列称为

“单词”。编写函数,在字符串s中顺序获取每个单

词,依次存入w指示的二维数组,并返回单词个数。

例如,若有s="I am a student",则w={"I","am", "a","student"}。注意:字符串结束符是'\0',不

允许调用字符串库函数。

**********/

int func(char *s, char (*w)[10])

{

int t=0,h=0,k=0;

for(int i=0;*(s+i)!='\0';i++)

if(('A'<=*(s+i)&&*(s+i)<='Z')||('a'<=*(s+i)&&*(s+i)<='z')) k++;

if(k==0)return 0;

for(i=0;*(s+i)!='\0';i++)

{

if(('A'<=*(s+i)&&*(s+i)<='Z')||('a'<=*(s+i)&&*(s+i)<='z')) w[t][h++]=*(s+i);

else

{

w[t][h]='\0';;

if(w[t][0]=='\0')

{h=0;continue;}

else

{t++;h=0;}

}

}

return t;

}

/**********

【习题8.282】编写函数,查找并返回p指示的二维数组中的元素最大值。例如,二维数组的元素值依次为{{45,38,-6,78},{34,48,70,4},{-9,0,4,20}},则

函数返回值为78。

**********/

int func(int (*p)[4], int n)

/* 求二维数组中的最大值 */

{

int t=p[0][0];

for(int i=0;i

for(int j=0;j<4;j++)

if(t

t=p[i][j];

return t;

}

/**********

【习题8.285】编写函数,依次对p指示的二维数组的每一行元素值求和,并存入数组sum中。例如,若二维数组的元素值依次为

{{45,38,-6,78},{34,48,70,4},{-9,0,4,20}},

则sum[0..2]={155,156,15}。

**********/

void func(int (*p)[4], int n, int *sum)

/* 求二维数组中各行元素值的和 */

{

int j;

for(int i=0;i

for(*(sum+i)=0,j=0;j<4;j++)

*(sum+i)+=p[i][j];

}

/**********

【习题8.288】编写函数,依次对p指示的二维数组的每一列元素值求平均值,并存入数组avg中。例如,若二维数组的元素值依次为

{{45,38,-6,78},{34,48,70,4},{-9,0,4,20}},

则avg[0..2]={23.33,28.67,34.00}。

**********/

void func(int (*p)[4], int n, float *avg)

/* 求二维数组中各列元素值的平均值 */

{

int i=0,j,t=0;

for(j=0;j<3;j++)

{

for(i=0,*(avg+j)=0;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

相关主题
文本预览
相关文档 最新文档