广工Anyview试题答案-第五章
- 格式:docx
- 大小:27.97 KB
- 文档页数:42
C Anyview 7-9章作业参考答案/**********【习题7.010】写一函数求3个整数中最小的数。
**********/int min(int x, int y, int z)/* 返回3个整数x,y和z中最小的数*/{if(x>y)x=y;if(x>z)x=z;return x;}/**********【习题7.020】编写函数,求用1元、5元和10元三种纸币支付n元钱共有多少种支付法?例如,16元可有6种支付方法:方法 1 2 3 4 5 610元0 0 0 0 1 15元0 1 2 3 0 11元16 11 6 1 6 1**********/int change(int n){int i,j,k,m=0;for(i=0;i<=n;i++)for(j=0;j<=n/5;j++)for(k=0;k<=n/10;k++)if(i+5*j+10*k==n)m++;return m;}/**********【习题7.030】先编写一个判断素数的函数。
再编写一个函数将一个偶数表示为两个素数之和,并返回其中较小的素数。
注:素数指只能被1和自身整除的正整数。
规定0,1不是素数。
**********/int prime(int n)/* 判断素数,如果是素数返回1,不是素数则返回0 */{ int t;if(n==1)return 0;for(t=2;t<=(n/2);t++)if(n%t==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;}/**********【习题7.050】编写函数,将字符串中ASCII码最小的字符放在第一个字符位置,其余字符依次往后移。
第4章//03****************************************************************** /**********【题目】试写一算法,实现链栈的判空操作。
链栈的类型定义为:typedef struct LSNode {ElemType data; // 数据域struct LSNode *next; // 指针域} LSNode, *LStack; // 结点和链栈类型***********/Status StackEmpty_L(LStack S)/* 对链栈S判空。
若S是空栈,则返回TRUE;否则返回FALSE */{if(NULL == S)return TRUE;elsereturn FALSE;}//05****************************************************************** /**********【题目】试写一算法,实现链栈的取栈顶元素操作。
链栈的类型定义为:typedef struct LSNode {ElemType data; // 数据域struct LSNode *next; // 指针域} LSNode, *LStack; // 结点和链栈类型***********/Status GetTop_L(LStack S, ElemType &e)/* 取链栈S的栈顶元素到e,并返回OK; *//* 若S是空栈,则失败,返回ERROR。
*/{if(NULL == S)return ERROR;elsee = S->data;return OK;}//31****************************************************************** /**********【题目】试写一算法,实现链队列的判空操作。
链队列的类型定义为:typedef struct LQNode {ElemType data;struct LQNode *next;} LQNode, *QueuePtr; // 结点和结点指针类型typedef struct {QueuePtr front; // 队头指针QueuePtr rear; // 队尾指针} LQueue; // 链队列类型***********/Status QueueEmpty_LQ(LQueue Q)/* 判定链队列Q是否为空队列。
广东工业大学离散数学Anyview习题答案——更新于2014年12月作者Seasand2014 1.00①试设计一算法,判断元素与集合之间的关系。
实现下列函数:/*** 判断元素与集合之间的关系。
元素和集合之间的关系只有两种。
* @param elem:元素* @param pA:集合* @return: 如果elem ∈pA,则返回TRUE,否则返回FALSE*/Boolean IsInSet(SetElem elem, pSet pA){//Add your code here}//1.00Boolean IsInSet ( SetElem elem, pSet pA ){//Add your code hereSetElem * a = outToBuffer ( pA );for ( ; *a != '\n'; a++ ){if ( elem == *a ){return true;}}return false;}1.01③试设计一算法,实现集合的并运算。
实现下列函数:/*** 进行两个集合的并运算* @param pA:要进行并运算的集合* @param pB:要进行并运算的集合* @return: 将pA和pB进行并运算后得到的集合*/pSet SetUnion(pSet pA, pSet pB){//Add your code here}//1.01pSet SetUnion ( pSet pA, pSet pB ){SetElem * a = outToBuffer ( pA );SetElem * b = outToBuffer ( pB );pSet pC = createNullSet();int i = 0;for ( ; *b != '\n'; b++ ){directInsertSetElem ( pC ,*b );}for ( a = outToBuffer ( pA ); *a != '\n'; a++ ){if ( isInSet ( pB,*a ) != true ){directInsertSetElem ( pC ,*a );}}return pC;}1.02②试设计一算法,实现集合的交运算。
微处理器系统结构与嵌入式系统设计作业答案第三章3.5指令系统的设计会影响计算机系统的哪些性能?指令系统是指一台计算机所能执行的全部指令的集合,其决定了一台计算机硬件主要性能和般鹦瞬wm 术运算指令和逻辑运算指令。
(3)程序控制类指令主要用于控制程序的流向。
(4)输入/输出类指令简称I/O指令,这类指令用于主机与外设之间交换信息。
1霰其轆鬻蜩系鹤徳输出。
另外,其还会影响到运算速度以及兼蓉等。
• 3.9某时钟速率为2.5GHz的流水式处理器执行一个有150万条指令的程序。
流水线有5段,并以每时钟周期1条的速率发射指令。
不考虑分支指令和乱序执行带来的性能损失。
a)同样执行这个程序,该处理器比非流水式处理器可能加速参少?b)此流水式处理器是吞吐量是多少(以MIPS为单位)?YlT =——«2500MIPS P T1流水・3.10—个时钟频率为2.5 GHz 的非流水式处理器,其平均 CPI 是4。
此处理器的升级版本引入了5级流水。
然而,由 于如锁存延迟这样的流水线内部延迟,使新版处理器的时 钟频率必须降低到2 GHZo・(1)对一典型程序,新版所实现的加速比是多少? ・(2)新、旧两版处理器的MIPS 各是多少?・解:(1)对于一个有N 条指令的程序来说:・非流水式处理器的总执行时间 •解: ■• (a.) S =兀=nma 5 卩抵水rn + n-l 速度儿乎是非流水线结构的5倍。
(b ・)人=(4X N)/(2.5X10?)=1.6N X1CF9S ・5级流水处理器的总执行时间7]=(N+5—l)/(2xl()9)二20+4)><10込加速比=茅~ =二z + 4 N很大时加速比=3.2•(2)非流水式处理器CPI=4,贝ij•其执行速度=2500MHz/4=625MIPSo V・5级流水处理器CPI=1,则•其执行速度=2000 MHz /1 =2000 MIPS。
3.11随机逻辑体系结构的处理器的特点是什么?详细说明各部件的作用。
2015年广工数据结构Anyview答案/**********1.06【题目】试写一算法,实现顺序栈的判空操作StackEmpty_Sq(SqStack S)。
顺序栈的类型定义为:typedef struct {ElemType *elem; // 存储空间的基址int top; // 栈顶元素的下一个位置,简称栈顶位标int size; // 当前分配的存储容量int increment; // 扩容时,增加的存储容量} SqStack; // 顺序栈***********/Status StackEmpty_Sq(SqStack S)/* 对顺序栈S判空。
*//* 若S是空栈,则返回TRUE;否则返回FALSE */{if(S.top == 0)return TRUE;elsereturn FALSE;}/**********1.08【题目】试编写算法求一元多项式P(x) = a0 + a1x + a2x^2 + ... + anx^n的值P(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度。
**********/float Polynomial(int n, int a[], float x)/* 求一元多项式的值P(x)。
*//* 数组a的元素a[i]为i次项的系数,i=0,...,n */{float jieguo=a[n]; //1次for(int i=n-1;i>=0;i--) //n次{jieguo=a[i]+x*jieguo;}return jieguo; //整体时间复杂度T(n)=O(n) }1.11【题目】已知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均以值调用的形式在函数参数表中出现。
PLC应用技术(广西工业职业技术学院)智慧树知到课后章节答案2023年下广西工业职业技术学院广西工业职业技术学院第一章测试1.PLC的含义是()。
答案:可编程控制器2.世界上第一台PLC-产生于()。
答案:1969年3.某PLC的点数是24个点,表示()。
答案:输入和输出点总数是24个4.按结构形式分,S7-1200PLC是属于()。
答案:整体结构5.S7-1200PLC属于小型机,点数在()。
答案:256点以内6.数字量输入模块某一外部输入开关接通时,对应的过程映像输入位为()。
答案:1状态7.S7-1200 CPU集成了()等工艺功能。
答案:高速计数、脉冲输出、PID控制8.对SB、DI、DO、AI、AO下面说法正确的是()。
答案:SB是信号板模块、DI是数字量输入模块、DO是数字量输出模块,AI是模拟量输入模块,AO是模拟量输出模块9.继电器输出的PLC其负载电源电压范围为DC5~30V或AC5~250V。
可带动下面的电灯负载(交流)最大是()。
答案:200W10.PLC是由CPU模块、I/O接口、电源、存储器等组成。
答案:对11.PLC能用于工业现场的原因是价格便宜。
答案:错12.S7-1200幅盖了S7-200全部功能和S7-300R的部分功能。
答案:对13. CPU1215C-DC/DC/DC表示是晶体管输出。
答案:对14.PLC采用扫描方式工作。
答案:错15.对PLC的CPU1214C AC/DC/Relay,其中AC表示PLC的电源是交流电,DC表示输入端电源是直流电,Relay表示PLC输出端是继电器输出。
答案:对16.继电器输出的PLC输出电压是交流5V-250V或直流5V-30V,输出电流是0.3A,负载是DC30W,AC300W。
答案:错17.晶体管输出的PLC输出电压是交流5V-250V或直流24V,输出电流是0.5A。
答案:错18.CPU1215C-DC/DC/Relay的输出端负载电源只能用直流电。
【题目】若两棵二叉树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;elsereturn FALSE;}else//以上两种情况都不符合,就直接返回FALSEreturn 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==’#’){k—-;x=PreOrder(T-〉rchild, k);}return x;}TElemType PreOrderK(BiTree T, int k)/* 求对二叉树T先序遍历时第k个访问的结点的值。
广工数据结构anyview 80道上机题1.void Descend(int &x, int &y, int &z)/* 按从大到小顺序返回x,y和z的值*/ {int t;if(x<z){t=z;z=x;x=t;}if(y<z){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<k){if(m==k-1) f=1;else f=0;return OK;}a=(int*)malloc((m+1)*sizeof(int));for(i=0;i<k-1;i++) a[i]=0;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;elsescore[result[i].schoolname-'A'].femalescore+=result[i].score;}}4Status 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;}5float Polynomial(int n, int a[], float x)/* 求一元多项式的值P(x)。
广工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 <stdio.h>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);**********/void main(){int s;for(int i=1;i<=n;i++)s+=i;/* 请添加相关说明和语句 */printf("1+2+...+n=%d\n",s); /* 注意:不要修改此输出语句 */}/**********【习题5.026】n和s是系统给定的外部整型变量(不需要自行定义)。
编写程序,求1到n之间的奇数之和,并将结果存放到s。
**********/void main(){for(int i=1;i<=n;i+=2)s+=i;}/**********【习题5.028】n和s是系统给定的外部整型变量(不需要自行定义)。
编写程序,求1到n之间的偶数之和,并将结果存放到s。
**********/void main(){for(int i=2;i<=n;i+=2)s+=i;}/**********【习题5.029】请仅在程序空缺处填入合适内容,使其实现功能:输入大于1的整数到n,在同一个循环语句中分别计算1到n之间的奇数和偶数之和。
**********/void main(){int odd=0,even=0,i,n,p;scanf("%d",&n);for(i=1,p=0;i<=n,p<=n;i+=2,p+=2){odd+=i;even+=p;}if(n>20)odd-=(n+1);printf("sum of odd=%d ",odd); /*奇数之和*/printf("sum of even=%d\n",even);/*偶数之和*/}/**********【习题5.030】系统给定外部整型变量n和长整型变量f(不需要自行定义)。
编写程序,求n的阶乘n!,并将结果存放到f。
例如,当n=6时,f=6!=1*2*...*6=720。
注意:0!=1。
**********/void main(){double g=1;for(int i=1;i<=n;i++)g*=i;f=g;}/**********【习题5.032】系统给定外部整型变量n和长整型变量f(不需要自行定义)。
编写程序,求n的双阶乘n!!,并将结果存放到f。
双阶乘的定义是:当n是奇数时,n!为不大于n的所有奇数的乘积,如:7!!=1×3×5×7。
当n为偶数时表示不大于n的所有偶数的乘积(0除外),如:8!!=2×4×6×8。
**********/void main(){int i;double g=1;if(n%2==0)for(i=2;i<=n;i+=2)g*=i;elsefor(i=1;i<=n;i+=2)g*=i;f=g;}/**********【习题5.034】系统给定外部整型变量n和浮点变量f(不需要自行定义)。
编写程序,求负整数n 的阶乘n!,并将结果存放到f。
假设m是正整数,负整数-m的阶乘定义是:(-m)!=1/(m+1)!。
**********/#include<math.h>void main(){int y,z=1;y=fabs(n);for (int i=1;i<=y+1;i++)z*=i;f=1.0/z;}/**********【习题5.040】m,n和s是系统定义的外部整型变量(不需要自行定义)。
编写程序,根据m的值求满足1+2+...+n>=m的最小n,并将1+2+...+n的结果存放到s。
例如,若m=50,则n=10,s=55。
**********/void main(){int i;for(i=1;s<m;i=i+1)s=s+i;n=i-1;}/**********【习题5.042】m,n和s是系统定义的外部整型变量(不需要自行定义)。
编写程序,根据m的值求满足1+2+...+n<m的最大n,并将1+2+...+n的结果存放到s。
例如,若m=50,则n=9,s=45。
**********/void main(){int sum=0;if(m<=1)n=s=0;elseif(m<=3)n=s=1;else{for(int i=1;i<=20;i++){sum+=i;if(sum>m)break;}n=i-1;s=sum-n-1;}}/**********【习题5.050】n和s分别是系统给定的外部整型变量和浮点型变量(不需要自行定义)。
编写程序,求1+1/2+1/3+...+1/n,并将结果存放到s。
**********/void main(){for(int i=1;i<=n;i++)s+=1.0/i;}/**********【习题5.051】系统给定外部整型变量n和浮点型变量s(不需要自行定义)。
编写程序,求1-1/2+1/3-1/4+...1/n,并将结果存放到s。
**********/void main(){int m=1;for(int i=1;i<=n;i++){s+=m*(1.0/i);m=-m;}}/**********【习题5.053】系统给定外部整型变量n和浮点型变量s(不需要自行定义)。
编写程序,求1+1/(1+2)+1/(1+2+3)+...+1/(1+2+...+n),并将结果存放到s。
**********/void main(){int sum=0;for(int i=1;i<=n;i++){sum+=i;s+=1.0/sum;}}/**********【习题5.055】系统给定外部整型变量n和浮点型变量pi(不需要自行定义)。
编写程序,求序列4,-4/3,4/5,-4/7,4/9,-4/11...的前n项和,并将结果存放到pi。
**********/void main(){int m=1;for(int i=1;i<=n;i+=2){pi+=m*(1.0/i);m=-m;}pi=4*pi;}/**********【习题5.056】系统给定外部整型变量n和浮点型变量pi2(不需要自行定义)。
编写程序,求1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+...+1*2*...*n/(3*5*7*.. .*(2n+1)),并将结果存放到pi2。
**********/void main(){double a=1,b=1;for(int i=1;i<=n;i++){a*=i;b*=(2*i+1);pi2+=a/b;}pi2+=1;}/**********【习题5.062】请仅在程序空缺处填入合适内容,使其实现功能:逐个输入整数,直到输入0为止,计算所输入数值之和并输出。
**********/#include <stdio.h>void main(){ int sum=0, n=0;scanf("%d",&n);while(n!=0){sum+=n;scanf("%d",&n);}printf("sum = %d",sum);}/**********【习题5.095】n和s是分别是系统给定的外部整型变量和实型变量(不需要自行定义)。
编写程序,求分数序列2/1,3/2,5/3,8/5,13/8,21/13,...的前n项和,并将结果存放到s。
**********/void main(){int arr[300];arr[0]=1; arr[1]=2;for(int i=1;i<=n;i++){arr[i+1]=arr[i]+arr[i-1];s+=((double)arr[i])/arr[i-1];}}/**********【习题5.112】请仅在程序空缺处填入合适内容,使其实现功能:计算输入正整数n并计算其各位数字之和。
例如,输入n的值是12345时,1+2+3+4+5=15,输出sum=15。
**********/#include <stdio.h>void main(){ int n,sum=0;scanf("%d",&n);do{ sum=sum+n%10;n/=10;}while(n);printf("sum = %d",sum);}/**********【习题5.125】请仅在程序空缺处填入合适内容,使其实现功能:从键盘输入一批整数,直到输入0时结束,输出其中百位数字是3的整数之和。