初级程序员下午试题下半年及答案解析.docx

上传人:b****2 文档编号:506755 上传时间:2022-10-10 格式:DOCX 页数:24 大小:27.73KB
下载 相关 举报
初级程序员下午试题下半年及答案解析.docx_第1页
第1页 / 共24页
初级程序员下午试题下半年及答案解析.docx_第2页
第2页 / 共24页
初级程序员下午试题下半年及答案解析.docx_第3页
第3页 / 共24页
初级程序员下午试题下半年及答案解析.docx_第4页
第4页 / 共24页
初级程序员下午试题下半年及答案解析.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

初级程序员下午试题下半年及答案解析.docx

《初级程序员下午试题下半年及答案解析.docx》由会员分享,可在线阅读,更多相关《初级程序员下午试题下半年及答案解析.docx(24页珍藏版)》请在冰豆网上搜索。

初级程序员下午试题下半年及答案解析.docx

初级程序员下午试题下半年及答案解析

初级程序员下午试题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);

  

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1