在常用的字处理软件中,按下<Alt>键再拖动鼠标选择文本,可以 (1) ;按下<Ctrl>键再用鼠标拖动已选定的文本,可以 (2) 。
单选题
单选题
案例分析题试题一
阅读下列说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内
案例分析题阅读以下说明和C代码,填写代码中的空(1)~(6),将解答写入答题纸的对应栏内
案例分析题试题六
阅读下列说明和 C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内
案例分析题试题三
阅读以下代码和问题, 回答问题, 将解答填入答题纸的对应栏内
问答题阅读以下说明和流程图,填补流程图中的空缺(1)~(5),将解答填入答题纸的对应栏内。{{B}}[{{/B}}说明{{B}}]{{/B}}求连续函数f(x)的根(方程f(x)=0的解)的最简单方法是二分法。为此,首先需要在若干点上检查函数值的符号,如果发现f(a)与f(b)符号相反(a<b),则在区间(a,b)中必然存在f(x)的根。因为当x从a变到b时,连续函数的值将从正变到负(或从负变到正),必然要经过0。区间(a,b)就是根的初始范围。取该区间的中点m,如果f(m)=0,则根就是m。如果f(a)与f(m)符号相反,则根一定在区间(a,m)中;如果f(m)与f(b)符号相反,则根一定在区间(m,b)中。因此,根的范围缩小了一半。依此类推,将区间一半一半地分下去,当区间的长度很小(达到根的精度要求,例如0.001)时,或者当区间中点处的函数值几乎接近于0(即绝对值小于预先规定的微小量,例如0.001)时,近似计算就可以结束了。以下流程图描述了用二分法近似计算区间(a,b)中f(x)的根的过程。{{B}}[{{/B}}流程图{{B}}]{{/B}}
问答题[Vsual Basic 程序代码]
Private Sub CmdSelect_Cliek()
For i = O To List2.ListCount - 1
If Listl.Text = List2.List(i) Then Exit Sub '不要重复选择
Next i
List2.Addltem{{U}} (1) {{/U}} '在List2中增添List1中所选的项
End Sub
Private Sub CrndSelAll_Click()
List2.Clear '先删除List2中的已有项
For i = 0 To {{U}}(2) {{/U}} '对List1中所有各项做循环处理
List2.Addltem {{U}}(3) {{/U}} '将该项增添到 List2中
Next i
End Sub
Private Sub CmdDelete_Cliek()
If List2.Listlndex >= O Then '如果List2中有选中的项,
List2.Removeltem {{U}} (4) {{/U}} '则删除所选的项
End If
End Sub
Private Sub CmdDelAll_Cliek()
{{U}}(5) {{/U}}
End Sub
问答题阅读以下说明和C函数,填补函数代码中的空缺,将解答填入答题纸的对应栏内。[说明1]函数f(doubleeps)的功能是:利用公式计算并返回π的近似值。[C函数1]doublef(doubleeps){doublen=1.0,s=1.0,term=1.0,pi=0.0;while(fabs(term)>=eps){pi=pi+term;n=______;s=______;term=s/n;}returnpi*4;}[说明2]函数fun(char*str)的功能是:自左至右顺序取出非空字符串str中的数字字符,形成一个十进制整数(最多8位)。例如,若str中的字符串为“iyt?67kpf3g8d5.j4ia2e3p12”,则函数返回值为67385423。[C函数2]longfun(char*str){inti=0;longnum:0;char*p=str;while(i<8++i;}______;}returnnum;}
问答题【说明】 以下【C程序】的功能是从文件text_01.ini中读入一篇英文短文,统计该短文中不同单词和它的出现次数,并按词典编辑顺序将单词及它的出现次数输出到文件word_xml.out中。 该C程序采用一棵有序二叉树存储这些单词及其出现的次数,一边读入一边建立。然后中序遍历该二叉树,将遍历经过的二叉树上节点的内容输出。 程序中的外部函数 int getword(FILE *fpt,char *word) 从与fpt所对应的文件中读取单词置入word,并返回1;若已无单词可读,即到文件尾部时,则函数返回0。【C程序】#include <stdio.h>#include <malloc.h>#include <ctype.h>#include <string.h>#define INF "TEXT_01.INI"#define OUTF "WORD_XML.OUT"typedef struct treenode char *word; int count; struct treenode *left, *right; BNODE;int getword(FILE *fpt,char *word);void binary tree(BNODE **t,char *word) BNODE *ptr, *p; int cmpres; p = NULL; (1) ; while (ptr) /*寻找插入位置*/ cmpres = strcmp(word, (2) ); /* 保存当前比较结果*/ if (!cmpres) (3) return; else (4) ; ptr = cmpres > 0 ? ptr->right : ptr->left; ptr = (BNODE *)malloc(sizeof(BNODE)); ptr->right = ptr->left = NULL; ptr->word = (char *)malloc(strlen(word)+1); strcpy(ptr->word,word); ptr->count = 1; if (p == NULL) (5) ; else if (cmpres > 0) p->right = ptr; else p->left = ptr; void midorder(FILE *fpt, BNODE *t) if ( (6) ) return; midorder(fpt , t->left); 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( (7) ); fclose(fpt); fopen(OUTF,"w"); midorder(fpt, root); fclose(fpt);
问答题【说明】
设有一个带表头结点的双向循环链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次L.Locate(x)操作时,令元素值x的结点的访问频度 freq加1,并将该结点前移,链接到现它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。
【函数】
void Locate( int
while(p!=frist
if(p! =first) /*链表中存在x*/
{{{U}} (2) {{/U}};
<结点类型说明>
* current = P; /*从链表中摘下这个结点*/
Current -> prior -> next = current -> next;
Current -> next -> prior = current -> prior;
P = current -> prior; /*寻找重新插入的位置*/
While(p! =first
Current-> next = {{U}}(4) {{/U}}; /*插入在P之后*?
Current -> prior = P;
P -> next -> prior = current;
P->next={{U}} (5) {{/U}};
}
else printf("Sorry. Not find! /n"); /*没找到*/
}
问答题[说明]
本程序使用类来管理员工的通讯地址信息。已知程序的输出为:
输出记录:5
姓名:王丽华
街道地址:中华路15号
市:襄樊市
省;湖北省
邮政编码:430070
[C++程序]
#include < iostream, h >
#include < string, h >
class employee.
{ protected:
char name[10];
char street[ 20 ];
char city[10];
char{{U}} (1) {{/U}}[10];
char post[7];
int no;
{{U}} (2) {{/U}}:
{{U}}(3) {{/U}}(char [] ,char [] ,char [] ,char [] ,char [] ,int);
void changename ( char n [] ) { strcpy ( name, n); }
void changestreet( char s[] ) { strcpy(street,s) ;}
void changecity ( char c [] ) { strcpy ( city, c ); }
void changeprov( char p [] ) { strcpy(prov,p); }
void changeno(int nnm) {{{U}} (4) {{/U}};}
void display( );
};
employee::{{U}} (3) {{/U}}(char n[] ,char s[] ,char c[] ,char p1[] ,char p2[] ,int nam)
{ strcpy(name,n);
strcpy ( street, s);
strcpy ( city, c);
strcpy ( prov, p1 );
strcpy ( post, p2 );
no = nam; }
void employee:: display( ) { cont< <"输出记录: "< <no< <endl;
cout< < "姓名: "< < name < < endl;
coot < < "街道地址: "< < street < < endl;
cout < < "市: "< < city < < endl;
cout< <"省: "< <prov < <endl;
cout < <"邮政编码: "< < post < < endl;
}
void main( ) { employee cmp("王华" ,"中华路15号" ,"武汉市","湖北省","430070", 1 );
emp. changename( "五丽华" );
emp. changecity ( "襄樊市" );
emp. changeno(5);
{{U}}(5) {{/U}};
问答题[说明]给定一个十进制整数A,将其转换为R进制数的方法是:将A的整数部分逐次除以R,直到商等于0为止,将所得的余数由低位到高位排列在一起,就得到了对应R的进制数。以A=11,R=2为例,11÷2=5…1,5÷2=2…1,2÷2=1…0,1÷2=0…1中各式的余数依次为:1,1,0,1,于是与A对应的二进制数为1011。下面的流程图实现了将十进制数2597转换为八进制数的功能,其中:(1)循环1执行除法运算并将余数依次记录在数组a中(假定数组长度足够长),如a[1],a[2],……,a[k];(2)循环2则用于将这些余数按逆序输出,即a[k],a[k-1],……,a[1];(3)图中i,j分别是循环1和循环2中的循环变量;(4)图中q用于记录每次除法所得的商值。[流程图]
问答题【程序2.1说明】 求所有满足如下条件的三位数:它除以11得的商等于它各位数字的平方和。例如 550,除以11商为50,50=52+52+02。 【程序2.1】 void main() int i, j,n,s; for(i=100;i<=999;i++) n=i; j=n/11; s=0; while( (1) ) (2) n/=10; if( (3) ) printf("%d/t",i); 【程序2.2说明】 本程序输入一字符串,将其中的大写字母改变成小写字母。 【程序2.2】 void main() int i=0; char s[120]; scanf("%s",s); while( (4) ) if( (5) ) s[i]=s[i]- 'A'+'a'; i++; printf("%s/n",s);
问答题【说明】
希赛教育集团公司为发展生产向社会公开招聘M个工种的工作人员,每个工种各有不同的编号(1至M)和计划招聘人数。每位应聘者需申报两个工种,并参加公司组织的考试。公司将按应聘者的成绩从高分至低分的顺序进行排队录取。公司的录取原则是:从高分到低分依次对每位应聘者先按其第一志愿录取;当不能按其第一志愿录取时,便将他的成绩扣去5分后,重新排队,并按其第二志愿考虑录取。
程序为输出各工种实际招聘的应聘人员,每个工种都保留一个录取者的有序队列。录取处理循环直至招聘额满或已对全部应聘者都做了录取处理。
程序中,类型STU包含有应聘者的基本信息:编号、成绩、志愿、排队成绩和录取志愿号。数组rz[]的每个元素对应一个工种,包含有计划招聘人数和已录取的人数。
【程序】
#include<stdio.h>
#include<malloc.h>
#define M 20
#define PEMARK 5
typedef struct stu{
int no, total, z[2], sortm, zi;
struct stu *next;
}STU;
struct rzmode{
int Imt, count;
STU *next;
}rz[M];
STU *head=NULL, *over=NULL;
int all
FILE *fp;
char dataf[]="pp07.dat";
print(STU *p){
for(;p!=NULL;p=p->next)
printf("%d(%d)/t",p->no,p->total);
}
insert(STU **p, STU *u){
STU *v, *q;
for(q=*p;q!=NULL;v=q,{{U}} (1) {{/U}})
if(q->sortm<u->sortm)break;
if(q==*p){{U}} (2) {{/U}};
else{{U}} (3) {{/U}};
U->next=q;
}
main(){
int zn, i, no, total, z1, z2;
STU *p, *v, *q;
fp=fopen(dataf, "r");
if(fp==NULL){
printf("Can't open file %s./n",dataf);
exit(0);
}
fscanf(fp, "%d",
for(all=0,i=1;i<=zn;i++){
fscanf(fp,"%d",
rz[i].count=0;rz[i].next=NULL;
all+={{U}} (4) {{/U}};
}
for(;;){
if((fscanf(fp, "%d%d%d%d",
p=(STU*)malloc(sizeof(STU));
p->no=no;
p->total=p->sortm=total;
p->zi=0;p->z[0]=z1;p->z[1]=z2;
{{U}} (5) {{/U}};
}
fclose(fp);
for(;all ){
p=head; head=head->next;
if(rz[p->z[p->zi]].count<{{U}} (6) {{/U}}){
rz[p->z[p->zi]].count++;
insert(
all--;
continue;
}
if(p->zi>=1){
p->next=over;over=p;
continue;
}
p->sortm-=DEMARK;{{U}} (7) {{/U}};
insed(
}
for(i=1;i<=zn;i++){
printf("%d:/n",i);
print(rz[i].next);
printf("/n");
}
printf("over:/n");print(head);
print(over);printf("/n");
}