初级程序员下午试题下半年及答案解析.docx
- 文档编号:506755
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:24
- 大小:27.73KB
初级程序员下午试题下半年及答案解析.docx
《初级程序员下午试题下半年及答案解析.docx》由会员分享,可在线阅读,更多相关《初级程序员下午试题下半年及答案解析.docx(24页珍藏版)》请在冰豆网上搜索。
初级程序员下午试题下半年及答案解析
初级程序员下午试题2015下半年及答案解析
(1/6)填空题
第1题
阅读以下说明和流程图,填补流程图中的空缺,将解答填入答题纸的对应栏内。
【说明】
下面流程图的功能是:
在给定的一个整数序列中查找最长的连续递增子序列。
设序列存放在数组A[1:
n](n≥2)中,要求寻找最长递增子序列A[K:
K+L一1](即A[K]<A[K+1]<…<A[K+L一1])。
流程图中,用Kj和Lj分别表示动态子序列的起始下标和长度,最后输出最长递增子序列的起始下标K和长度L。
例如,对于序列A={1,2,4,4,5,6,8,9,4,5,8},将输出K=4,L=5。
【流程图】
图片
注:
循环开始框内应给出循环控制变量的初值和终值,默认递增值为1,格式为:
循环控制变量=初值,终值_____
下一题
(2/6)填空题
第2题
阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
下面的代码运行时,从键盘输入一个四位数(各位数字互不相同,可以有0),取出组成该四位数的每一位数,重组成由这四个数字构成的最大四位数max4和最小四位数min4(有0时为三位数),计算max4与min4的差值,得到一个新的四位数。
若该数不等于6174,则重复以上过程,直到得到6174为止。
例如,输入1234,则首先由4321-1234,得到3087;然后由8730-378,得到8352;最后由8532-2358,得到6174。
【C代码】
#include
intdifference(inta[])
{ intt,i,j,max4,min4;
for(i=0;i<3;i++){/*用简单选择排序法将a[0]~a[3]按照从大到小的顺序排列*/
t=i;
for(j=i+1;___________
(1);j++)
if(a[j]>a[t])__________
(2);
if(t!
=i){
inttemp=a[t]; a[t]=a[i]; a[i]=temp;
}
}
max4=___________(3);
min4=___________(4);
returnmax4-min4;
}
intmain()
{ intn,a[4];
printf("inputapositivefour-digitnumber:
");
Scanf("%d",&n);
while(n!
=6174){
a[0]=__________(5); /*取n的千位数字*/
a[1]=n/100%10; /*取n的百位数字*/
a[2]=n/10%10; /*取n的十位数字*/
a[3]=__________(6); /*取n的个位数字*/
n=difference(a);
}
return0;
} ______
上一题下一题
(3/6)填空题
第3题
阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
对一个整数序列进行快速排序的方法是:
在待排序的整数序列中取第一个数作为基准值,然后根据基准值进行划分,从而将待排序列划分为不大于基准值者(称为左子序列)和大于基准值者(称为右子序列),然后再对左子序列和右子序列分别进行快速排序,最终得到非递减的有序序列。
函数quicksort(inta[],intn)实现了快速排序,其中,n个整数构成的待排序列保存在数组元素a[0]~a[n一1]中。
【C代码】
#include
Voidquicksort(inta[], intn)
{
int i,j;
intpivot=a[0]; //设置基准值
i=0;j=n一1;
while (i<j){
while(i<j&&___________
(1))j--; //大于基准值者保持在原位置
if (i<j) { a[i]=a[j];i++;)
while(i<j&&__________
(2))i++; //不大于基准值者保持在原位置
if (i<j) {a[j]=a[i];j--;}
}
a[i]=pivot; //基准元素归位
if(i>1)
___________(3); //递归地对左子序列进行快速排序
if(n—i一1>1)
___________(4); //递归地对右子序列进行快速排序
}
intmain()
{
inti,arr[]={23,56,9,75,18,42,11,67);
quicksort(___________(5)); //调用quicksort对数组arr[]进行排序
for(i=0;i printf("%d\t",arr[i]);
return0;
}
上一题下一题
(4/6)填空题
第4题
阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
函数GetListElemPtr(LinkListL,inti)的功能是查找含头结点单链表的第i个元素。
若找到,则返回指向该结点的指针,否则返回空指针。
函数DelListElem(LinkListL,inti,ElemType*e)的功能是删除含头结点单链表的第i个元素结点,若成功则返回SUCCESS,并由参数e带回被删除元素的值,否则返回ERROR。
例如,某含头结点单链表L如图4-1(a)所示,删除第3个元素结点后的单链表如图4.1(b)所示。
图片
#defineSUCCESS0
#defineERROR-1
typedef int Status;
typedefintElemType;
链表的结点类型定义如下:
typedef struct Node{
ElemTypedata;
structNode*next;
}Node,*LinkLiSt;
【C代码】
LinkList GetListElemPtr(LinkListL, int i)
{ /*L是含头结点的单链表的头指针,在该单链表中查找第i个元素结点;
若找到,则返回该元素结点的指针,否则返回NULL
*/
LinkListP;
intk; /*用于元素结点计数*/
if(i<i||!
L||!
L一>next)returnNULL;
k=1;P=L一>next; /*令P指向第1个元素所在结点*/
while(p&&__________
(1)){ /*查找第i个元素所在结点*/
___________
(2); ++k;
}
returnP;
}
StatusDelLiStElem(LinkListL,inti,ElemType*e)
{ /*在含头结点的单链表L中,删除第i个元素,并由e带回其值*/
LinkListp,q;
/*令P指向第i个元素的前驱结点*/
if(i==i)
___________(3);
else
p=GetListElemPtr(L,i—1);
if(!
P||!
p一>next) returnERROR;/*不存在第i个元素*/
q=___________(4); /*令q指向待删除的结点*/
p一>next=q一>next; /*从链表中删除结点*/
__________(5); /*通过参数e带回被删除结点的数据*/
free(q);
return SUCCESS;
}
上一题下一题
(5/6)填空题
第5题
阅读以下说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
在股票交易中,股票代理根据客户发出的股票操作指示进行股票的买卖操作。
其类图如图5-1所示,相应的C++代码附后。
图片
【C++代码】
#include
#include
#include
usingnamespacestd;
classStock{
private:
stringname; intquantity;
public:
Stock(stringname,intquantity){this一>name=name;this->quantity
=quantity;)
voidbuy(){cout<<"[买进]股票名称:
"<<name<<",数量:
"<<quantity<<endl;}
voidsell() {cout<<"[卖出]股票名称:
"<<name<<",数量:
"<<quantity<<endl;}
};
ClassOrder{
public:
virtualvoidexecute()=0;
};
classBuyStock:
____________
(1){
private:
Stock*stock;
public:
BuyStock(Stock*stock){__________
(2)=stock;}
voidexecute(){ stock->buy(); }
};
//类SellStock的实现与BuyStock类似,此处略
classBroker{
private:
vectororderList;
public:
voidtakeOrder(_________(3)order){ orderList.pushback(order);}
voidplaceOrders() {
for(inti=0;i<orderList.size();i++){__________(4)->execute();}
orderList.clear();
}
};
classStockCommand{
public:
voidmain() {
Stock*aStock=newStock("股票A",10);
Stock*bStock=newStock("股票B",20);
Order*buyStockOrder=newBuyStock(aStock);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 初级 程序员 下午 试题 下半年 答案 解析