计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机软件水平考试
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
程序员(初级)
信息系统项目管理师(高级)
系统分析师(高级)
系统架构设计师(高级)
网络规划设计师(高级)
系统规划与管理师(高级)
软件评测师(中级)
软件设计师(中级)
网络工程师(中级)
多媒体应用设计师(中级)
嵌入式系统设计师(中级)
电子商务设计师(中级)
系统集成项目管理工程师(中级)
信息系统监理师(中级)
信息安全工程师(中级)
数据库系统工程师(中级)
信息系统管理工程师(中级)
软件过程能力评估师(中级)
计算机辅助设计师(中级)
计算机硬件工程师(中级)
信息技术支持工程师(中级)
程序员(初级)
网络管理员(初级)
信息处理技术员(初级)
电子商务技术员(初级)
信息系统运行管理员(初级)
网页制作员(初级)
多媒体应用制作技术员(初级)
PMP项目管理员资格认证
问答题【说明】 Stack类是java. ntil包中专门用来实现栈的工具类。以下Java程序是一个不使用库函数而实现字符串反转的程序。例如,输入:123456,则输出:654321:输入:asdfeg,则输出:gefdsa。 【Java程序】 import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.util.*; public class UseStack extends Applet implements ActionListener { Stack MyStack; Label prompt=new Label("输入要反转字符:"); Button pushBtn=new Button("压栈"); Button popBtn=new Button("弹栈"); //反转 TextField input=new TextField(5); int[] DrawStack =new int[10]; //记录堆栈中数据 int[] PoppedOut=new int[20]; //记录被弹出的数据 int StackCnt=0; //记录模拟堆栈的数组中的数据个数 String msg=" "; public void init() { MyStack=new Stack(); add(prompt); add(input); add(pushBtn); add(popBtn); pushBtn.addActionListener(this); {{U}} (1) {{/U}} } public void paint(Graphics g) { for (int i=10; i<StackCnt; i++) //模拟显示堆栈内部的数据排列情况 { g.drawRect(50,200-i*20,80,20); g.drawString(Integer.toString(DrawStack[i]),80,215-i*20); } for (int i=0;{{U}} (2) {{/U}}) //显示被弹出的数据 g.drawString(Integer.toString(PoppedOut[i]),200+i*20,100); g.drawString("堆栈",70,236); g.drawString("栈底",135,225); g.drawString("栈顶",160,225-StackCnt*20); g.drawString(msg,200,140); } public void actionPerformed({{U}} (3) {{/U}}) { if (e.getAct ionCommand () == "压栈") //压栈操作 { if(StackCnt<10) { MyStack.push(new Integer({{U}} (4) {{/U}} )); DrawStack[StackCnt++]=Integer.parseInt(input.getText() ); input.setText (" "); } else msg="输入数据过多,请先弹栈!" } else if (e.getActionCommand () == "弹栈") //弹栈操作 { if({{U}} (5) {{/U}}) { StackCnt--; PoppedOut[PopCnt++]=[(Integer)(MyStack.pop())).intValue(); } else msg="堆栈已空,不能再弹栈!"; } repaint(); } }
进入题库练习
问答题【说明】 编写程序,对于从键盘输入的3个实数a、b、c,计算实系数一元二次方程的根并输出所求的根。 【函数】 #include<sldio.h> #include<sldlib.h> #include<math.h> Main() float a,b,c,delta,x1,x2; printf("Enter a,b,c"); scanf("%f%f%f", if( (1) ) if( (2) ) printf("Input error!/n"); else printf("The single root is%f/n", (3) ); else delta=b*b-4*a*c; if( (4) ) x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); printf("x1=%8.2f/nx2=%8.2f/n",x1,x2,); else if(delta==0) printf("x1=x2=%8.2f/n", (5) ; else Printf("z2=%8.2f+%8.2f*i/n",-b/(2*a),sqrt(-delta)/)(2*abs(a))); Printf("z2=%8.2f-%8.2f*i/n",-b/(2*a),sqrt(-delta)/(2*abs(a)));
进入题库练习
问答题[说明]下图是一个简易文本编辑器程序的运行界面:用户打开磁盘上的某个文件后,可以直接对文本进行编辑,也可以利用界面提供的按钮完成相应操作。主要操作介绍如下:(1)打开文件:打开文件对话框,其中仅显示“*.txt”类型的文件。用户选中某一文件后,其内容将呈现于界面文本框内;(2)查找:提示用户输入要查找的内容,将首次出现的查找内容以蓝色高亮标记;(3)替换:若文本框中已选中某段文本,则提示用户输入要替换的内容,在文本框中完成替换。在开发过程中,文本框名为Text1,“打开文件”、“保存文件”、“查找”、“替换”、“退出”按钮分别命名为Command1至Command5。[VisualBasic代码]DimfileNameAsStringDimfsoAsNew{{U}}(1){{/U}},tsAsObject’打开文本文件PrivateSubCommand1_Click()CommonDialog1.Filter="*.txt"CommonDialog1.ShowOpenfileName={{U}}(2){{/U}}’保存所打开的文件名Setfso=CreateObjeet("Scripting.FileSystemObject")Setts=fso.OpenTextFile(fileName,ForReading)IfNotts.AtEndOfStreamThenText1.Text={{U}}(3){{/U}}EndIfts.CloseEndSub’保存文本文件PrivateSubCommand2_Click()Setts=fso.OpenTextFile(fileName,ForWriting){{U}}(4){{/U}}ts.CloseEndSub’查找字符串PrivateSubCommand3_Cliek()DimsearchAsString,positionAsIntegersearch=InputBox("输入要查找的字符串:")position=InStr(Text1.Text,search)’在文本中查找字符串Ifposition>0Then’若找到指定的字符串Text1.SelStart=position-1’设置选定文本的起始位置Text1.SelLength=Len(search)’设置选定文本的长度ElseMsgBox"没有发现要查找的字符串"EndIfEndSub’替换选中的字符串PrivateSubCommand4_Click()DimobjectAsStringIf{{U}}(5){{/U}}>0Then’若已经选中了要替换的文本object=InputBox("输入要替换的字符串:")Text1.SelText=object’替换文本ElseMsgBox"请先选中要替换的文本!"EndIfEndSub’退出程序PrivateSubCommand5_Click()EndEndSub
进入题库练习
问答题【说明】 本程序利用非递归算法实现二叉树后序遍历。 【函数】 #include<stdio.h> #include<stdlib.h> typedef struct node/*二叉树的结点数据结构类型*/ char data; struct node *left; struct node *right; BTREE; void SortTreelnsert(BTREE **tree, BTREE *s) if(*tree==NULL)*tree=s; else if(s->data<(*tree)->data) SortTreelnsert( (1) ,s); else if(s->data>=(*tree)->data) SortTreelnsert( (2) ,s); void TraversalTree(BTREE *tree) BTREE *stack[1 000],*p; int tag[1000],top=0; p=tree; do while(p !=NULL) stack[++top]=p; (3) ; tag[top]=0; /*标记栈顶结点的左子树已进行过后序遍历*/ while(top>0 putchar(p->data); if(top>0)/*对栈顶结点的右子树进行后序遍历*/ (5) ; tag[top]=1; while(top>0); void PrintSortTree(BTREE *tree) if(tree !=NULL) printSortTree(tree->left); putchar(tree->data); pdntSortTree(tree->right); main() BTREE *root=NULL, *node; char ch; ch=getchar(); while(ch !='#') node=(BTREE*)malloc(sizeof(BTREE)); node->data=ch; node->left=node->right=NULL; SortTreelnsert( ch=getchar(); PrintSortTree(root); putchar('/n'); TraversalTree(root);
进入题库练习
问答题[说明] 打保龄球是用一个滚球去打出10个站立的柱,将柱击倒。一局分10轮,每轮可滚球一次或多次,以击倒的柱数为依据计分。一局得分为10轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两轮的滚球情况有关。即某轮某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分。具体的滚球击柱规则和计分方法如下: 1) 若某一轮的第一次滚球击倒全部10个柱,则本轮不再滚球(若是第10轮则还需另加两次滚球)。该轮得分为本次倒柱数(即10)与以后两次滚球所击倒柱数之和。 2) 若某一轮的第一次滚球未击倒10个柱,则可对剩下未倒的柱再滚球一次。如果这两次滚球击倒全部10个柱,则本轮不再滚球(若是第10轮则还需另加一次滚球),该轮得分为本次倒柱数10与以后一次滚球所击倒柱数之和。 3) 若某一轮的两次滚球未击倒全部10个柱,则本轮不再继续滚球,该轮得分为这两次滚球击倒的柱数之和。 总之,若一轮中一次滚球或两次滚球击倒10个柱,则本轮得分是本轮首次滚球开始的连续3次滚球击倒柱数之和(其中有一次或两次不是本轮滚球)。若一轮内二次滚球击倒柱数不足10个,则本轮得分即为这两次击倒柱数之和。表3-15是打保龄球计分的某个实例说明。 表3-15 某保龄球计分实例表 轮 1 2 3 4 5 6 7 8 9 10 附加 各轮第1次得分 10 10 10 7 9 8 8 10 9 10 8 各轮第2次得分 — — — 2 1 1 2 — 1 — 2 各轮得分 30 27 19 9 18 9 20 20 20 20 累计总分 30 57 76 85 103 112 132 152 172 192 以下[C程序]是模拟打一局保龄球的过程,统计各轮得分和累计总分。程序交互地逐轮逐次输入一次滚球击倒的柱数,计算该轮得分和累计总分。为记录一轮内击倒10柱,但还暂不能计算该轮得分和累计总分的情况,程序引入变量ok,用来记录当前已完成完整计算的轮次。程序每输入一次滚球击倒柱数,就检查还未完成完整计算的轮次,并计算。 [C程序] #include<stdio.h> #define N 13 struct int n; /* 一轮内滚球次球 */ int f; /* 第一次击倒柱数 */ int s; /* 第一次击倒柱数 */ int score; /* 本轮得分 */ int total; /* 至本轮累计总分 */ int m; /* 完成本轮得分计算,还需滚球次数 */ a[N]; int ok = 0; /* 已完成完整计算的轮次数 */ int ball(int i, int n, int max) /* 完成一次滚球,输入正确击倒柱数 */ int d, j, k; static c=1; while (1) if(i <= 10) printf(" 输入第%d轮的第%d次滚球击倒柱数。(<=%d)/n", i, n, max ); else printf(" 输入附加的第%d次滚球击倒柱数。(<=%d)/n", C++, max); scanf("%d , if (d >=0 printf(" 不合理的击倒柱数,请重新输入。/n") ) if (ok < (1) ) /* 对以前未完成计算的轮次分别计算得分与累计总分*/ for(j = ok+1; (2) ; j++) a[j].score += d; if (--a[j].m == 0) a[j].total = ( (3) ) + a[j].score; ok = (4) ; return d; main ( ) int i, first, second, k; /* i表示轮次 */ for ( i = 1 ; ok < 10 ; i++) a[i].score = a[i].f = first = ball(i,1,10); if ( first == 10) a[i].m = 2; a[i].n = 1; if (first < 10 if (first + second == 10) a[i].m = 1; (6) ; if (i <= 10 (7) ; printf( "各轮处1次得分"); for(k = 1; k <= 1; k++) printf("%5d", a[k].f); printf("/n 各轮第2次得分"); for(k=1; k <= i; k++) if (a[k].n < 2) printf(" /"); else printf("%5d", a[k].s); printf("/n 各轮得分"); for(k = 1; k <= ok; k++) printf("%5d", a[k].score); printf("/n 累计总分"); for(k = 1; k <= ok; k++) printf("%5d", a[k].total); printf("/n");
进入题库练习
问答题[问题2]如果以下3*3矩阵沿顺时针方向旋转90°后所形成的矩阵就是原来的矩阵:其中,位于*处的元素需要考生填写请完整地写出该矩阵。
进入题库练习
问答题【说明】 以下【C++程序】用于实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数主要有: createList():创建按指数降序链接的多项式链表,以表示多项式: reverseList():将多项式链表的表元链接顺序颠倒: multiplyList(ListL1,ListL2)计算多项式L1和多项式L2的乘积多项式。【C++程序】#include <iostream.h>class List;class Item friend class List; private: double quot ; int exp ; Item *next; Public: Item(double_quot,int_exp) (1) ;;class List private: Item *list; Public: List() list=NULL: void reverseList(); void multiplyList(List L1,List L2); void createList();;void List::createList() Item *p,*U,*pre; int exp; double quot; list = NULL; while (1) cout << "输入多项式中的一项(系数、指数) :" << endl; cin >> quot >> exp: if ( exp<0 ) break ; //指数小于零,结束输入 if ( quot=0 ) continue; p = list; while ( (2) ) //查找插入点 pre = p; p = p->next; if ( p != NULL continue ; u = (3) ; if (p == list) list = u; else pre->next = u; u ->next = p; void List::reverseList() Item *p, *u; if ( list==NULL ) return; p = list ->next; list -> next = NULL; while ( p != NULL) u = p -> next; p ->next = list; list = p; p = u; void List::multiplyList ( List L1, List L2 ) Item *pL1,*pL2,*u; int k, maxExp; double quot; maxExp = (4) : L2.reverseList(); list=NULL; for ( k = maxExp;k >= 0;k-- ) pL1 = L1.list; while ( pL1 != NULL pL2 = L2.1ist; while (pL2 NULL quot = 0.0; while (pL1 != NULL pL2 = pL2 -> next; else if ( pL1 -> exp + pL2 -> exp > k ) pL1 = pL1 -> next; else pL2 = pL2 -> next; if ( quot !=0.0 ) u = new item( quot, k ); u -> next = list; list = u; reverseList (); L2. reverseList ():void main() List L1,L2,L; cout << "创建第一个多项式链表/n"; L1.createList(); cout << "创建第二个多项式链表/n"; L2.createList(); L.multiplyList (L1,L2);
进入题库练习
问答题[流程图][说明]把指定区间上的所有整数分解质因数,每一整数表示为质因数按从小到大顺序排列的乘积形式。如果被分解的数本身是素数,则予以注明。例如,90=2×3×3×5,91=素数。下面的流程图描述了分解质因数的过程。对每一个被分解的整数j,赋值给b(以保持判别运算过程中j不变),用K(从2开始递增1取值)试商,若不能整除,打印输出“*k”,b除以k的商赋给b(b=b/k)后继续用k试商(注意,可能有多个k因数),直至不能整除,k增1继续。将流程图中的(1)~(5)处补充完整。
进入题库练习
问答题[问题2] 若按下式计算奇校验位,则上述流程图中的(1)处应填 (5) 。 B0 = B1⊕B2⊕...⊕B7⊕1
进入题库练习
问答题【说明】下面的程序的功能是利用实现Runnable接口的方法来创建线程,并利用它来执行响应的一些操作。最后使得m的执行结果:100,如图3。注意:请勿改动main()主方法和其他已有的语句内容,仅在下划线处填入适当的语句。classClassName(1)Runnableintn;(2)tryThread.sleep(2000);n=100;catch((3)e)publicstaticvoidmain(String[]args)tryClassNamea=newClassName();(4)threadl.(5)();threadl,join();intm=a.n;System.out.println("m="+m);catch((3)e)
进入题库练习
问答题1说明】 本程序可以打印出如下图形(菱形): * *** ***** ******* ***** *** * 【函数2.1】 main() int i,j,k; for(i=0;i<=3;i++) for(j=0;j<=2-i;j++) printf(" "); for( (1) ) printf("*"); printf("/n"); for(i=0;i<=2;i++) for( (2) ) printf(" "); for(k=0;k<=4-2*i;k++) printf("*"); printf("/n"); 【函数2.2说明】 通过本程序,可以从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“CsaiWgm”中保存,输入的字符串以“!”结束。 【函数2.2】 #include "stdio.h" main() FILE *fp; char str[100],filename[10]; int i=0; if((fp=fopen("CsaiWgm","w"))==NULL) printf("cannot open the file/n"); exit(0); printf("please input a string:/n"); gets(str); while( (3) ) if(str[i]>='a' fputc(str[i],fp); (5) ; fclose(fp); fp=fopen("CsaiWgm","r"); fgets(str,stden(str)+1,fp); printf("%s/n",str); fclose(fp);
进入题库练习
问答题[说明]下面的流程图描述了计算自然数1到N(N≥1)之和的过程。[流程图][问题1]将流程图中的(1)~(3)处补充完整。[问题2]为使流程图能计算并输出1*3+2*4+…+N*(N+2)的值,A框内应填写{{U}}(4){{/U}};为使流程图能计算并输出不大于N的全体奇数之和,B框内应填写{{U}}(5){{/U}}。
进入题库练习
问答题【说明】 本程序从正文文件text.in中读入一篇英文短文,统计该短文中不同单词及出现次数,并按词典编辑顺序将单词及出现次数输出到正文文件word.out中。 程序用一棵有序二叉树存储这些单词及其出现的次数,边读入边建立,然后中序遍历该二叉树,将遍历经过的二叉树上的结点内容输出。 【函数】 # include <stdio.h> # include <malloc.h> # include <ctype.h> # include <string.h> # define INF "text.in" # define OUTF "word.our' typedef struct treenode char *word; int count; struct treenode *left, *right; BNODE; int getword(FILE *fpt, char *word) char c; c=fgetc(tpt); if (c==EOF) return 0; while(!(tolower(c)>= 'a' if (c==EOF) return 0; /* 跳过单词间的所有非字母字符 */ while(tolower(c)>= 'a' c=fgetc(fpt);   *word='/0'; return 1; void binary_tree(BNODE **t, char *word) BNODE *ptr, *p; int compres; p=NULL; (1) ; while (ptr) /* 寻找插入位置 */ compres=strcmp(word, ptr->word);/* 保存当前比较结果 */ if (!compres)  (2) ; return; else p=ptr; ptr=compres>0 ? ptr->right: ptr->left;   ptr=(BNODE *)malloc(sizeof(BNODE)); ptr->left=ptr->right=NULL; ptr->word=(char *)malloc(strlen(word)+1); strcpy(ptr->word, word); (3) ; if (p==NULL) *t=ptr; else if (compres>0) p->right=ptr; else p->left=ptr; void midorder(FILE *fpt, BNODE *t) if (t==NULL) return; midorder(fpt, (4) ); fprintf(fpt, "%s %d/n", t->word, t->count); midorder(fpt, t->right); void main() FILE *fpt; char word[40]; BNODE *root=NULL; if ((fpt=fopen(INF, "r"))==NULL) printf("Can't open file %s/n", INF); return; while(getword(fpt, word)==1) binary_tree( (5) ); fclose(fpt); fpt=fopen(OUTF, "w"); if (fpt==NULL) printf("Can't open fife %s/n", OUTF); return; midorder(fpt, root); fclose(fpt);
进入题库练习
问答题[说明]某VisualBasic应用程序用于监测某种锅炉设备内液面高度(0~50cm),其运行窗口界面如图4-16所示。图4-16某锅炉设备液面高度显示界面在图4-16中,设计了一个高度计(矩形形状shpMeter)及其中指示当前液面高度的水银柱(矩形形状shpT),文字标签标记了液面高度的刻度;另有一个图片框picCurve,用于动态描述检测到的液面高度曲线(用户见到的曲线与水银柱等高变化);[开始](CmdStart)按钮用于启动液面高度检测,命令按钮“暂停”(CmdStop)用于暂停液面高度检测。液面高度计形状控件shpMeter是固定的,其属性FillsStyle默认为透明。矩形形状shpT(水银柱)的Visible属性初始设置为不可见,属性Filltype设置为Solid(实心),FillColor设置为红色;图片框picCurve的属性AutoRedraw设置为True;程序设计过程中,创建了一个定时器TimT,属性Enabled初始设置为False(不可用),属性Interval(定时间隔)的值应设置为(1)。为模拟锅炉设备液面高度的检测,程序中利用了(0,1)之间均匀分布的伪随机数获得[0,50]之间的随机液面高度WH。为便于在图片框picCurve中绘制曲线,程序中对该图片框建立了如下坐标系统:图片框的左上角定义为原点(0,0),水平向右方向为X轴,垂直向上方向为Y轴,右下角坐标为(50.200)。为了便于观察记录的液面高度值,图片框中从上到下创建了7条水平虚线Ls(i),i=0,1…6,并在程序中按等间隔排列进行位置设置。应用程序中每隔3秒算出曲线点(x,y),其中x=O,1,2……,再用直线段连接各相邻曲线点形成液面高度曲线。[VisualBasic程序代码]Dim(2)ASInteger'试题全局变量PrivateSubCmdStart_Click()TimT.Enabled=(3)ShpT.Visible=TrueEndSubPrivateSubCmdStop_Click()TimT.Enabled=FalseEndSubPrivateSubForm_Load()Dimi,SAsIntegerPicCurve.Scale(0,0)-(50,200)'设置图片框坐标系:左上角-右下角S=25'H等于图片框高度的1/8Fori=0To6'设置7条水平线Ls(i)的位置Ls(i).X1=0'Ls(i)起点横坐标Ls(i).Y1=(4)'Ls(i)起点纵坐标Ls(i).X2=50'Ls(i)终点横坐标Ls(i).Y2=Ls(i).Y1'Ls(i)终点纵坐标Ls(i).BorderColor=&H00FCFCFC'设置水平线颜色(5)x=0'设置曲线坐标初值EndSubPrivateSubtimT_Timer()DimWH,HAsInteger'WH为实时液面高度,H为图片框中液面高度点显示高度WH=Int(Rnd*51)'随机模拟产生锅炉内液面高度(0~50cm)H=ShpMeter.Height*(6)'算出水银柱的高度ShpT.Top=(7)'设置水银柱顶部位置ShpT.Height=H'设置水银柱的高度'绘制液面高度曲线y=(8)'算出曲上当前点的纵坐标Ifx=51Then'当超出图片框时PicCurve.Cls'清框图片框内以前画的曲线(9)ElseIfx>0Then'除左边点外PicCurve.Line(x-1,Lasty)-(x,y),vbRed'由前1点到当前点画红色线段EndIfx=x+1'准备下一点坐标Lasty=y'保存当前坐标供下次使用EndSub1.[问题1]请根据[说明]和图4-16所示的显示结果,将[说明]中(1)空缺处的内容和[VisualBasic程序]中(2)~(9)空缺处的程序语句填写完整。
进入题库练习
问答题【说明】 本程序从正文文件text.in中读入一篇英文短文,统计该短文中不同单词及出现次数,并按词典编辑顺序将单词及出现次数输出到正文文件word.out中。 程序用一棵有序二叉树存储这些单词及其出现的次数,边读入边建立,然后中序遍历该二叉树,将遍历经过的二叉树上的结点内容输出。 【函数】 # include <stdio.h> # include <malloc.h> # include <ctype.h> # include <string.h> # define INF "text.in" # define OUTF "word.our' typedef struct treenode { char *word; int count; struct treenode *left, *right; } BNODE; int getword(FILE *fpt, char *word) { char c; c=fgetc(tpt); if (c==EOF) return 0; while(!(tolower(c)>= 'a' if (c==EOF) return 0; } /* 跳过单词间的所有非字母字符 */ while(tolower(c)>= 'a' c=fgetc(fpt);  } *word='/0'; return 1; } void binary_tree(BNODE **t, char *word) { BNODE *ptr, *p; int compres; p=NULL; {{U}}(1) {{/U}}; while (ptr) /* 寻找插入位置 */ { compres=strcmp(word, ptr->word);/* 保存当前比较结果 */ if (!compres) {{{U}} (2) {{/U}}; return;} else { p=ptr; ptr=compres>0 ? ptr->right: ptr->left;   } } ptr=(BNODE *)malloc(sizeof(BNODE)); ptr->left=ptr->right=NULL; ptr->word=(char *)malloc(strlen(word)+1); strcpy(ptr->word, word); {{U}} (3) {{/U}}; if (p==NULL) *t=ptr; else if (compres>0) p->right=ptr; else p->left=ptr; } void midorder(FILE *fpt, BNODE *t) { if (t==NULL) return; midorder(fpt,{{U}} (4) {{/U}}); fprintf(fpt, "%s %d/n", t->word, t->count); midorder(fpt, t->right); } void main() { FILE *fpt; char word[40]; BNODE *root=NULL; if ((fpt=fopen(INF, "r"))==NULL) { printf("Can't open file %s/n", INF); return; } while(getword(fpt, word)==1) binary_tree({{U}} (5) {{/U}}); fclose(fpt); fpt=fopen(OUTF, "w"); if (fpt==NULL) { printf("Can't open fife %s/n", OUTF); return; } midorder(fpt, root); fclose(fpt); }
进入题库练习
问答题阅读以下技术说明、流程图和C程序,根据要求回答问题1和问题2。【说明】如图6-13所示的程序流程图描述了对8位二进制整数求补的算法。该算法的计算过程如下:从二进制数的低位(最右位)开始,依次向高位逐位查看,直到首次遇到“1”时,停止查看。然后,对该“1”位左面的更高位(如果存在的话),逐位求反,所得的结果就是对原二进制数求补的结果。例如:对二进制整数10010110求补的结果时01101010。设8位二进制整数中的各位,从低位到高位,依次存放在整型数组BIT的BIT[1]~BIT[8]中。例如,二进制整数10010110存放在数组BIT后,则有BIT[1]=0,BIT[2]=1,…,BIT[7]=0,BIT[8]=1。若流程图中存在空操作,则用NOP表示。以下待修改的【C程序】完成的功能是:对于给定的1个长正整数,从其个位数开始,每隔一位取1个数字(即取其个位、百位和万位等数字),形成1个新的整数并输出。例如,将该程序修改正确后,运行时若输入“9753186420”,则输出的整数为“73840”。【C程序】行号C代码01#include<stdio.h>02intmain()03{longn,num;04inti;05do{06printf("请输入一个正整数:");07scanf("%1d",n);08}while(n<=0);09k=1;10for(i=1;n>=0;i++){11if(i%2=1){12num=num+(n%10)*k;13k=k*10;14}15n=n/10;16}17printf("新数据为:%d/n",num);18return0;19}
进入题库练习
问答题【说明】 Fibonacci数列A={1,1,2,2,5,8,…)有如下性质: a0=a1=1 ai=ai-1+ai-2,i>1 对于给定的n,另外有一个由n个元素组成的数列xn,该数列中各元素的值为: xi=ai/ai+1,i=0,1,…,n 现要求对xn中的元素按升序进行排序,然后以分数形式输出排序后的xn。例如n=5时,排序前的xn={1/1,1/2,2/3,3/5,5/8},排序后的xn={1/2,3/5,5/8,2/3,1/1}。程序中函数make()首先生成排序前的xn,然后调用函数sort()进行排序,最后输出所求结果。 【程序】 #include <stdio.h> #include <stdlib.h> #include <malloc.h> struct fact { long m,n; }; void sort(int n,struct fact *p) { int a; long s,t,u,v; struct fact *q,*end; for(end=p+(n-1),a=1;a;end--) for(a=0,q=p;q<end;p++) { s=q->m; t=q->n; u=(q+1)->m; v=(q+1)->n; if({{U}} (1) {{/U}}) { q->m=u; {{U}} (2) {{/U}} {{U}} (3) {{/U}} (q+1)->n=t; a=1; } } } void make(int n) { int i; long a,b,c; struct fact *x,*y; x=(struct fact *)malloc(sizeof(struct fact)*n); x->m=1: x->n=1; for(a=1,b=1,i=2;i<=n;i++) { {{U}} (4) {{/U}} a=b; b=c; (x+(i-1))->m=a; (x+(i-1))->n=b; } {{U}} (5) {{/U}} printf("x%d={%1d/%1d",n,x->m,x->n); for(y=x+1;y<x+n;y++) printf(",%1d/%1d",y->m,y->n); printf("}/n"); free(x); } void main() { int n; printf("input n:"); scanf("%d", make(n); }
进入题库练习
问答题[说明] 本程序接收输入的学生信息,包括学号、姓名,成绩,原样输出信息并计算学生的平均成绩。其中学生粪Stud除了包括no(学号)、name(姓名)和grade(成绩)数据成员外,有两个静态变量sum和num,分别存放总分和人数,另有一个构造函数、一个普通成员函数disp()和一个静态成员函数 avg()用于计算平均分。[C++程序]#include <stdio.h>#include <string.h>class Stud int no; char name [10]; int deg; (1) int sum; static int num; public: Stud(int n,char na[],int d) no=n; deg=d; strcpy(name,na); (2) ; (3) ; static double avg() return (4) ; void disp() printf("% -5d% -8s%3d/n",no,name,deg);;int Stud:: sum = 0;int Stud:: num=0;void main() Stud s1(1,"Li",81), s2(2,"Zhao",84.5),s3(3,"Zhang",87); printf("/nNo. Name Grade/n"); s1.disp(); s2.disp(); s3.disp(); printf("Avg=%g/n/n", (5) );
进入题库练习
问答题【说明】 在下面程序横线处填上适当的字句,3个(2)空填的是一样的。使其输出结果为: x=5 x=6 y=7 x=8 z=9 【程序】 #include<iostream.h> class X1 int x; (1) ; X1(int xx=0)x=xx; (2) void Output() cout<<"x="<<x<<end; ; (3) Y1:public X1 int y; public: Y1(int xx=0,int yy=0);X1(xx)y=yy; (2) void Output() (4) Output(); cout<<"y="<<y<<endl; ; class Z1:public X1 int z: (5) ; Z1(int xx=0,int zz=0):X1(xx)(z=zz; (2) void Output() X1∷Output(); cout<<"z="<<z<<endl; ; void main() X1 a(5);Y1 b(6,7);Z1 c(8,9); X1*p[3]= For(int i=0;i<3;i++) p[i]->Output();cout<<endl;
进入题库练习
问答题[说明]某种传感器的输出值Ratio依赖于环境温度temp(-40℃≤temp≤50℃)。对一组环境温度值(ITEMS个),已经测量得到了相应的Ratio值(如表4-10表格所示)。表4-10粗略地描述了曲线Ratio(temp)。{{B}}表4-10曲线Ration(temp)的列表值{{/B}}环境温度temp传感器的输出值Ratio-40℃0.20-20℃0.60-10℃0.800℃1.0010℃1.1730℃1.5050℃1.80校正系数K是Ratio的倒数,因此也依赖于环境温度temp。在数据处理中,需要用更多的列表值细致地描述曲线K(temp),如表4-11所示。                                        {{B}}表4-11 曲线K(temp)的列表值{{/B}}环境温度temp校正系数K-40℃5.00-39℃4.55-38℃4.17-37℃3.85…………-20℃1.67-19℃1.61……^-10℃1.25-9℃1.22…………-19℃0.56在表4-11中,各温度值所对应的K值是对表4-10进行线性插值再求倒数得到的,具体的计算方法如下。1)根据temp值,在表4-10中用二分法查找;2)若找到相应的温度值,则按相应的Ratio值求倒数得到K值;3)若没找到相应的温度值,则可确定temp所在的温度区间[Tp1,Tp2],同时获得了相应的Ratio1和Ratio2,再按如下公式计算K值:在程序中,当temp高于50℃或低于-40℃C时,设定K=0。[C程序]#includetypedefstruct{intTemp;/*环境温度*/doubleRatio;/*传感器的输出值*/}CURVE;#defineITEMS7doubleGetK(intTemp,CURVE*p,intn){/*用二分法在n个元素的有序表p中查找与Temp对应的传感器输出值*/intlow,high,m;doubleStep;low=0;high=n-1;if((Temp<p->Temp)||(Temp>(p+high)->Temp))return0.0;/*超出温度范围时返回0.0*/while(low<=high){m={{U}}(1){{/U}};if(Temp==(p+m)->Temp)return{{U}}(2){{/U}};if(Temp<(p+m)>Temp)high=m-1;elselow={{U}}(3){{/U}};}p+=high;Step=({{U}}(4){{/U}})/((p+1)->Temp-p->Temp);return1.0/(p->Ratio+Step*({{U}}(5){{/U}});}voidmain(){intDegree;doublek;CURVECurve[ITEMS]={{-40,0.2},{-20,0.60.},{-10,0.8},{0,1.0},{10,1.17},{30,1.50},{50,1.8}};printf("环境温度校正系数/n");for(Degree=-40;Degree<=50;Degree++){k=GetK(Degree,Curve,ITEMS);printf("%3d%4.2f/n",Degree,k);}}
进入题库练习