广工Anyview试题答案第八章

合集下载

广工Anyview试题答案

广工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;j<n-1;j ){if(s[k].birth.year>s[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;j<n-1;j ){if(s[k].birth.year>s[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];}/**********【习题9.027】结构体类型定义如下:struct student{ char id[10]; //学号char name[10]; //姓名int score[5]; //各门课成绩};结构体数组s存储了n个学生的学号、名字和各门课成绩。

广东工业大学《单片机原理及应用》08.01A

广东工业大学《单片机原理及应用》08.01A

广东工业大学考试试卷( A )课程名称:单片机原理与接口技术(05电子1~6/光信1~2班)试卷满分100分考试时间: 2008 年1 月16 日 (第20周星期三)一、填空。

(每空1分,共30分)1.指令由和操作数两部分组成,用二进制表示的指令称为语言指令。

2.通用CPU核心部件为单元,其作用是承担和逻辑运算。

3.当存储器片选信号CS处于高电平状态时,存储器芯片处于状态,数据总线处于态。

4.MCS-51 MCU字长为位,含义是(数据总线、地址总线、控制总线)宽度为位,最大寻址能力为KB。

5.MCS-51 MCU含有个位定时/计数器,其中的功能最强。

6.MCS-51 MCU外中断可编程为和下降沿触发。

7.八段LED数码静态显示电路原则上由、笔段译码器、组成,不过在MCU 控制系统中,一般不用硬件电路。

8.对89C51RX兼容芯片ERAM写操作时,(有效、无效),此时P0口作为(I/O引脚、数据/地址总线AD7~AD0)。

9.当使用外部ROM时,MCS-51芯片EA引脚(接地、接VCC、悬空)。

10.MCS-51 P0.0引脚锁存器为1,P0.0引脚处于(高电平、低电平、高阻)状态。

11.在以MCS-51为核心的控制系统中,最好选择(P0、P1~P3)I/O引脚构成4*4矩阵键盘,这样可省去电阻和隔离二极管。

12.MCS-51复位后,PC为。

13.P0口为(漏极开路、准双向结构、CMOS互补推挽),而P1~P3为,因此MCS-51 I/O引脚具有线与功能,输出引脚对(地、电源VCC)短路也不会出现过流现二、指出下列指令中指定操作的寻址方式(每空1分,共15分)1. MOV ACC, 30H ;目的操作数寻址方式为:; 源操作数寻址方式为:2. MOV R7, #16 ;目的操作数寻址方式为:; 源操作数寻址方式为:3. MOV B, @R0 ;目的操作数寻址方式为:; 源操作数寻址方式为:4. MOV C, 20H.3 ;目的操作数寻址方式为:; 源操作数寻址方式为:5. INC P1 ;操作数P1寻址方式为:6. MOVC A, @A+DPTR ;源操作数寻址方式为:;操作对象为7. MOVX A, @ DPTR ;源操作数寻址方式为:;操作对象为8. JBC P1.0, NEXT ;操作数NEXT寻址方式为:;操作对象为(P1.0引脚、P1.0锁存器位)。

广工CAnyview参考标准答案

广工CAnyview参考标准答案

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码最小的字符放在第一个字符位置,其余字符依次往后移。

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

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

广工数据结构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)。

广东工业大学生产运营管理(张毕西)习题答案新版

广东工业大学生产运营管理(张毕西)习题答案新版

第六章思考与练习题4、(1)计算流水线节拍。

r=940min/940件=1min/件=60s/件(2)采用分枝定界法进行工序同期化重组。

S min=(20+16+24+23+20+16+28+15+27+31+28)/60=5个(3)计算工序重组后的流水线负荷率。

k a=(60/60+59/60+43/60+58/60+28/60)/5=0.835、N=1800+1750*(35/40)+1600*(30/40)=4532件 把各种产品产量折合成以代表产品B 表示的计划总产量:N=1750+1800*40/35+1600*30/35≈5179件r a=26000min/4532件=5.74min/件r b=5.74min/件*(35/40)=5.02min/件 r c=5.74min/件*(30/40)=4.31min/件6、代表产品法:有效工作时间=280*8*2*60*(1-0.08)=247296min N=3*(30/30)+4*(25/30)+3+2*(40/30)=12万件 r c=247296min/120000件=2.06min/件r a=2.06min/件*(30/30)=2.06min/件开始1、2、4 1、4、7 1、2、5 8、94、6、74、6、9 10、1112r b=2.06min/件*(25/30)=1.72min/件r d=2.06min/件*(40/30)=2.75min/件时间分配法:总劳动量=(30000*30+40000*25+30000*30+20000*40)=360 0000min比重a=(30000*30)/360 0000=0.25比重b=(40000*25)/360 0000=0.28比重c=(30000*30)/360 0000=0.25比重d=(20000*40)/360 0000=0.22r a=(0.25*247296)/30000=2.06min/件r b=(0.28*247296)/40000=1.73min/件r c=(0.25*247296)/30000=2.06min/件r d=(0.22*247296)/20000=2.72min/件7、(1、2、3)(4、6、7)(5、8、9)(10、11)这个可行的组合方案有多个。

广工数据结构anyview答案

广工数据结构anyview答案

第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是否为空队列。

2014年广工离散数学Anyview参考答案

2014年广工离散数学Anyview参考答案

广东工业大学离散数学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②试设计一算法,实现集合的交运算。

2015年广工数据结构Anyview答案-推荐下载

2015年广工数据结构Anyview答案-推荐下载

/********** 1.18【题目】试编写算法,计算 i!×2^i 的值并存入数组 a[0..n-1]的第 i-1 个分量中 (i=1,2,…,n)。假设计 算机中允许的整数最大值为 MAXINT,则当对某个 k (1≤k≤n)使 k!×2^k>MAXINT 时,应按出错处理。注意 选择你认为较好的出错处理方法。 **********/ Status Series(int a[], int n) /* 求 i!*2^i 序列的值并依次存入长度为 n 的数组 a; */ /* 若所有值均不超过 MAXINT,则返回 OK,否则 OVERFLOW */ {
long m=1; for(int i=1;i<=n;i++) {
m=m*i*2; if(m<=MAXINT) {
a[i-1]=m; } else return OVERFLOW; } return OK; } /********** 1.23【题目】假设有 A、B、C、D、E 五个高等院校进行田径对抗赛, 各院校的单项成绩均以存入计算机并构成一张表,表中每一行 的形式为: 项目名称 性别 校名 成绩 得分 编写算法,处理上述表格,以统计各院校的男、女总分和团体 总分,并输出。 **********/
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置2试时32卷,3各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并25工且52作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

(完整)2016最新广工anyview数据结构答案

(完整)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;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)分析

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

广工数据结构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)。

广工anyview7-9章参考答案

广工anyview7-9章参考答案

广工anyview7-9章参考答案习题7.010 return(x<y? x<z?x:z:y<z?y:z);习题7.020int i=0,j,k,p=0;for(i=0;i<=n/10;i++){for( j=0;j<=n/5;j++)for(k=0;k<=n;k++) {if((k+j*5+i*10)==n)p++;}}return p;int prime(int n)/* 判断素数,如果是素数返回1,不是素数则返回0 */{for(int i=2;i<=sqrt(n);i++){if (n%i==0){return (0);break; }}return 1;}习题7.030 int f(int i)/* 将偶数i表示为两个素数之和,返回其中较小的素数*/{int a,b;a=3;for(a;a<=i/2;a++){if ((prime(a)==1)&&(prime(b=(i-a))==1))break;}return(a);}习题7.050int i,j;char t;t=a[0][0]; //先提取一个值,后面的就可以直接覆盖;for(i=0;i<N-1;i++)a[i][0]=a[i+1][0];for(i=0;i<N-1;i++)a[N-1][i]=a[N-1][i+1];for(i=N-1;i>0;i--)a[i][2]=a[i-1][2];a[0][2]=a[0][1];a[0][1]=t;习题7.068int i;char t=a[0][0];for(i=0;i<N-1;i++)a[0][i]=a[0][i+1];for(i=0;i<N-1;i++)a[i][2]=a[i+1][2];for(i=0;i<N-1;i++)a[2][2-i]=a[2][2-i-1];a[2][0]=a[1][0];a[1][0]=t;习题7.072int i,j;char t1=a[0][2],t2=a[1][2],t3=a[2][2]; for(i=0;i<N;i++)for( j=2;j>0;j--)a[i][j]=a[i][j-1];a[0][0]=t1;a[1][0]=t2;a[2][0]=t3;习题7.075int i,j;char d=a[0][0],b=a[1][0],c=a[2][0];for(i=0;i<N;i++)for(j=0;j<N-1;j++)a[i][j]=a[i][j+1];a[0][2]=d;a[1][2]=b;a[2][2]=c;习题7.082int i,j;char t1=a[2][0],t2=a[2][1],t3=a[2][2]; for(i=2;i>0;i--)for(j=0;j<N;j++)a[i][j]=a[i-1][j];a[0][0]=t1;a[0][1]=t2;a[0][2]=t3;习题7.085int i,j;char t1=a[0][0],t2=a[0][1],t3=a[0][2]; for(i=0;i<N-1;i++)for(j=0;j<N;j++)a[i][j]=a[i+1][j];a[2][0]=t1;a[2][1]=t2;a[2][2]=t3;习题7.103int t,r;if(m<n){t=m;m=n;n=t;}while((r=m%n)!=0){m=n;n=r;return n;习题7.105int t,r,h;h=m*n;if(m<n){t=m;m=n;n=t;}while((r=m%n)!=0){m=n;n=r;}return h/n;习题7.115int c,a1,a2,b1,b2;a1=a/10; a2=a%10;b1=b/10; b2=b%10;c=a1*1000+b1*100+a2*10+b2; return c;习题7.125float t;b=r*100; //只保留前三个数 t=b*1.0/100;if(r-t>=0.005)t=t+0.01;return t ;习题7.135int a[100],i=1,b=0;while(n/10!=0){a[i]=n%10;n=n/10;i++;}for(i;i>=1;i--){if(i==3)b=b+a[i]*100;if(i==2)b=b+a[i]*10;if(i==1) b=b+a[i];}return b;习题7.175int i ,j,a[1000] ,b=0 ;float s=0.0;for(i=0,j=1;j<n;j++){if(j%3==0 && j%7==0){a[i]=j;i++;} }for(i=0;a[i];i++)b+=a[i];s=sqrt(b);return s;习题7.184float s=0,d=0;int j=1,i=1;if(n==1)return s=1.0;else if(n>=2){while(i<=n){while(j<=i){ d=d+j;j++;}s=s+ 1/d;i++;}return s;}习题7.187float d=0,s=0;int i,j=2;for(i=1;i<=n;i++){d=i*j;s=s+ (1/d);j++;}return s;习题7.195int t;if(m<n){t=m;m=n;n=t;}int i=1,j=1,k=1;double a=1;double b=1;int c=1;float s;for(i=1;i<=m;i++)a=a*i; for(j=1;j<=n;j++)b=b*j;for(k=1;k<=(m-n);k++)c=c*k;s=a/(b*c);return s;习题7.205int a[100],i=2,j=0,s=0;for(i;i<n;i++){if(n%i==0)a[j]=i;j++;}for(j;j>=0;j--)s+=a[j];return s;习题7.255int i=1,j=1,s=1;float n=1.0,t=1.0,si=1.0,sj=1.0; while(t>=eps){ si*=i; //si是分子sj*=(j+2); // 分母t=si/sj;n+=t;i++;j+=2;}return (2*n);习题7.265int i,j;j=0;for(i=0;s[i]!='\0';i++){ if(i%2==0){if(s[i]=='8' || s[i]=='6' || s[i]=='4' || s[i]=='2' || s[i]=='0'){t[j]=s[i];j++;}}}习题7.275int i,j,k;char c;for(i=0;s[i];i++) j++;for(i=j-1;i>=0;i--) {if(s[i]=='*') k++;else break;} if(k>n) for(i=j-1;i>(j-1-k+n);i--) s[i]='\0';习题7.315int i=6,j=0;for(i;i<n;i++){if(i%7==0 || i%11==0) {a[j]=i;j++;}}return (j);习题7.317int i=1,j=0;for(i;i<=n;i++){if(i%c==0 && i%d==0) {a[j]=i;j++;}}return (j);习题7.325int j=0;for(j;j<11;j++)c[j]=0;int i=0;for(i;i<n;i++){if(0<=a[i]&&a[i]<=9)c[0]++;if(10<=a[i]&&a[i]<=19)c[1]++;if(20<=a[i]&&a[i]<=29)c[2]++;if(30<=a[i]&&a[i]<=39)c[3]++;if(40<=a[i]&&a[i]<=49)c[4]++;if(50<=a[i]&&a[i]<=59)c[5]++;if(60<=a[i]&&a[i]<=69)c[6]++;if(70<=a[i]&&a[i]<=79)c[7]++;if(80<=a[i]&&a[i]<=89)c[8]++;if(90<=a[i]&&a[i]<=99)c[9]++; if(100<=a[i])c[10]++;}习题7.335int i,j=0;char b[100]; //思路:提取必要元素到另一个数组中去,再用该数组覆盖原数组b[j]=a[i];for(i=1,j=1;a[i]!='\0';i++){if( a[i]==a[i-1]) continue ;b[j]=a[i];j++;}for(i=0;i<=j;i++){a[i]=b[i];}a[j]='\0';return j;习题7.345int i=0;int j=0;for(i;i<strlen(s);i++){if(s[i]!=32&&s[i+1]==32)j++;}if(s[i]!=32)return (j+1);else if(s[i]==32)return j;习题7.355int i=0,j=0;for(i;s[i]==42;i++);for(j;s[i+j]!=0;j++)s[j]=s[j+i];for(j;s[j]!=0;j++)s[j]=42;习题7.513int s=1;for(int i=0;i<n;i++) s*=a[i];return s;习题7.523int s=0;for(int i=0;i<n;i++) s+=a[i]*a[i];return s;习题7.533int i=0,j ;for( j=1;j<=k;j++)c[j]=0;for(i;i<n;i++){for( j=1;j<=k;j++){if(v[i]==j){c[j]++;break; }}}习题7.535int i=0,j,max=0; ;for( j=1;j<=k;j++)c[j]=0;for(i;i<n;i++){for( j=1;j<=k;j++){if(v[i]==j){c[j]++;break; } }}for(j=1;j<=k;j++){if(max<c[j])max=c[j];}return max;习题7.563int i=0,j,k,t;while(n){d[i]=n%10;i++;n=n/10;}return i;习题7.565int i=0,a[20],j=0;while(n){d[i]=n%10;i++;n=n/10;}for(i-1,j;i-1>=0;i--,j++) a[j]=d[i-1];for(i=0;i <= j ;i++)d[i]=a[i];return j;习题7.655int i=0;for(i;i<5;i++)num[i]=0;i=0;while(s[i]){if(s[i]=='A'||s[i]=='a')num[0]++;if(s[i]=='E'||s[i]=='e')num[1]++;if(s[i]=='I'||s[i]=='i')num[2]++;if(s[i]=='O'||s[i]=='o')num[3]++;if(s[i]=='U'||s[i]=='u')num[4]++;i++;}习题7.675int i;for(i=0;i<5;i++)p[i]=0;for(i=0;i<n;i++){if(s[i]<60)p[0]++;if((s[i]>=60)&&(s[i]<=69)) p[1]++;if((s[i]>=70)&&(s[i]<=79)) p[2]++;if((s[i]>=80)&&(s[i]<=89)) p[3]++;if((s[i]>=90)&&(s[i]<=100)) p[4]++;}习题7.685int i,j=0,k=0;for(i=1;i<=m;i++)if(m%i==0){ d[j]=i;j++;k++;}return (n[0]=k);习题7.755int i,j,skey=0;for(j=0;key[j];j++) skey+=key[j]*key[j]; for(i=0;str[i];i++){if(str[i]>='a'&&str[i]<='z'){str[i]=(str[i]+skey)%128; }}习题8.011int i=n-1;int j=0;for(i;i>=0;i--){*(t+j)=*(s+i) ;j=j+1;}习题8.012int n=strlen(s);int i=n-1;int j=0;for(i;i>=0;i--){*(t+j)=*(s+i) ;j=j+1;}习题8.015int i=1,j=1;char t[10],temp;for(i;i<n-1;i++)t[i]=s1[i];for(i=1;i<n-1;i++) for(j=1;j<n-1-i;j++){ //冒泡排序,由大到小if( t[j]<t[j+1]){temp=t[j];t[j]=t[j+1];t[j+1]=temp;}}for(i=1;i<n-1;i++)s2[i]=t[i];s2[0]=s1[0];*(s2+n-1)=*(s1+n-1);int n=strlen(s1);int i=1,j=1;char t[10],temp;for(i;i<n-1;i++)t[i]=s1[i];习题8.016for(i=1;i<n-2;i++) for(j=1;j<n-1-i;j++){if( t[j]<t[j+1]){temp=t[j];t[j]=t[j+1];t[j+1]=temp;}}for(i=1;i<n-1;i++)s2[i]=t[i];s2[0]=s1[0];*(s2+n-1)=*(s1+n-1);习题8.018int n=strlen(s); //长度char a[20],temp;int i=m,j,k=0;for(i;i<n;i++)a[i]=s[i];for(i=m,k;i<n-1;i++,k++) for(j=m;j<n-1-k;j++){if(a[i]>a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=a[i];}}习题8.020int t;for(;*s;s++ ){if(*s==c){t=1;break;}}if(t==1)return s;if(t!=1) return NULL;习题8.033int s[12]={31,28,31,30,31,30,31,31,30,31,30,31},m;//判断是否闰年if(year%4==0&&year%100!=0||year%400==0)s[1]=29;if(year<1||yearday<1||(s[1]==29&&yearday>366)||(s[1]==28&& yearday>365))return 0;else{for(m=0;yearday-s[m]>=0&&m<=10;m++)yearday-=s[m];if(yearday==0){m-=1;yearday=s[m];}*pmonth=m+1;*pday=yearday;return 1;}}习题8.044int sum ,i;sum=0;i=1;char t;t=*s; //首元素 for(;*s!='\0';s++){if('0'<=*s&&*s<='9') {sum=sum*10+(*s-48); }}if(t=='-'){sum=(-1)*sum;} return sum;习题8.105int i=0, max=0, *p;p=s;for(i;i<n;i++){if(*p>max)max=*p;p++;}return max;习题8.124int i=1, min=1000, *p,sum;p=s[1];for(i=1;i<n-1;i++){ // sum=*(p-1)+ *p+ *(p+1); sum=s[i-1]+s[i]+s[i+1];if(min>sum)min=sum;p++;} return min;习题8.132*sum=x+y;习题8.136return (*x+*y);习题8.138int t;if(*x>*y){t=*x;*x=*y;*y=t;return 1;}else return 0;习题8.143int i=0,j;for(i;i<n;i++)if(*(a+i)==x){ j=1;break;} if(j==1)return (i+1);else return 0;习题8.146int i=0,j=0;for(i;i<n;i++){if(*(a+i)==x)j++; }return j;习题8.203int i=0,j=0;while(s[i]!=0){if(s[i]!=32)j++;i++;}return j;习题8.212int i=0,j=0;while(s[i]!=0){if(s[i]==c){j=1;break;} i++;}if(j==1) return (i+1); else return 0;习题8.215int i=0,j=0;while(s[i]!=0){if(s[i]==c)j++;i++;}return j;习题8.222int i=0;while(s[i]!=0){t[i]=s[i];i++;}习题8.225int i=0;for(i;i<n;i++) //可能有时会出错{t[i]=s[i];}习题8.228for( ;*s!='\0'; s++);for(;n>=0;s--,n--){*(t+n)=*s;} //一定是指到最后的,不如倒着来赋值习题8.231int j;for(j=0;j<n;j++,i++){t[j]=s[i-1];}t[j]=0;习题8.234int i=0;while(s[i]){if('a'<=s[i]&&s[i]<='z')t[i]=s[i]-32; else t[i]=s[i];i++;}习题8.237int i=0;while(s[i]){if('A'<=s[i]&&s[i]<='Z')t[i]=s[i]+32;else t[i]=s[i];i++;}习题8.243int i,j=0,flag=1;for(i=0;s[i];i++,j++) //先找到位置,可能有错{if(s[i]==t[0])break;}for(int k=0;t[k];k++,i++){if(t[k]!=s[i]){flag=0;break;}}if (flag==1) return j+1;else return 0;习题8.246int i,c=0,k=0,j=1;int a[100];a[0]=0;for(i=0;*(s+i)!='\0';i++,j++)if((*(s+i)>=65&&*(s+i)<=90)||(*(s+i)>=97&& *(s+i)<=122 )){a[j]=0;if(a[j]==0&&a[j-1]==1){*(*(w+k)+c)='\0';k++;c=0;}*(*(w+k)+c)=*(s+i);c++;}elsea[j]=1;if (k>0)return k+1;elsereturn k;习题8.282int i,j,max=0;for(i=0;i<n;i++)for(j=0;j<4;j++){if(max<p[i][j])max=p[i][j]; }return max;习题8.285int i,j,s=0;for(i=0;i<3;i++)for(j=0;j<4;j++){s+=p[i][j];if(j==3){sum[i]=s;s=0;}}习题8.288int i,j,s=0;for(i=0;i<4;i++)for(j=0;j<3;j++){s+=p[j][i];if(j==2){avg[i]=s/3.0;s=0;}}习题9.023int i,j=0; //一个用来找,一个用来记录, 并把第一个假设为条件。

单片机第8章习题答案

单片机第8章习题答案

第8章习题答案1.简述键盘扫描的主要思路。

答案:键盘扫描的主要思路:首先确定是否有键按下,消除抖动,若有键按下,输出逐行或列的扫描字,读取列或行的状态,确定按键键值,然后再判断按键是否释放,若释放,即可返回。

2.简述软件消除键盘抖动的原理。

答案:软件消除键盘抖动的原理:当CPU发现有键按下的情况下,为了防止是机械抖动的误动作,可以采用软件延时10ms,然后再次检测按键是否仍然为闭合状态,若仍然闭合,则确定有键按下,否则就是键盘抖动,不予理睬。

3.什么叫LED的动态显示和静态显示。

答案:静态显示形式,即七段LED数码管在显示某一个字符时,相应的段(发光二极管)恒定的导通或截至,直至换显其他字符为止。

动态显示是将所有数码管的段码线对应并联在一起,由一个8位的输出口控制,每位数码管的公共端(称位选线)分别由一位I/O口线控制,以实现各位的分时选通。

4.要求利用8051的P1口扩展一个2 2行列式键盘电路,画出电路图,并根据所绘电路编写键扫描子程序。

答案:设行线H1~H2连接到51单片机P1口的P1.0~P1.1,列线L1~L2连接到P1口的P1.4~P1.5。

电路图如下:键扫描子程序:KEY: MOV P1, #0FH ;列输出低电平,行输出高电平MOV A, P1 ;读P1口状态ANL A, #0FH ;保留行状态CJNE A, #0FH, KEY0 ;有键按下转KEY0SJMP KEY ;无键按下等待,转键检测KEY0: LCALL DELAY10 ;调10mS延时取抖MOV A, P1ANL A, #0FHCJNE A, #0FH, KEY1 ;不是抖动转键值判断SJMP KEY ;是抖动到键检测KEY1: MOV P1, #11101111B ;第一列键被按下判断MOV A, P1ANL A, #0FHCJNE A, #0FH, KEYC1 ;第一列键被按下转KEYC1处理MOV P1, #11011111B ;第二列键被按下判断MOV A, P1ANL A, #0FHCJNE A, #0FH, KEYC2 ;第二列键被按下转KEYC2处理LJMP KEY ;均不是转到键检测KEYC1: MOV A, P1 ;读键值键值处理JB E0H, KEYC11LCALL K1 ;K1键处理SJMP FANHKEYC11: LCALL K3 ;K3键处理SJMP FANHKEYC2: MOV A, P1 ;读键值键值处理JB E0H, KEYC21LCALL K2 ;K2键处理SJMP FANHKEYC21: LCALL K4 ;K4键处理FANH: RET5.请在图8-1的基础上,设计一个以中断方式工作的开关式键盘,并编写其中断键处理程序。

PLC应用技术(广西工业职业技术学院)智慧树知到答案2024年广西工业职业技术学院

PLC应用技术(广西工业职业技术学院)智慧树知到答案2024年广西工业职业技术学院

PLC应用技术(广西工业职业技术学院)广西工业职业技术学院智慧树知到答案2024年第一章测试1.PLC的含义是()。

A:个人PC机 B:PID控制器 C:顺序控制器 D:可编程控制器答案:D2.世界上第一台PLC-产生于()。

A:1964年 B:1969年 C:1973年 D:1958年答案:B3.某PLC的点数是24个点,表示()。

A:输出点是24个 B:输入点是24个 C:输入和输出点总数是24个 D:输入点是2个,输出点是4个答案:C4.按结构形式分,S7-1200PLC是属于()。

A:模块结构 B:整体结构 C:模块+整体 D:叠装结构答案:B5.S7-1200PLC属于小型机,点数在()。

A:24点以内 B:256点以内 C:256点以上 D:1024点以内答案:B6.数字量输入模块某一外部输入开关接通时,对应的过程映像输入位为()。

A:不确定 B:1状态 C:0状态 D:没有状态答案:B7.S7-1200 CPU集成了()等工艺功能。

A:电源、CPU、接口模块 B:梯形图、功能块图 C:高速计数、脉冲输出、PID 控制答案:C8.对SB、DI、DO、AI、AO下面说法正确的是()。

A:SB是信号板模块、DI是数字量输入模块、DO是数字量输出模块,AI是模拟量输入模块,AO是模拟量输出模块 B:SB是信号模块、DI是数字量输入模块、DO是数字量输出模块,AI是模拟量输入模块,AO是模拟量输出模块 C:SB是信号板模块、DI是模拟量输入模块、DO是模拟量输出模块,AI是数字量输入模块,AO是数字量输出模块 D:SB是信号模块、DI是模拟量输入模块、DO是模拟量输输出模块,AI是数字量输入模块,AO是数字量输出模块答案:A9.继电器输出的PLC其负载电源电压范围为DC5~30V或AC5~250V。

可带动下面的电灯负载(交流)最大是()。

A:1000W B:100W C:200W D:30W答案:C10.PLC是由CPU模块、I/O接口、电源、存储器等组成。

广工2008汇编语言(B)带答案注释

广工2008汇编语言(B)带答案注释

广东工业大学试卷用纸,共 5页,第1 页7.中断向量表中地址为0:124H的中断类型号是( C )。

中断类型号乘与4等于向量地址,所以124H除于4=49H,注意16进制的算法A. 48HB. 4AHC. 49HD. 50H8.取变量或标号偏移地址的伪操作符是( A )。

A. OFFSETB. PTRD. SEG9.要使寄存器CL的最高位为1其它位保持不变,应使用的指令是( B )。

OR指令:AB变量中只要有一个变量取值为1,则它们或运算结果就是180H就是1000 000,所以最高位一定是1,其他位根据A变量决定A. XOR CL, 80HB. OR CL, 80HC. AND CL, 7FHD. NOT CL10.从键盘输入大写字母A,则在寄存器AL中存放的值为( C )。

A字母对应的ASCII码为65,65化为16进制为41HA. 31HB. 51HC.41HD.61H11.若A,B为无符号数,执行CMP A,B指令后,要求A>B时转移的条件指令为(B )。

A. JLEB. JAC. JBED. JG无符号数比较:ja/jb有符号数比较:jg/jl12.下列指令执行后总是使CF=0,OF=0的是( B )。

包括除了not至另外的所有逻辑运算指令(AND,OR,XOR,TEST)A.NEGB.TESTC. NOTD. DEC13.在使用DOS功能调用INT 21H时,要在屏幕上显示一个字符‘2’,应将AH设置为( C )。

A. 09HB. 31HC. 02HD. 01H14. 指令MOV AX,[SI+BX]中源操作数隐含的段为( B )。

A. 代码段B. 数据段C. 堆栈段D. 附加段15.已知SP=2000H,执行RET 2后(RET为段间返回指令),SP的值为( A )。

段间返回指令时远返回近返回还是远返回执行的操作不同如果是近返回:SP=SP+2+m如果是远返回:SP=SP+4+m16.A. 2006HB. 2004HC. 2002HD. 1FFAH广东工业大学试卷用纸,共5页,第2 页广东工业大学试卷用纸,共5页,第3 页广东工业大学试卷用纸,共5页,第5 页广东工业大学试卷用纸,共5页,第7 页广东工业大学试卷用纸,共5页,第8 页。

广工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 <stdio.h>void main<>{ inti,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;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<>{inty,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<>{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<>{intarr[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<>{ intn,sum=0;scanf<"%d",&n>;do{ sum=sum+n%10;n/=10;}while<n>;printf<"sum = %d",sum>;}/**********[习题5.125]请仅在程序空缺处填入合适内容,使其实现功能:从键盘输入一批整数,直到输入0时结束,输出其中百位数字是3的整数之和.**********/#include <stdio.h>void main<>{ intnum,sum=0;scanf<"%d",&num>;do{ if<<num/100>%10==3>sum+=num;scanf<"%ld",&num>;}while<num>;printf<"sum = %ld",sum>;}/**********[习题5.132]请仅在程序空缺处填入合适内容,使其实现功能:输入大于1的整数到n,计算1至n中是7的倍数的整数之和.**********/#include<stdio.h>void main<>{ inti,sum,n;scanf<"%d",&n>;for<i=1;i<=n;i++>if<i%7==0>sum+=i;printf<"sum = %d",sum>;}/**********[习题5.161]n和s是分别是系统给定的外部整型变量和长整型变量〔不需要自行定义〕.编写程序,求1!+2!+3!+4!+5!+…+n!,并将结果存放到s.**********/void main<>{intarr[200];arr[0]=1;if<n==0>s=0;else{for<int i=1;i<n;i++>{arr[i]=<i+1>*arr[i-1];s+=arr[i];}s+=1;}}/**********[习题5.163]n和e是分别是系统给定的外部整型变量和浮点型变量〔不需要自行定义〕.编写程序,求1+1/1!+1/2!+1/3!+…+1/n!,并将结果存放到e.**********/void main<>{inti;e=0;double sum=1;for<i=1;i<=n;i++>{sum*=i;e+=1/sum;}e+=1;}/**********[习题5.165]系统给定外部整型变量n和浮点型变量x和e〔不需要自行定义〕.编写程序,求1+x/1!+x^2/2!+x^3/3!+…+x^n/n!,并将结果存放到e,其中,^是幂运算,x^2表示x的平方,x^n表示x的n次方.**********/#include<math.h>void main<>{intarr[100];arr[0]=1;double y;for<int i=1;i<=n;i++>{y=pow<x,i>;arr[i]=i*arr[i-1];e+=y/arr[i];}e+=1;}/**********[习题5.172]系统给定外部长整型变量s,整型变量a和n,且a和n的值均在0和9之间〔不需要自行定义〕.编写程序,求a+aa+aaa+…+aa…aaa〔有n个a〕之值,并将结果存放到s.例如:a=3和n=5时,求3+33+333+3333+33333.**********/#include <math.h>void main<>{intarr[10];arr[0]=a;inty,z=0;for<int i=0;i<n;i++>{y=pow<10,i>;arr[i]=a*y;z+=arr[i];s+=z;}}/**********[习题5.175]系统给定外部长整型变量s,整型变量a、m和n,1<=a<=9且1<=m<=n<=9〔不需要自行定义〕.编写程序,求数列a,aa,aaa,…,aa…a<第n项为n个a〕中,第m项至第n项之和,并将结果存放到s.例如:当a=8,m=3且n=6时,置s=888+8888+88888+888888.**********/#include <math.h>void main<>{intarr[10];arr[0]=a;inty,z=0;for<int i=0;i<n;i++>{y=pow<10,i>;arr[i]=a*y;z+=arr[i];if<i>=m-1>s+=z;}}/**********[习题5.176]系统给定外部长整型变量s,整型变量a、m和k,1<=a<=9,1<=m<=9且m+k<=9〔不需要自行定义〕.编写程序,求数列a,aa,aaa,…,aa…a,…<第i项为i个a>中,第m项起的k项之和,并将结果存放到s.例如:当a=6,m=4且k=3时,置s=6666+66666+666666.**********/void main<>{intarr[10];arr[0]=a;for<int i=0;i<=m+k-2;i++>{arr[i+1]=arr[i]*10+a;if<i>m-2>s+=arr[i];}}/**********[习题5.183]系统给定外部长整型变量s和整型变量n,且n的值在0和9之间〔不需要自行定义〕.编写程序,求1+12+123+…+12…n之值,并将结果存放到s.例如,n=5时,置s=1+12+123+1234+12345.**********/#include<math.h>void main<>{intarr[10];arr[0]=1;int y;for<int i=0;i<n;i++>{y=pow<10,i>;arr[i+1]=arr[i]*10+<i+2>;s+=arr[i];}}/**********[习题5.184]系统给定外部长整型变量s和整型变量n,且n的值在0和9之间〔不需要自行定义〕.编写程序,求1+21+321+…+n…21之值,并将结果存放到s.例如,n=5时,置s=1+21+321+4321+54321.**********/#include<math.h>void main<>{intarr[10];arr[0]=1;int y;for<int i=0;i<n;i++>{y=pow<10,i+1>;arr[i+1]=<i+2>*y+arr[i];s+=arr[i];}}/**********[习题5.186]系统给定外部长整型变量s,整型变量m和n,且1<=m<=n<=9〔不需要自行定义〕.编写程序,求12…m+12…<m+1>+…+12…n之值,并将结果存放到s.例如,m=3且n=6时,置s=123+1234+12345+123456.**********/#include<math.h>void main<>{intarr[10];arr[0]=1;int y;for<int i=0;i<n;i++>{y=pow<10,i>;arr[i+1]=arr[i]*10+<i+2>;if<i>=m-1>s+=arr[i];}}/**********[习题5.187]系统给定外部长整型变量s,整型变量m和n,且1<=m<=n<=9〔不需要自行定义〕.编写程序,求m…21+<m+1>…21+…+n…21之值,并将结果存放到s.例如,m=3且n=6时,置s=321+4321+54321+654321.**********/#include<math.h>void main<>{intarr[10];arr[0]=1;int y;for<int i=1;i<n;i++>{y=pow<10,i>;arr[i]=<i+1>*y+arr[i-1];if<i>=m-1>s+=arr[i];}if<m==1>s+=1;}/**********[习题5.203]已知鸡和猫共有30只,脚共有90只.请仅在程序空缺处填入合适内容,实现功能:计算鸡和猫各有几只?**********/#include <stdio.h>void main<>{ intx,y,heads=30,feet=90;for<x=1;x<=heads;x++>{ y=heads-x;if<x==y>{ printf<"chicken:%d, cat:%d\n",x,y>;break;}}}/**********[习题5.205]有一堆苹果〔数量在100到200之间〕,如果分成4个苹果一组的若干组,则多2个苹果;若分成7个苹果一组,则多4个苹果;若分成9个苹果一组,则多5个苹果.请仅在程序空缺处填入合适内容,实现功能:求这堆苹果的总数.**********/#include <stdio.h>void main<>{ int i;for<i=100;i<=200;i++>{if<i%4==2&&i%7==4&&i%9==5 >{printf<"total: %d",i>;}}/**********[习题5.215]请仅在程序空缺处填入合适内容,实现功能:求等式xyz+yzz=532中x,y和z的值〔其中xyz和yzz分别表示一个三位数〕.**********/#include<stdio.h>void main<>{intx,y,z,i,result=532;int temp;for<i=100;i<=result;i++>{x=i%10;y=<i%100>/10;z=i/100;temp=<x*100+y*10+z>+<y*100+z*10+z>;if<temp==result>printf<"x=%d,y=%d,z=%d\n",x,y,z>;}//程序输出要用语句printf<"x=%d,y=%d,z=%d\n",x,y,z>;}/**********[习题5.223]请仅在程序空缺处填入合适内容,使其实现功能:输入并计算一个只包含加减运算的表达式,其中每个运算数都是正整数,运算符都是"+"或"-",除第一个数以外,其余每个数前面都有一个运算符,当运算数为0时表达式终止.**********/#include<stdio.h>void main<>{ intterm,result;charch;scanf<"%d",&result>;//result等于第一个数ch=getchar<>;//ch为第一个符号term=result;//若term的值不能确定,会跳过循环while<term!=0>{scanf<"%d",&term>;if<ch=='-'> term*=-1;result+=term;ch=getchar<>;}printf<"result: %d\n",result>;/**********[习题5.225]请仅在程序空缺处填入合适内容,使其实现功能:输入并计算一个只包含加减运算的表达式,其中每个运算数都是正整数,运算符都是"+"或"-",除第一个数以外,其余每个数前面都有一个运算符,表达式以分号";"终止,例如"23+43-234+157;".**********/#include<stdio.h>void main<>{ intterm,result;charch;scanf<"%d",&result>;ch=getchar<>;//可以使用while循环term=result;while<ch!=';'>{scanf<"%d",&term>;if<ch=='-'> term*=-1;result+=term;ch=getchar<>;}printf<"result: %d\n",result>;}/**********[习题5.233]请仅在程序空缺处填入合适内容,使其实现功能:输入并计算一个只包含乘除运算的表达式,其中每个运算数都是正整数,运算符都是"*"或"\",除第一个数以外,其余每个数前面都有一个运算符,表达式以分号";"终止,例如"9/3*7;".**********/void main<>{ intterm,result;charch;scanf<"%d",&result>;ch=getchar<>;//可以使用while循环term=result;while<ch!=';'>{scanf<"%d",&term>;if<ch=='*'> result*=term;else result/=term;ch=getchar<>;}printf<"result: %d\n",result>;}/**********[习题5.255]请仅在程序空缺处填入合适内容,使其实现功能:输入非负整数到变量n和0到9中的某一个数到变量d,统计n的各位数字中值为d的个数num,并求各位数字中的最小值m.**********/void main<>{ longint n;intd,num,m=9,t;num=0;scanf<"%d %d",&n,&d>;do{t=n%10;n=n/10;if<t==d> num++;if<t<m> m=t;}while<n>;printf<"num=%d, min=%d",num,m>;}。

单片机第八章习题答案

单片机第八章习题答案

题目:8-4I/O 接口D D D D D D D D +5V1234567 5.1K ×40 KM N P P P P P P P P P 8031+5VINT112131415891011456701235.1K1.31.21.11.01.41.51.61.70 KPORG 0000HLJMP STARTORG 0030HSTART: LCALL KEYPRESS ;调用按键子程序JNZ K1 ;有键按下转k1AJMP START ;无键按下转START K1: LCALL DELA Y ;调用消抖程序LCALL KEYPRESS ;继续判断是否有键按下JNZ KS ;确实有键按下转KS,否则转STARTAJMP STARTKS: MOV R2,#00H ;R2列号MOV R1,#0F7H ;首列扫描字入R1K2: MOV P1,R1 ;列扫描字输出MOV A,P1 ;读P1口状态ANL A,#0F0H ;读入行值ZERO: JB ACC.7,ONE ;第0行无键按下,转查第一行MOV A,#00H ;第0行有键按下,该行首键号#00HAJMP LKP ;转求键号ONE: JB ACC.6,TWO;第1行无键按下,转查第二行MOV A,#04H ;第1行有键按下,该行首键号#04HAJMP LKP ;转求键号TWO: JB ACC.5,THR ;第2行无键按下,转查第三行MOV A,#08H ;第2行有键按下,该行首键号#08HAJMP LKP ;转求键号THR: JB ACC.4,NEXT ;第3行无键按下,转查下一列MOV A,#0CH ;第3行有键按下,该行首键号#0CH LKP: ADD A,R2 ;求键号=行首键号+列号PUSH ACC ;键号进行栈保护K3: ACALL KEYPRESS ;等待键释放JNZ K3 ;若A≠0,则未释放,等待POP ACC ;键释放,键号→A;键扫描结束,出口状态(A)=键号NEXT: INC R2 ;指向下一列,列号加1MOV A,R1 ;JNB ACC.0,KND ;ACC.0=0,4列扫描完返回RR A ;扫描字右移一位,转为下一列扫描字MOV R1,A ;扫描字入R1AJMP K2 ;转下一列KND: AJMP STARTKEYPRESS:MOV P1,#0F0H ;列线送入全扫描字,置为低电平MOV A,P1 ;读入行线电平状态CPL A ;变正逻辑,以高电平表示有键按下ANL A,#0F0H ;屏蔽低四位RETDELAY: MOV R7,#18 ;延时12ms子程序TM: MOV R6,#0FFHTM6: DJNZ R6,TM6DJNZ R7,TMRETEND。

广工班操作系统课后答案

广工班操作系统课后答案

广工班操作系统课后答案吐血整理>_<所有题目+答案,绿色部分是答案漏了或者是我自己做的,请大家自己补上,其他答案提供者是雪梅(第一次弘扬上传的答案和今早那份答案的汇总版了),有兴趣的童鞋可以拿去打印,格式调好了梦婷第一章P191-2.你对操作系统和用户程序之间的关系有何看法?阐述你的看法。

操作系统和用户程序之间是相互调用的一种复杂的动态关系,操作系统通过虚拟机界面为用户程序提供某种服务,用户程序在运行的过程中不断使用操作系统提供的服务来完成自己的操作,主程序可以是操作系统或用户程序,子程序可以使用户程序或操作系统。

1-7.有人说设备管理软件(设备驱动程序)因为经常由第三方提供,因此不应该作为操作系统的一部分。

你对此有何看法?你认为应该如何判断一个软件是否属于操作系统?我认为设备管理软件不应作为操作系统的一部分。

因为由第三方提供,所以安全性得不到保证,而且不同的提供方提供的软件之间存在差异,兼容性上存在问题,或许软件不能在系统中运行。

判断一个软件是否属于操作系统,就要看它是否满足操作系统的功能,而且要看它安全性、健壮性能是否好。

第二章P372-3. 计算机从过去单一操作员单一控制终端到现在的个人机,似乎我们转了一个圈。

是不是我们人类总喜欢反复无常呢?请阐述你对这种否定之否定的观点.不是反复无常,操作系统是根据时代的要求而发展的,单一操作员单一控制终端时代,计算机成本极高,人对计算机的要求是立即执行人发出的命令,随着时代的发展,人类要求计算机越来越小、越来越快、越来越便宜、利用率越来越高,现在低廉的价格和多样的功能,已使人们对计算机的期望变成个人工具。

所以这并不是反复无常,而是旋转式上升。

2-4.虽然我们不赞成对未来进行预测,但你是否对操作系统的未来演变有自己的看法呢?一是向微内核方向发展,二是向大而全的全方位方向发展。

微内核操作系统虽然有不少人在研究,但在工业界获得的承认并不多。

这方面的代表有MACH系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(t<=*(s2+j))
{t=*(s2+j);h=j;}
*(s2+h)=s2[k++];s2[k-1]=t;t=s2[k];
}
}
}
/**********
【习题】对字符串s1,除首、尾字符外,将其余字符
按ASCII码降序排列,组合成一个新的字符串s2。
**********/
void func(char *s1, char *s2)
if(t>*(s+i)+*(s+i-1)+*(s+i-2))
t=*(s+i)+*(s+i-1)+*(s+i-2);
return t;
}
/**********
【习题】编写函数,通过指针参数sum将x和y的
和赋给相应实际参数。例如,若x=134、y=378,则sum
的实参变量被赋值512。
**********/
void func(char *s, char *t)
指向的变量,若前者的值较大,则交换两者的值,
并返回1;否则无须交换,返回0。
**********/
int func(int *x, int *y)
{
if(*x>*y)
{int t=*x;*x=*y;*y=t;return 1;}
return 0;
}
/**********
【习题】假设指针a指向某数组中的一个元素。
if(*(s+i)==c)
return s+i;
return NULL;
}
/**********
【习题】编写函数,计算年份year中第yearday天相应的月
和日。例如,调用函数month_day(2000,61,&m,&d)之后,m=3,
d=1,即2000年的第61天是3月1日。
**********/
/*返回s中n(>0)个整数的最大值。
注意:要求在函数中采用指针(而不是下标)来处理数组元素。
*/
{
int t=*s;
for(int i=0;i<n;i++)
if(*(s+i)>t)t=*(s+i);
return t;
}
/**********
【习题】请编写一个函数min3adj(int s[], int n),数组s中
{
for(int i=0;i<n;i++)
if(*(a+i)==x)
return i+1;
return 0;
}
/**********
【习题】假设指针a指向某数组中的一个元素。
编写函数,对从元素*a开始的n个元素,统计并返回
值为x的元素个数(若不存在这样的元素,则返回0)。
**********/
int func(int n, int *a, int x)
return i+1;
}
/**********
【习题】编写函数,在指针参数s所指向的字
符串中统计并返回由c指定的字符的个数。例如,若
该串为"I am a student.",c='t',则函数返回值
为2。注意:字符串结束符是'\0',不允许调用字符
串库函数。
**********/
int func(char *s, char c)
{
int t=0;
for(int i=0;i<n;i++)
if(*(a+i)==x)t++;
if(t==0)return 0;
return t;
}
/**********
【习题】编写函数,返回指针参数s所指向的字
符串的长度。例如,若该串为"I am a student.",
则函数返回值是15。注意:字符串结束符是'\0',不
/* 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(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)
否则返回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)
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];
}
void func(int x, int y, int *sum)
{
*sum=x+y;
}
/**********
【习题】编写函数,返回指针参数x和y所指向的
变量的值之和。
**********/
int func(int *x, int *y)
{
return *x+*y;
}
/**********
【习题】编写函数,比较指针参数x和y分别
有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--)
{
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))
*pday-=date[i];}
else if(*pmonth==1)*pday=yearday;
else *pday=yearday-31;return 1;}
return 0;
}
/**********
【习题】请编写一个函数func,通过略去非数字字符,将字符串
s转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
}
/**********
【习题】对长度为n的字符串s1,除首、尾字符外,将
其余字符按ASCII码降序排列,组合成一个新的字符串s2。
**********/
void func(char *s1, char *s2, int n)
/* s1为字符串的起始地址,
s2为新字符串的起始地址,
n为字符串的长度。
要求:s1串不能发生改变,
s2串存放新的字符串。
*/
{
for(int i=0;i<n;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++)
{
int t=0;
for(int i=0;*(s+i)!='\0';i++)
if(*(s+i)==c)
t++;
return t;
}
/**********
【习题】编写函数,复制指针参数s指向的字
符串到由指针参数t已经指向的存储区域。注意:
字符串结束符是'\0',不允许调用字符串库函数。
相关文档
最新文档