软件水平考试(初级)程序员下午(应用技术)模拟试卷39
-
阅读以下说明和Java程序,将应填入(n)处的字句写在对应栏内。
[说明]
下面程序实现十进制向其它进制的转换。
[Java程序]
ClasS Node{
int data;
Node next;
}
class Transform{
private Node top;
public void print(){
Node p;
while(top!=null){
P=top;
if(P.data>9)
System.out.print((char)(P.data+55));
else
System.out.print(p.data);
top=p.next;
}
}
public void Trans(int d,int i){//d为数字;i为进制
int m;
(1) n=false;
Node p;
while(d>0){
(2);
d=d/i;
p=new Node();
if( (3) ){
p.data=m;
(4);
top=P;
n=true;
}
else{
p.data=m;
(5);
top=P;
}
}
}
}
-
阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。
[说明]
下面程序是为汽车市场编制的一个程序的一部分。其中automobile是基类。
[C++程序]
//Auto.h
#ifndef AUTO_H
#define AUTO_H
class automobile
{
(1):
int miles_per_gallon; //汽车每加仑行驶公里数
float fuel_capacity; //油箱容积
public:
void initialize(int in_mpg,int in_fuel);
int get_mpg(void);
float get_fuel(void);
float travel_distance(void);
}
#endif
//Auto.cpp
#include"auto.h"
void automobile::initialize(int in_mpg,float in fuel)
{
miles_per_gallon=in_mpg;
fuel_capacity=in_fuel;
)
int automobile::get_mpg() //提供一辆特定汽车每加仑公里数
{return miles per_gallon;}
float automobile::get_fuel() //提供油箱容积
{return fuel_capacity;}
float automobile::travel_distance()
{return (2) }
//car.h
#ifndef CAR_H
#define CAR_H
#include"auto.h"
class car: (3)
{
int Total_doors;
public:
void initialize(int in_mpg,float in_fuel,int doors=4);
int doors(void);
};
#endif
//car.cpp
#include"car.h"
void car::initialize(int in_mpg,float in_fuel,int door)
{
Total_doors=door;
miles_per_galion=in_mpg;
fuel_capacity=in_fuel;
}
int car::doors(void)
{return Total doors;}
//Allauto.cpp
#include
#include"auto.h"
#include"car.h"
int main()
{
car sedan;
sedan.initialize(24,20.0,4);
tout<<"The sedan can travel"<< (4) <<"miles.\n";
cout<<"The sedan has"<< (5) <<"doors.\n";
return 0;
}
-
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
[说明]
某银行共发出M张储蓄卡,每张储蓄卡拥有唯一的卡号,每天每张储蓄卡至多支持储蓄卡持有者的N笔“存款”或“取款”业务。程序中用数组card[M][N+3]中的每一行存放一张储蓄卡的有关信息,其中:
card[i][0]存放第i张卡的卡号;
card[i][1]存放第i张卡的余额;
card[i][2]存放第i张卡的当日业务实际发生笔数;
card[i][3]~card[i][N+2]存放第i张卡的当日存取款金额,正值代表存款,负值代表取款。
当持卡者输入正确的卡号、存款或取款金额后,程序进行相应的处理;若输入不正确的数据,程序会提示持卡者重新输入;若输入的卡号为负数时,银行终止该卡的当日业务。
[C程序]
#include<stdio.H>
#define M 6
#define N 5
long card[M][N+3]={{9801,2000,0,},{9812,2000,2,},{9753,3000,1,},
{8750,500,0,},{9604,2800,3,),(8901,5000,5,}};
int locate(long card[][N+3],int m,long no)
{ int i;
for(i=0;i<m;i++)
if((1)==no) return i;
(2);
}
main()
{long cardNo,money;
int k;
while(1){
printf("请输入卡号:\n");
scanf("%1d",&cardNo);
if(cardNo<0) break;
k=locate(card,M,cardNo);
if(k==-1){
printf("不存在%id号的储蓄卡\n",cardNo);
continue;
}
printf("请输入金额(正值代表存款,负值代表取款):\n");
scanf("%id",&money);
if(card[k][1]+money<0){
printf("存款余额不足,不能完成本次的取款业务\n");
continue;
}
if(card[k][2]==N){
printf("已完成本卡的当日业务\n");
continue;
}
/*处理一笔业务的数据*/
card[k] (3)=money;
(4);
(5);
}
}
-
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
[说明1]
函数int function(int a)的功能是判断指定的正整数是否为素数,若是,返回1,否则返回0。
[C函数1]
int function(int a)
{ int yes,i;
i=2;yes=1;
while(i<=a/2 && (1) ){
if( (2) ) yes=0;
i++;
}
return yes;
}
[说明2]
函数int deleteARR(int*arr,intn)的功能是指定的有序数组压缩成各元素互不相同的有序数组,即相同数只保留一个,多余的被删除。函数返回值是互不相同的元素个数。
[C函数2]
int deleteARR(int*arr,int n)
{ int k,j;
k=0;j=1;
while(j<n){
if( (3) )
(4)=arr[j];
j++;
}
return (5);
}
-
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
[说明]
已知一棵二叉树用二叉链表存储,t指向根结点,p指向树中任一结点。下列算法为输出从t到P之间路径上的结点。
[C程序]
#define Maxsize 1000
typedef struct node{
TelemType data;
struct node*1child,*rchild;
}BiNode,*BiTree;
void Path(BiTree t,BiNode*P)
{ BiTree*stack[Maxsize],*stackl[Maxsize],*q;
int tag[Maxsize],top=0,topl;
q=t;
/*通过先序遍历发现P*/
do(while(q!=NULL && q!=p)
/*扫描左孩子,且相应的结点不为P*/
{ (1);
stack[top]=q;
tag[top]=0;
(2);
}
if(top>0)
{ if(stack[top]==P) break; /*找到P,栈底到栈顶为t到P*/
if(tag[top]==1)top--;
else{q=stack[top];
q=q->rchild;
tag[top]=1;
}
}
} (3);
top--; topl=0;
while(top>0){
q=stack[top]; /*反向打印准备*/
topl++;
(4);
top--;
}
while((5)){ /*打印栈的内容*/
q=stackl[topl];
printf(q->data);
topl--;
}
}
-
阅读以下说明和流程图回答问题,将解答填入对应栏。
[说明]
“直接插入法”排序是一种N2运算量的例程,只能用在N较小的时候,其方法是:挑出第二个数将它按与第一个数大小的顺序插入,然后挑出第三个数将它按大小顺序插入到前两个数中,如此下去,一直到最后一个也插入。
注:流程中循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述。
[问题]
将流程图的(1)~(5)处补充完整。