试卷详情
-
初级程序员下午试题-36
-
[简答题][函数2.1说明]
函数void find(int *a, int n, int * max, int * min)的功能是在长度为n的整型数组a中,查找最大元素和最小元素的下标。main( )中给出了调用find函数的一个实例。
[函数2.1]
#include<stdio.h>
void find(int *a, int n,int *max,int * min)
{ int i;
*max =* min=0;
for(i=1;i<n;i+ +)
if(a[i]>a[* max]) (1) ;
else if(a[i]<a[*min]) (2) ;
return;
main( )
{ int a[]={4,6,8,9,0,6},max,min;
find(a,6, (3) );
printf("%5d%5d/n", max,min);
}
[函数2.2说明]
以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串前端的公共部分。例如:输入的两个字符串分别是abcdefg和abceef,则输出为abc。
[函数2.2]
#include <stdio.h>
main( )
{ char str1[100],str2[100],str[100],c;
int i=0,s;
printf("/nInput string 1:");gets(str1);
printf("/nInput string 2:");gets(str2);
while(( (4) )&&(str1[i]!=’/0’)&&(str2[i]!=’/0’)){
(5) ;
i++;
}
printf("%s/n",str);
}
-
[简答题][说明]
二叉树的二叉链表存储结构描述如下:
typedef struct BiTNode
{ datatype data;
struct BiTNode *lchild, * rchild; /*左右孩子指针*/
}BiTNode,* BiTree;
对二叉树进行层次遍历时,可设置一个队列结构,遍历从二叉树的根结点开始,首先将根结点指针入队列,然后从队首取出一个元素,执行下面两个操作:
(1) 访问该元素所指结点;
(2) 若该元素所指结点的左、右孩子结点非空,则将该元素所指结点的左孩子指针和右孩子指针顺序入队。
此过程不断进行,当队列为空时,二叉树的层次遍历结束。
下面的函数实现了这一遍历算法,其中Visit(datatype a)函数实现了对结点数据域的访问,数组queue[MAXNODE]用以实现队列的功能,变量front和rear分别表示当前队首元素和队尾元素在数组中的位置。
[函数]
void LevelOrder(BiTree bt) /*层次遍历二叉树bt*/
{ BiTree Queue[MAXNODE];
int front,rear;
if(bt= =NULL)return;
front=-1;
rear=0;
queue[rear]= (1) ;
while(front (2) ){
(3) ;
Visit(queue[front]->data); /*访问队首结点的数据域*/
if(queue[front]—>lchild!:NULL)
{ rear++;
queue[rear]= (4) ;
}
if(queue[front]->rchild! =NULL)
{ rear++;
queue[rear]= (5) ;
}
}
}
-
[简答题][说明]
以下程序的功能是统计学生成绩,包括输入学生的姓名和成绩,按成绩从高到低排列打印输出,对前百分之七十的学生定为合格(PASS),而后百分之三十的学生定为不合格(FAIL)。例如,当输入4名学生的姓名和成绩“Alice 67 Mary 90 Tom 56 John 88”后,程序的执行结果如下:
姓名 成绩 合格否
Mary 90 PASS
John 88 PASS
Alice 67 FAIL
Tom 56 FAIL
[C++程序]
#include <stdio.h>
#include <string.h>
#define N 10
class student
{ protected:
char name[10];
int deg;
public:
void setname(charna[]) {strcpy(name,na);}
char * getname( ) {return name;}
void setdeg(int d) {deg= d;}
int getdeg( ){return deg;}
};
class compute
{ int ns;
student na[N];
public:
void getdata( );
void sort( );
void disp( );
};
void compute::getdata( )
{ int i,tdeg;
char tname[10];
printf("输入学生人数:");
scanf("%d",&ns);
printf("输入学生姓名和成绩:/n");
for(i=0;i<ns;i+ +){
scanf("%s%d",tname,&tdeg);
(1) ;
na[i].setdeg(tdeg);
}
}
void compute::sort( )
{ int i,j,pick;
(2) ;
for(i=0;i<ns-1;i+ +){
pick=i;
for(j=i+1;j<ns;j+ +)
-
[简答题][说明]
本程序使用类来管理员工的通讯地址信息。已知程序的输出为:
输出记录:5
姓名:王丽华
街道地址:中华路15号
市:襄樊市
省:湖北省
邮政编码:430070
[Java代码]
public class Employee{
protected String (1) ;
protected String street;
protected String city;
protected String prov;
protected String post;
protected int no;
public Empbyee( ){}
public Employee(String name,String street,String city,String prov,String post, (2) ){
this.name=name;
this.street=street;
this.city=city;
this.prov=prov;
this.post=post;
this.no=no;
}
public static void main(String[]args){
Employee emp=new Employee(“王华”,“中华路15号”,“武汉市”,“湖北省”,“430070”,1);
emp.changeName(“王丽华”);
(3) (“襄樊市”);
emp.changeNo(5);
(4) ;
}
void changeName(String name){this.name=name;}
void changeStreet(String street){this.street=street;}
void changeCity(String city){this.city=city;}
void changeProv(String prov){this.prov=prov;}
void changeNo(int no){ (5) ;}
void display( ){
System.out.println(“输出记录:”+this.no);
System.o