首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
在计算机系统中,常用的输入/输出方式有无条件传送、中断、程序查询和DMA等,采用______方式,数据在传输过程中不需要CPU参与工作。
查看本题答案
包含此试题的试卷
初级程序员《相同项单选集》真题及答案
点击查看
你可能感兴趣的试题
称为基本输入输出系统保存着计算机系统中最重要的基本输入输出程序系统信息设置加电自检和系统自举程序
CMOS
BIOS
CPU
PnP
输入输出设备简称I/OInput/Output设备以下关于计算机I/O设备的论述中正确的是1输入设备
125
123
124
全部
微机保护装置一般由硬件组成
数据采集系统, 输入输出接口部分
数据采集系统, 输入输出接口部分, 微型计算机系统, 电源部分;CPU, 电源部分
据采集系统, 储存元件, 微型计算机系统, 电源部分
输入输出接口部分, 储存元件, 微型计算机系统, 电源部分
若某计算机系统的I/0接口与主存采用统一编址则输入输出操作是通过指令来完成的
控制
中断
输入输出
访存
程序控制中断和DMA3种输入输出方式中有3输入输出方式可以为高速外部设备服务如果需要处理例外事
程序控制
中断
DMA
程序控制、中断和DMA
当使用快速外部设备时最好使用的输入/输出方式是
中断
条件传送
DMA
无条件传送
在微型计算机中常用的输入输出方式有四种和
我们平常所说的裸机是指
无显示器的计算机系统
无软件系统的计算机系统
无输入输出系统的计算机系统
无硬件系统的计算机系统
程序控制中断和DMA3种输入输出方式中有3输入输出方式可以为高速外部设备服务如果需要处理例外事
程序控制
中断
DMA
程序控制、中断和DMA
计算机系统中主机与外设间的输入输出控制方式有多种其中占用主机CPU时间最多的是方式
通道方式
DMA
中断
程序查询
输入输出数据不经过CPU内部寄存器的输入输出方式是
程序控制输入输出方式
中断输入输出方式
直接存储器访问方式
上述3种方式
在配置有通道的计算机系统中用户程序需要输入输出时引起的中断是
访管中断
I/O中断
程序性中断
外部中断
若某计算机系统的I/O接口与主存采用统一编址则输入输出操作是通过______指令来完成的
控制
访存
输入输出
中断
在计算机系统中常用的输入/输出方式有无条件传送中断程序查询和DMA等采用68方式数据在传输过程中不需
DMA
中断
程序查询
无条件传送
热门试题
更多
[说明]以下程序的功能是计算三角形矩形和正方形的面积并输出程序由5个类组成AreaTest是主类类TrianlgeRectangle和Square分别表示三角形矩形和正方形抽象类Figure提供了一个计算面积的抽象方法[程序]publicclassAreaTestpublicstaticvoidmainStringargs[]Figure[]figures=newTriangle233newRectangle58newSquare5;forinti=0;1
[说明]以下程序的功能是计算三角形矩形和正方形的面积并输出程序由5个类组成AreaTest是主类类TrianlgeRectangle和Square分别表示三角形矩形和正方形抽象类Figure提供了一个计算面积的抽象方法[程序]publicclassAreaTestpublicstaticvoidmainStringargs[]Figure[]figures=newTriangle233newRectangle58newSquare5;forinti=0;1
[说明]下面程序输出一个矩形面积以及矩形区域上的假想的作物产量[Java程序]publicclassMainjavapublicstaticvoidmainString[]argsLot_sizesmall=newLot_size;Lot_sizemedium=newLot_size;small.set55525;medium.set10101050;System.out.printlnForasmalllotofarea+small.get_area+/n;System.out.printlntheactualcropsare$+small.get_data2+/n;System.out.printlnandidealcropsare$+small.get_data+/n;System.out.printlnForamediumlotofarea+medium.get_area+/n;system.out.printlntheactualcropsare$+medium.get_data2+/n;System.out.printlnandidealcropsare$+medium.get_data+/n;classCrop_assessmentprivateintactual_crop;privateintideal_crop;publicvoidsetintin_actualintin_idealactual_crop=in_actual;ideal_crop=in_ideal;publicintget_actual_cropreturn1;publicintget_ideal_cropreturn2;classLot_sizeprivateintlength;privateintwidth;privateCrop_assessmentcrop=3;publicvoidsetint1intwintaintilength=1;width=w;crop.setai;publicintget_areareturnlength*width;publicintget_datareturn4;publicintget_data2return5;
[说明]设一个环上有编号为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;
[说明]阅读下面程序指出其中代码的错误及原因[C++程序]01#include<iostream.h>02classemployee03private:04shortage;05floatsalary;06friendvoidfuncl;07protected:08char*name;09public:10employeechar*nnshortagfloatsalr;11voidprintconst;12~employee;13;14manage:publicemployee15char*department;16//...17public:18voidprint;19voidsetEmployee;20//...2122//...23voidmanage::print2425cout<<name:name<<endl;26cout<<salary:<<salary<<endl;//--12728voidmanager::setEmployeechar*dept2930employee::employeechar*nmshortagfloatsalr;//--2//--331department=dept;3233voidfuncl3435cout<<department:<<department11--436<<name:<<name<<endl;37//...3839voidmain4041employeeaemp;//--542manageramngrKng35578.9;43//...44
[说明]下面程序是一个小型公司工资管理的程序该公司主要有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;;
1说明]函数intcircleintnintd判定正整数n的d进制表示形式是否是回文数[函数2.1]intcircleintnintdints=0m=n;whilem1;m/=d;return2;[函数2.2说明]函数inttransunsignednintdchars[]将一个无符号整数转换为任意d进制数2≤d≤16[函数2.2]#defineMsizeofunsignedint*8inttransunsignednintdchars[]staticchardigits[]=0123456789ABCDEF;charbuf[M+1];intji=M;ifd<2||d>16s[0]=’/0’;return0;3;do4;n/=d;whilen;for5;sj=buf[j]!=’/0’;j++;returnj;
[说明]下面程序定义了一个类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<<];
[说明]下面程序输出一个矩形面积以及矩形区域上的假想的作物产量[Java程序]publicclassMainjavapublicstaticvoidmainString[]argsLot_sizesmall=newLot_size;Lot_sizemedium=newLot_size;small.set55525;medium.set10101050;System.out.printlnForasmalllotofarea+small.get_area+/n;System.out.printlntheactualcropsare$+small.get_data2+/n;System.out.printlnandidealcropsare$+small.get_data+/n;System.out.printlnForamediumlotofarea+medium.get_area+/n;system.out.printlntheactualcropsare$+medium.get_data2+/n;System.out.printlnandidealcropsare$+medium.get_data+/n;classCrop_assessmentprivateintactual_crop;privateintideal_crop;publicvoidsetintin_actualintin_idealactual_crop=in_actual;ideal_crop=in_ideal;publicintget_actual_cropreturn1;publicintget_ideal_cropreturn2;classLot_sizeprivateintlength;privateintwidth;privateCrop_assessmentcrop=3;publicvoidsetint1intwintaintilength=1;width=w;crop.setai;publicintget_areareturnlength*width;publicintget_datareturn4;publicintget_data2return5;
[说明]已知一棵二叉树用二叉链表存储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;
[说明]函数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;
[函数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;
[流程图说明]下列流程图用于从数组K中找出一切满足KI+KJ=M的元素对KIKJ1≤I≤J≤N假定数组K中的N个不同的整数已按由小到大的顺序排列M是给定的常数[流程图]此流程图中比较KI+KJ:M最少执行次数约为5
[说明] 下面的流程图用来完成求字符串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;;
[说明]下面的程序是通过双链结构来查找学生的信息程序的一部分即创建双向链表部分[函数]#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;;
[流程图说明]下列流程图用于从数组K中找出一切满足KI+KJ=M的元素对KIKJ1≤I≤J≤N假定数组K中的N个不同的整数已按由小到大的顺序排列M是给定的常数[流程图]此流程图中比较KI+KJ:M最少执行次数约为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;
[说明]函数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;
[流程图说明]下列流程图用于从数组K中找出一切满足KI+KJ=M的元素对KIKJ1≤I≤J≤N假定数组K中的N个不同的整数已按由小到大的顺序排列M是给定的常数[流程图]此流程图中比较KI+KJ:M最少执行次数约为5
1说明]函数intcircleintnintd判定正整数n的d进制表示形式是否是回文数[函数2.1]intcircleintnintdints=0m=n;whilem1;m/=d;return2;[函数2.2说明]函数inttransunsignednintdchars[]将一个无符号整数转换为任意d进制数2≤d≤16[函数2.2]#defineMsizeofunsignedint*8inttransunsignednintdchars[]staticchardigits[]=0123456789ABCDEF;charbuf[M+1];intji=M;ifd<2||d>16s[0]=’/0’;return0;3;do4;n/=d;whilen;for5;sj=buf[j]!=’/0’;j++;returnj;
[说明]已知一棵二叉树用二叉链表存储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<<];
[说明]函数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--;
热门题库
更多
初级程序员
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术
移动通信专业技术
有线传输专业技术