初级程序员下午试题下半年及答案解析文档格式.docx
- 文档编号:13434207
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:24
- 大小:27.73KB
初级程序员下午试题下半年及答案解析文档格式.docx
《初级程序员下午试题下半年及答案解析文档格式.docx》由会员分享,可在线阅读,更多相关《初级程序员下午试题下半年及答案解析文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
阅读以下说明和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题
对一个整数序列进行快速排序的方法是:
在待排序的整数序列中取第一个数作为基准值,然后根据基准值进行划分,从而将待排序列划分为不大于基准值者(称为左子序列)和大于基准值者(称为右子序列),然后再对左子序列和右子序列分别进行快速排序,最终得到非递减的有序序列。
函数quicksort(inta[],intn)实现了快速排序,其中,n个整数构成的待排序列保存在数组元素a[0]~a[n一1]中。
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);
//递归地对右子序列进行快速排序
inti,arr[]={23,56,9,75,18,42,11,67);
quicksort(___________(5));
//调用quicksort对数组arr[]进行排序
i printf("
%d\t"
,arr[i]);
return0;
(4/6)填空题
第4题
函数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;
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++代码】
usingnamespacestd;
classStock{
private:
stringname;
intquantity;
public:
Stock(stringname,intquantity){this一>name=name;
this->quantity
=quantity;
voidbuy(){cout<<"
[买进]股票名称:
<<name<<"
,数量:
<<quantity<<endl;
voidsell() {cout<<"
[卖出]股票名称:
};
ClassOrder{
virtualvoidexecute()=0;
};
classBuyStock:
____________
(1){
Stock*stock;
BuyStock(Stock*stock){__________
(2)=stock;
voidexecute(){ stock->buy();
}
//类SellStock的实现与BuyStock类似,此处略
classBroker{
vectororderList;
voidtakeOrder(_________(3)order){ orderList.pushback(order);
voidplaceOrders() {
for(inti=0;
i<orderList.size();
i++){__________(4)->execute();
orderList.clear();
}
classStockCommand{
voidmain() {
Stock*aStock=newStock("
股票A"
,10);
Stock*bStock=newStock("
股票B"
,20);
Order*buyStockOrder=newBuyStock(aStock);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 初级 程序员 下午 试题 下半年 答案 解析