首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
软件开发中常采用的结构化生命周期方法,由于其具有的特征一般称其为 (44) 。
查看本题答案
包含此试题的试卷
初级程序员《单项选择》真题及答案
点击查看
你可能感兴趣的试题
软件开发中常采用的结构化生命周期方法由于其特征而一般称其为
瀑布模型
对象模型
螺旋模型
层次模型
软件开发中常采用的结构化生命周期方法由于其特征而一般称其为
层次模型
瀑布模
螺旋模型
对象模型
热门试题
更多
[说明]以下程序的功能是计算三角形矩形和正方形的面积并输出程序由5个类组成AreaTest是主类类TrianlgeRectangle和Square分别表示三角形矩形和正方形抽象类Figure提供了一个计算面积的抽象方法[程序]publicclassAreaTestpublicstaticvoidmainStringargs[]Figure[]figures=newTriangle233newRectangle58newSquare5;forinti=0;1
[说明]本程序中的函数voidfirst_jnsertNODE**pintv的功能是在已知链表的首表元之前插入一个指定的表元;函数NODE*reverse_copyNODE*p的功能是按已知链表复制出一个新的链表但新的链表的表元链接顺序与已知链表的表元链接顺序相反;函数voidprint_linkNODE*p用来输出链表中各表元的值;函数voidfree_linkNODE*p用来释放链表全部表元空间[函数]#include<stdio.n>#include<malloc.h>typedefstructnodeintval;structnode*next;NODE;voidfirst_insertNODE**pintvNODE*q=NODE*mallocsizeofNODE;q->val=v;1;*p=2;NODE*reverse_copyNODE*pNODE*u;foru=NULL;p;p=p->nextfirst_insert3;returnu;voidprint_linkNODE*pfor;4printf%d/tp->val;printf/n;voidfree_linkNODE*pNODE*u;whilep!=NULLu=p->next;freep;5;voidmainNODE*link1*link2;inti;link1=NULL;fori=1;i<=10;i++first_insert&link1i;link2=reverse_copylink1;print_linklink1;free_linklink1;print_linklink2;free_linklink2;
[说明]以下程序的功能是计算三角形矩形和正方形的面积并输出程序由5个类组成AreaTest是主类类TrianlgeRectangle和Square分别表示三角形矩形和正方形抽象类Figure提供了一个计算面积的抽象方法[程序]publicclassAreaTestpublicstaticvoidmainStringargs[]Figure[]figures=newTriangle233newRectangle58newSquare5;forinti=0;1
[说明]设一个环上有编号为0~n-1的n粒颜色不尽相同的珠子每粒珠子颜色用字母表示n粒珠子的颜色由输入的字符串表示从环上的某两粒珠子间剪开则环上珠子形成一个序列然后按以下规则从序列中取走珠子首先从序列左端取走所有连续的同色珠子;然后从序列右端在剩下的珠子中取走所有连续的同色珠子两者之和为该剪开处可取走珠子的粒数在不同位置剪开能取走的珠子也不尽相同本程序所求的是在环上哪个位置剪开按上述规则可取走的珠子粒数最多程序中用数组存储字符串例如10粒珠子颜色对应字符串为aaabbbadcc在0号珠子前剪开序列为aaabbbadcc从左端取走3粒a色珠子从右端取走2粒c色珠子共取走5粒珠子若在3号珠子前剪开即bbbadccaaa共取走6粒珠子[函数]intcountchar*sintstartintendintic=0color=s[start]step=start>end-1:1;fori=start;s[i]==color;i+=stepifstep>0&&i>end||1break;2;returncvoidmaincharts[120];intijclenmaxccut=0;printf请输入环上代表不同颜色珠子字符串;scanf%ss;len=strlens;fori=maxc=0;i<len;i++/*尝试不同的剪开方式*/c=counts0len-1;ifc<lenc+=count3;ifc>maxccut=i;maxc=c;/*数组s的元素循环向左移动一个位置*/t=s[0];forj=1;j<len;j++4;5;printf在第%d号珠子前面剪开可以取走%d个珠子./ncutmaxc;
[说明]下面Application程序用while循环从键盘读入字符记录输入的字符数并输出读入的字符当输入字符0时结束while循环同时结束程序[Java程序]importjava.io.*;publicclassContinuateInputpublic1voidmainString[]args2IOExceptionintch;intcounter=0;System.out.println请输入字符输入0结束;whilecharch=System.in.3!=’0’counter++;System.out.println4ch;System.out.println;System.out.printlncounted+counter+totalbytes.;System.out.5;
[说明]下面程序是一个小型公司工资管理的程序该公司主要有4类人员经理兼职技术人员销售员和销售经理基类为employee由它派生出technician类manager类salesman类最后由manager类和salesman类派生出salesmanager类月工资计算办法是经理拿固定月薪8000;兼职技术人员按每小时100元领取月薪;销售按当月销售额的4%提成;销售经理既拿固定月工资也领取销售提成固定月工资5000元销售提成为所管辖部门当月销售总额的0.5%[C++程序]#include<iostream.h>#include<string.h>classemployeeprotected:intno;charname[10];floatsalary;public:employeecout<<职工编号:;cin>>no;cout<<职工姓名:;cin>>name;salary=0;voidpayvoiddisplay;classtechnician:publicemployeeprivate:floathourlyrate;intworkhours;public:technicianhourlyrate=100;voidpaycout<<name本月工作时数:;cin>>workhours;salary=hourlyrate*workhours;voiddisplaycout<<兼职技术人员<<name<<编号为<<no/<<<<本月工资<<salary<<endl;;classsalesman:1protected:floatcommrate;floatsales;publicsalesmancommrate=0.04;voidpaycout<<name<<本月销售额;cin>>sales;salary=2;voiddisplaycout<<销售额name<<编号<<no<</<<<<本月工资<<salary<<endl;;classmanager:3protected:floatmonthlypay;publicmanagermonthlypay=8000;voidpaysalary=monthlypay;voiddisplaycout<<经理<<name<<编号为<<no/<<<<本月工资<<salary<<endl;;classsalesmanager:4publicsalesmanagermonthlypay=5000;commrate=0.005;voidpaycout<<name<<所管部门月销售量;cin>>salessalary=5;voiddisplaycout<<销售经理<<name<<编号为<<no/<<<<本月工资<<salary<<endl;;
[说明]下面程序定义了一个类Point及其成员函数然后从类Point派生出类Circle及其成员函数[C++程序]//POINT.H#ifndefPOINT_H#definePOINT_HclassPointpublic:Pointfloatx=0floaty=0;voidsetPointfloatfloat;floatgetXconstreturnx;floatgetYconstreturny;protected:float:xy;;#endif//POINT.CPP#include<iostream.h>#includepoint.hPoint::Pointfloatafloatbx=a;y=bvoidPoint::setPointfloatafloatbx=a;y=b//CIRCLE.H#ifndefCIRCLE_H#defineCIRCLE_H#includepoint.hclassCircle:1public:Circlefloatr=0.0floatx=0floaty=0;voidsetRadiusfloat;floatgetRadiusconst;floatareaconst;protected:floatradius;;//CIRCLE.CPP#includeiostream.h#includecircle.hCircle::Circlefloatrfloatafloatb:2radius=r;voidCircle::setRadiusfloatrradius=r;floatCircle::getRadiusconstreturnradius;floatCircle::areaconstreturn3.14159*radius*radius;//text.cpp#include<iostream.h>#includepoint.h#includecircle.hmainCirclec2.53.74.3;cout<<Xcoordinateis<<c.getX<</nRadiusis:<<c.getRadius;3;//设置新的圆心22Point&pRef=c;cout<</nCircleprintedasapointis:<<]<<4<<.<<5<<];
[函数2.1说明]函数intfactorsintn的功能是判断整数nn>=2是否为完全数如果n是完全数则函数返回0否则返回-1所谓完全数是指整数n的所有因子不包括n之和等于n自身例如28的因子为124714而28=1+2+4+7+14因此28是完全数[函数2.1]intfactorsintninti/s;fori=1s=0;i<=n/2;i++ifn%i==0[1];if[2]return0;rerurn-1;[函数2.2说明]函数intmaxintinta[]intk的功能是用递归方法求指定数组中前k个元素的最大值并作为函数值返回[函数2.2]intmaxintinta[]intkintt;if[3]return[4]t=maxinta+1[5];returna[0]>ta[0]:t;
[说明]已知一棵二叉树用二叉链表存储t指向根结点p指向树中任一结点下列算法为输出从t到p之间路径上的结点[函数]#defineMaxSize1000typedefstructnodeTelemTypedata;structnode*lchild*rchild;BiNode*BiTree;voidPathBiTreetBiNode*pBiTree*stackEMaxsize]*stack1[maxsize]*q;inttag[Maxsizeltop=0top1;q=t;/*通过前序遍历发现P*/dowhileq!=NULL&&q!=p/*扫描左孩子且相应的结点不为p*/1;stack[top]=q;tag[top]=0;2;iftop>0ifstack[top]==Pbreak;/*找到p栈底到栈顶为t到p*/iftag[top]==1top--;elseq=stack[top];q=q->rchild;tag[top]=1;3;top--;top1=0;whiletop>0q=stack[top];/*反向打印准备*/top1++;4;top--;while5/*打印栈的内容*/q=stack1[top1];printfq->data;top1--;
[说明]设一个环上有编号为0~n-1的n粒颜色不尽相同的珠子每粒珠子颜色用字母表示n粒珠子的颜色由输入的字符串表示从环上的某两粒珠子间剪开则环上珠子形成一个序列然后按以下规则从序列中取走珠子首先从序列左端取走所有连续的同色珠子;然后从序列右端在剩下的珠子中取走所有连续的同色珠子两者之和为该剪开处可取走珠子的粒数在不同位置剪开能取走的珠子也不尽相同本程序所求的是在环上哪个位置剪开按上述规则可取走的珠子粒数最多程序中用数组存储字符串例如10粒珠子颜色对应字符串为aaabbbadcc在0号珠子前剪开序列为aaabbbadcc从左端取走3粒a色珠子从右端取走2粒c色珠子共取走5粒珠子若在3号珠子前剪开即bbbadccaaa共取走6粒珠子[函数]intcountchar*sintstartintendintic=0color=s[start]step=start>end-1:1;fori=start;s[i]==color;i+=stepifstep>0&&i>end||1break;2;returncvoidmaincharts[120];intijclenmaxccut=0;printf请输入环上代表不同颜色珠子字符串;scanf%ss;len=strlens;fori=maxc=0;i<len;i++/*尝试不同的剪开方式*/c=counts0len-1;ifc<lenc+=count3;ifc>maxccut=i;maxc=c;/*数组s的元素循环向左移动一个位置*/t=s[0];forj=1;j<len;j++4;5;printf在第%d号珠子前面剪开可以取走%d个珠子./ncutmaxc;
[函数2.1说明]函数intfactorsintn的功能是判断整数nn>=2是否为完全数如果n是完全数则函数返回0否则返回-1所谓完全数是指整数n的所有因子不包括n之和等于n自身例如28的因子为124714而28=1+2+4+7+14因此28是完全数[函数2.1]intfactorsintninti/s;fori=1s=0;i<=n/2;i++ifn%i==0[1];if[2]return0;rerurn-1;[函数2.2说明]函数intmaxintinta[]intk的功能是用递归方法求指定数组中前k个元素的最大值并作为函数值返回[函数2.2]intmaxintinta[]intkintt;if[3]return[4]t=maxinta+1[5];returna[0]>ta[0]:t;
[说明]下面的流程图用来说明如何在数组中的指定位置插入一个数注流程中循环开始的说明按照循环变量循环初值循环终值增量格式描述;SIZE定义位数组的大小[问题]将流程图的1~5处补充完整
[说明]本程序中的函数voidfirst_jnsertNODE**pintv的功能是在已知链表的首表元之前插入一个指定的表元;函数NODE*reverse_copyNODE*p的功能是按已知链表复制出一个新的链表但新的链表的表元链接顺序与已知链表的表元链接顺序相反;函数voidprint_linkNODE*p用来输出链表中各表元的值;函数voidfree_linkNODE*p用来释放链表全部表元空间[函数]#include<stdio.n>#include<malloc.h>typedefstructnodeintval;structnode*next;NODE;voidfirst_insertNODE**pintvNODE*q=NODE*mallocsizeofNODE;q->val=v;1;*p=2;NODE*reverse_copyNODE*pNODE*u;foru=NULL;p;p=p->nextfirst_insert3;returnu;voidprint_linkNODE*pfor;4printf%d/tp->val;printf/n;voidfree_linkNODE*pNODE*u;whilep!=NULLu=p->next;freep;5;voidmainNODE*link1*link2;inti;link1=NULL;fori=1;i<=10;i++first_insert&link1i;link2=reverse_copylink1;print_linklink1;free_linklink1;print_linklink2;free_linklink2;
[说明]下面Application程序用while循环从键盘读入字符记录输入的字符数并输出读入的字符当输入字符0时结束while循环同时结束程序[Java程序]importjava.io.*;publicclassContinuateInputpublic1voidmainString[]args2IOExceptionintch;intcounter=0;System.out.println请输入字符输入0结束;whilecharch=System.in.3!=’0’counter++;System.out.println4ch;System.out.println;System.out.printlncounted+counter+totalbytes.;System.out.5;
[函数2.1说明]函数voidsortintarry[]intn的功能是对数组a中的arry[0]~arry[n-1]这n个元素进行排序排序过程如下第一趟对所有的偶数下标x比较arr[x]和arry[x+1]若arry[x]>arry[x+1]则将两者交换;第二趟对所有的奇数下标y比较arry[y]和arry[y+1]若arry[y]>arry[y+1]则将两者交换;第三趟对偶数下标第四趟对奇数下标依次类推直至整个数组元素有序排列为止[函数2.1]voidsortintarry[]intnintijtag=1;forj=0;j<n;j++fori=1;i<n-1;2ifarry[i]>arry[i+1]t=arry[i];arry[il=arry[i+1];arry[i+1]=t;tag=0;tag++;if3break;[函数2.2说明]这是一棵二叉树排序查找元素的程序查找的方法是首先与树的根结点的元素进行比较若相等则找到返回此结点的地址;若要查找的元素小于根结点的元素值则指针指向此结点的左子树继续查找;若要查找的元素大于根结点的元素值则指针指向此结点的右子树继续查找直到指针为空表示此树中不存在所要查找的元素本题使用递归方法实现[函数2.2]typedefstructnodeintdata;structnode*left;structnode*right;NODE;NODE*SearchSortTreeNODE*treeinteiftree!=NULLiftree->data<e4;elseiftree->data>e5;elsereturntree;returntree;
[函数2.1说明]函数voidsortintarry[]intn的功能是对数组a中的arry[0]~arry[n-1]这n个元素进行排序排序过程如下第一趟对所有的偶数下标x比较arr[x]和arry[x+1]若arry[x]>arry[x+1]则将两者交换;第二趟对所有的奇数下标y比较arry[y]和arry[y+1]若arry[y]>arry[y+1]则将两者交换;第三趟对偶数下标第四趟对奇数下标依次类推直至整个数组元素有序排列为止[函数2.1]voidsortintarry[]intnintijtag=1;forj=0;j<n;j++fori=1;i<n-1;2ifarry[i]>arry[i+1]t=arry[i];arry[il=arry[i+1];arry[i+1]=t;tag=0;tag++;if3break;[函数2.2说明]这是一棵二叉树排序查找元素的程序查找的方法是首先与树的根结点的元素进行比较若相等则找到返回此结点的地址;若要查找的元素小于根结点的元素值则指针指向此结点的左子树继续查找;若要查找的元素大于根结点的元素值则指针指向此结点的右子树继续查找直到指针为空表示此树中不存在所要查找的元素本题使用递归方法实现[函数2.2]typedefstructnodeintdata;structnode*left;structnode*right;NODE;NODE*SearchSortTreeNODE*treeinteiftree!=NULLiftree->data<e4;elseiftree->data>e5;elsereturntree;returntree;
[说明] 下面的流程图用来完成求字符串t在s中最右边出现的位置其思路是做一个循环以s的每一位作为字符串的开头和t比较如果两字符串的首字母是相同的则继续比下去如果一直到t的最后一个字符也相同则说明在s中找到了一个字符串t;如果还没比较到t的最后一个字符就已经出现字符串不等的情况则放弃此次比较开始新一轮的比较当在s中找到一个字符串t时不应停止寻找因为要求的是求t在s中最右边出现的位置应先记录这个位置pos然后开始新一轮的寻找若还存在相同的字符串则更新位置的记录直到循环结束输出最近一次保存的位置如果s为空或不包含t则返回-1 注返回值用pos表示 [问题] 将流程图的1~5处补充完整 3处填
[说明]下面程序是一个小型公司工资管理的程序该公司主要有4类人员经理兼职技术人员销售员和销售经理基类为employee由它派生出technician类manager类salesman类最后由manager类和salesman类派生出salesmanager类月工资计算办法是经理拿固定月薪8000;兼职技术人员按每小时100元领取月薪;销售按当月销售额的4%提成;销售经理既拿固定月工资也领取销售提成固定月工资5000元销售提成为所管辖部门当月销售总额的0.5%[C++程序]#include<iostream.h>#include<string.h>classemployeeprotected:intno;charname[10];floatsalary;public:employeecout<<职工编号:;cin>>no;cout<<职工姓名:;cin>>name;salary=0;voidpayvoiddisplay;classtechnician:publicemployeeprivate:floathourlyrate;intworkhours;public:technicianhourlyrate=100;voidpaycout<<name本月工作时数:;cin>>workhours;salary=hourlyrate*workhours;voiddisplaycout<<兼职技术人员<<name<<编号为<<no/<<<<本月工资<<salary<<endl;;classsalesman:1protected:floatcommrate;floatsales;publicsalesmancommrate=0.04;voidpaycout<<name<<本月销售额;cin>>sales;salary=2;voiddisplaycout<<销售额name<<编号<<no<</<<<<本月工资<<salary<<endl;;classmanager:3protected:floatmonthlypay;publicmanagermonthlypay=8000;voidpaysalary=monthlypay;voiddisplaycout<<经理<<name<<编号为<<no/<<<<本月工资<<salary<<endl;;classsalesmanager:4publicsalesmanagermonthlypay=5000;commrate=0.005;voidpaycout<<name<<所管部门月销售量;cin>>salessalary=5;voiddisplaycout<<销售经理<<name<<编号为<<no/<<<<本月工资<<salary<<endl;;
[说明]下面的流程图用来说明如何在数组中的指定位置插入一个数注流程中循环开始的说明按照循环变量循环初值循环终值增量格式描述;SIZE定义位数组的大小[问题]将流程图的1~5处补充完整
[说明]下面的程序是通过双链结构来查找学生的信息程序的一部分即创建双向链表部分[函数]#include<stdio.h>#defineN10typedefstructnodecharname[20];structnode*llink*rlink;stud;/*双链表的结构定义*//*双链表的创建*/stud*creatintnstud*p*h*s;inti;ifh=stud*mallocsizeofstud==NULLprintfcannotfindspace!/n;exit0;h->name[0]=’/0’;h->llink=NULL;h->rlink=NULL;p=h;fori=0;i<n;i++ifs=stud*mallocsizeofstud==NULLprintfcannotfindspace!/n;exit0;1;printfPleaseinputthe%dman’sname:;i+1;scanf%ss->name;2;3;p=s;4;5;returnh;
[说明] 下面的流程图用来完成求字符串t在s中最右边出现的位置其思路是做一个循环以s的每一位作为字符串的开头和t比较如果两字符串的首字母是相同的则继续比下去如果一直到t的最后一个字符也相同则说明在s中找到了一个字符串t;如果还没比较到t的最后一个字符就已经出现字符串不等的情况则放弃此次比较开始新一轮的比较当在s中找到一个字符串t时不应停止寻找因为要求的是求t在s中最右边出现的位置应先记录这个位置pos然后开始新一轮的寻找若还存在相同的字符串则更新位置的记录直到循环结束输出最近一次保存的位置如果s为空或不包含t则返回-1 注返回值用pos表示 [问题] 将流程图的1~5处补充完整 1处填
[说明]下面程序是一个小型公司工资管理的程序该公司主要有4类人员经理兼职技术人员销售员和销售经理基类为employee由它派生出technician类manager类salesman类最后由manager类和salesman类派生出salesmanager类月工资计算办法是经理拿固定月薪8000;兼职技术人员按每小时100元领取月薪;销售按当月销售额的4%提成;销售经理既拿固定月工资也领取销售提成固定月工资5000元销售提成为所管辖部门当月销售总额的0.5%[C++程序]#include<iostream.h>#include<string.h>classemployeeprotected:intno;charname[10];floatsalary;public:employeecout<<职工编号:;cin>>no;cout<<职工姓名:;cin>>name;salary=0;voidpayvoiddisplay;classtechnician:publicemployeeprivate:floathourlyrate;intworkhours;public:technicianhourlyrate=100;voidpaycout<<name本月工作时数:;cin>>workhours;salary=hourlyrate*workhours;voiddisplaycout<<兼职技术人员<<name<<编号为<<no/<<<<本月工资<<salary<<endl;;classsalesman:1protected:floatcommrate;floatsales;publicsalesmancommrate=0.04;voidpaycout<<name<<本月销售额;cin>>sales;salary=2;voiddisplaycout<<销售额name<<编号<<no<</<<<<本月工资<<salary<<endl;;classmanager:3protected:floatmonthlypay;publicmanagermonthlypay=8000;voidpaysalary=monthlypay;voiddisplaycout<<经理<<name<<编号为<<no/<<<<本月工资<<salary<<endl;;classsalesmanager:4publicsalesmanagermonthlypay=5000;commrate=0.005;voidpaycout<<name<<所管部门月销售量;cin>>salessalary=5;voiddisplaycout<<销售经理<<name<<编号为<<no/<<<<本月工资<<salary<<endl;;
[说明]下面的程序是通过双链结构来查找学生的信息程序的一部分即创建双向链表部分[函数]#include<stdio.h>#defineN10typedefstructnodecharname[20];structnode*llink*rlink;stud;/*双链表的结构定义*//*双链表的创建*/stud*creatintnstud*p*h*s;inti;ifh=stud*mallocsizeofstud==NULLprintfcannotfindspace!/n;exit0;h->name[0]=’/0’;h->llink=NULL;h->rlink=NULL;p=h;fori=0;i<n;i++ifs=stud*mallocsizeofstud==NULLprintfcannotfindspace!/n;exit0;1;printfPleaseinputthe%dman’sname:;i+1;scanf%ss->name;2;3;p=s;4;5;returnh;
[说明]下面的流程图用来说明如何在数组中的指定位置插入一个数注流程中循环开始的说明按照循环变量循环初值循环终值增量格式描述;SIZE定义位数组的大小[问题]将流程图的1~5处补充完整
[说明]已知一棵二叉树用二叉链表存储t指向根结点p指向树中任一结点下列算法为输出从t到p之间路径上的结点[函数]#defineMaxSize1000typedefstructnodeTelemTypedata;structnode*lchild*rchild;BiNode*BiTree;voidPathBiTreetBiNode*pBiTree*stackEMaxsize]*stack1[maxsize]*q;inttag[Maxsizeltop=0top1;q=t;/*通过前序遍历发现P*/dowhileq!=NULL&&q!=p/*扫描左孩子且相应的结点不为p*/1;stack[top]=q;tag[top]=0;2;iftop>0ifstack[top]==Pbreak;/*找到p栈底到栈顶为t到p*/iftag[top]==1top--;elseq=stack[top];q=q->rchild;tag[top]=1;3;top--;top1=0;whiletop>0q=stack[top];/*反向打印准备*/top1++;4;top--;while5/*打印栈的内容*/q=stack1[top1];printfq->data;top1--;
[说明] 下面的流程图用来完成求字符串t在s中最右边出现的位置其思路是做一个循环以s的每一位作为字符串的开头和t比较如果两字符串的首字母是相同的则继续比下去如果一直到t的最后一个字符也相同则说明在s中找到了一个字符串t;如果还没比较到t的最后一个字符就已经出现字符串不等的情况则放弃此次比较开始新一轮的比较当在s中找到一个字符串t时不应停止寻找因为要求的是求t在s中最右边出现的位置应先记录这个位置pos然后开始新一轮的寻找若还存在相同的字符串则更新位置的记录直到循环结束输出最近一次保存的位置如果s为空或不包含t则返回-1 注返回值用pos表示 [问题] 将流程图的1~5处补充完整 5处填
[说明]下面程序定义了一个类Point及其成员函数然后从类Point派生出类Circle及其成员函数[C++程序]//POINT.H#ifndefPOINT_H#definePOINT_HclassPointpublic:Pointfloatx=0floaty=0;voidsetPointfloatfloat;floatgetXconstreturnx;floatgetYconstreturny;protected:float:xy;;#endif//POINT.CPP#include<iostream.h>#includepoint.hPoint::Pointfloatafloatbx=a;y=bvoidPoint::setPointfloatafloatbx=a;y=b//CIRCLE.H#ifndefCIRCLE_H#defineCIRCLE_H#includepoint.hclassCircle:1public:Circlefloatr=0.0floatx=0floaty=0;voidsetRadiusfloat;floatgetRadiusconst;floatareaconst;protected:floatradius;;//CIRCLE.CPP#includeiostream.h#includecircle.hCircle::Circlefloatrfloatafloatb:2radius=r;voidCircle::setRadiusfloatrradius=r;floatCircle::getRadiusconstreturnradius;floatCircle::areaconstreturn3.14159*radius*radius;//text.cpp#include<iostream.h>#includepoint.h#includecircle.hmainCirclec2.53.74.3;cout<<Xcoordinateis<<c.getX<</nRadiusis:<<c.getRadius;3;//设置新的圆心22Point&pRef=c;cout<</nCircleprintedasapointis:<<]<<4<<.<<5<<];
[说明]下面程序定义了一个类Point及其成员函数然后从类Point派生出类Circle及其成员函数[C++程序]//POINT.H#ifndefPOINT_H#definePOINT_HclassPointpublic:Pointfloatx=0floaty=0;voidsetPointfloatfloat;floatgetXconstreturnx;floatgetYconstreturny;protected:float:xy;;#endif//POINT.CPP#include<iostream.h>#includepoint.hPoint::Pointfloatafloatbx=a;y=bvoidPoint::setPointfloatafloatbx=a;y=b//CIRCLE.H#ifndefCIRCLE_H#defineCIRCLE_H#includepoint.hclassCircle:1public:Circlefloatr=0.0floatx=0floaty=0;voidsetRadiusfloat;floatgetRadiusconst;floatareaconst;protected:floatradius;;//CIRCLE.CPP#includeiostream.h#includecircle.hCircle::Circlefloatrfloatafloatb:2radius=r;voidCircle::setRadiusfloatrradius=r;floatCircle::getRadiusconstreturnradius;floatCircle::areaconstreturn3.14159*radius*radius;//text.cpp#include<iostream.h>#includepoint.h#includecircle.hmainCirclec2.53.74.3;cout<<Xcoordinateis<<c.getX<</nRadiusis:<<c.getRadius;3;//设置新的圆心22Point&pRef=c;cout<</nCircleprintedasapointis:<<]<<4<<.<<5<<];
[说明]函数printBinTreeNode*t;DateType&x的功能是在二叉树中查找值为x的结点并打印该结点所有祖先结点在此算法中假设值为x的结点不多于一个此算法采用后序的非递归遍历形式函数中使用栈ST保存结点指针ptr以及标志tagTop是栈顶指针[函数]voidprintBinTreeNode*t;DateType&xstackST;intitop;top=0;//置空栈whilet!=NULL&&t->data!=x||top!=0whilet!=NULL&&t->data!=x//寻找值为x的结点1;ST[top].ptr=t;ST[top].tag=0;2;ift!=Null&&t->data==x//找到值为x的结点fori=1;3;i++printf%dST[top].ptr->data;elsewhile4top--;iftop>0ST[top].tag=1;5;
[说明]已知一棵二叉树用二叉链表存储t指向根结点p指向树中任一结点下列算法为输出从t到p之间路径上的结点[函数]#defineMaxSize1000typedefstructnodeTelemTypedata;structnode*lchild*rchild;BiNode*BiTree;voidPathBiTreetBiNode*pBiTree*stackEMaxsize]*stack1[maxsize]*q;inttag[Maxsizeltop=0top1;q=t;/*通过前序遍历发现P*/dowhileq!=NULL&&q!=p/*扫描左孩子且相应的结点不为p*/1;stack[top]=q;tag[top]=0;2;iftop>0ifstack[top]==Pbreak;/*找到p栈底到栈顶为t到p*/iftag[top]==1top--;elseq=stack[top];q=q->rchild;tag[top]=1;3;top--;top1=0;whiletop>0q=stack[top];/*反向打印准备*/top1++;4;top--;while5/*打印栈的内容*/q=stack1[top1];printfq->data;top1--;
热门题库
更多
初级程序员
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术
移动通信专业技术
有线传输专业技术