一起答
主观

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

 [说明]

 该程序从正文文件test.txt中读入一批整数,并将它们按照递增的顺序存放在一个链表中。其中,函数struct Link*insertChain(struct Link*head,structLink*k)用来寻找结点k在链表head中的插入位置,并插入该结点。

 [C程序]

 #include <stdio.h>

 #include <stdlib.h>

 struct Link

 { int number;

   struct Link *next;

 }

 struct Link *insertChain(struct Link *head,struct Link *k);

 VOid main()

 { struct Link *ptr, *head;

   FILE *fd;

   int hum;

   if((fd=fopen("test.txt","r"))==NULL)

   {print("Cannot open this file!\n");

   return;

 }

 head=NULL;

 while(fscanf(fd,"%d",hum)==1)

 { ptr=(1);

   if(!ptr) return;

   ptr->number=hum;

   ptr->next=NULL;

   head=insertChain(head,ptr);

 }

  (2);

 return;

 }

 struct Link *insertChain(struct Link *head,struct Link *k)

 { struct Link *ptr,*u;

   ptr=head;

   while(ptr && k && k->number>ptr->number)

 { u=ptr; (3) }

   if(ptr == head) head=k;

   else (4);

   (5);

   return head;

 }

试题出自试卷《软件水平考试(初级)程序员下午(应用技术)模拟试卷43》
参考答案
查看试卷详情
相关试题
  1. 阅读以下说明和Java程序,将应填入(n)处的字句写在对应栏内。

     [说明]

     下面程序是为汽车市场编制的一个程序的一部分。其中automobile是基类。

     [Java程序]

     class MainJava{

     public static void main(String agr[]){

     car sedan=new car();

     sedan.initialize(24,20.0,4);

     System.out.println ("The sedan can travel"

     + (1) +"miles.\n");

     System.out.println ("The sedan has"

     + (2) +"doors.\n");

     }

    }

    class automobile{

     protected int miles_per_gallon;  //汽车每加仑行驶公里数

      (3) double fuel_capacity;  //油箱容积

     public void initialize(int in_mpg,int in_fuel){

     miles_per_galion=in_mpg;

     fuel_capacity=in_fuel;

     }

     public int get_mpg(){//提供一辆特定汽车每加仑公里数

     return miles_per_gallon;

     }

     public double get_fuel(){//提供油箱容积

     return fuel_capacity;

     }

     public double travel_distance(){//计算满油箱情况下的可行驶总公里数

     return (4);

     }

    }

    class car (5) {

     private int Total_doors;

     public void initialize(int in_mpg,double in_fuel,int doors){

     Total_doors=doors;

     miles_per_gallon=in_mpg;

     fuel_capacity=in_fuel;

     }

     public int doors(){

     return Total_doors;

     }

    }

  2. 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

     [说明]

     这是一个模拟渡口管理的算法。某汽车轮渡口,过江渡船每次能载10辆车过江。过江车辆分为客车类和火车类,上船有如下规定:同类车先到先上船,客车先于货车上渡船,且每上4辆客车,才允许上一辆货车;若等待客车不足4辆,则以货车代替,若无货车等待则允许客车都上船。

     程序中用到的函数有enqueue(queue*sq,elemtype*x)在队列sq中入队一个元素x;outqueue(queue*sq,elemtype*x)在队列sq中出队一个元素,并将其值赋给x;empty(queue*sq)判断队列sq是否为空队,若为空,返回1;否则返回0。

     [C程序]

     #include<stdio.h>

     void pass(){

      queue bus,truct; /*bus表示客车队列,truck表示货车队列*/

       char ch;

       int n,tag; /* ]n为车号,tag为标志,tag=0表示客车,tag=1表示货车*/

       intcount=0,countbus=0,counttruck=0; /*分别表示上渡船汽车数、客车数、货车数*/

       while(1){

        printf("输入命令: \n");

        Scanf("%c",&ch);

        switch(ch){

         case'e': 

         case'E': printf("车号: \n");

             Scanf("%d",&n);

             printf("客车\货车(0\1): \n");

             scanf("%d",&tag);

             if( (1) )

              enqueue(&bus,n);

             else

              enqueue(&truck,n);

             break;

         case'i': 

         case'I': while(count<10){

             if( (2) && empty(&bus)==0){  /*客车出队*/

              outqueue(&bus,&n);

              printf("上船的车号为: \n");

              count++;

              (3) ;

             }

             eise if( (4) ){  /*货车出队*/

              countbus=0;

              outqueue(&truck,&n);

              printf("上船的车号为: \n");

              count++;

              counttruck++;

             }

             else if(empty(&bus)==0){

              (5);

              outqueue(&truck,&n);

              printf("没有10辆车排队轮渡\n");

              count++;

              countbus++;

             }

             else{

              printf("没有10辆车排队轮渡\n");

              retUrn;

             }

             break;

            }

         case'q':

         case'Q':break;

         }

         if(ch=='q' || ch=='Q')

          break;

      }

     }

  3. 阅读以下说明和C++代码,将解答写入对应栏内。

     [说明]

     类Stock的定义中有三处错误,分别在代码的第04、06、10行。请补齐下述代码中的空缺(1)~(3),修改错误并给出修改后该行的完整代码,最后完善程序运行后的输出结果。

     [C++程序]

    01 #include<iostream.h>

    02 using namespace std;

    03 class Stock{

    04 protected:

    05 Stock(){shares=0; share_val=0.0;Output();}

    06 Stock(int n=0,double pr=3.5): (1) {//初始化shares值为n

    07  share_val=pr;

    08 Output();

    09 };

    10 void~Stock(){};

    11  void Output()(cout<<shares<<';'<<share val<<endl;}

    12 public:

    13 //成员函数

    14 private:

    15 //成员变量

    16 int shares;

    17 double share_val;

    18 };

    19

    20 void main(){ //构造三个Stock对象a,b,C

    21 Stock a(1);

    22 Stock b;

    23 Stock C;Stock();

    24 //其他代码省略,且代码无输出

    25 }

     程序运行后的输出结果为:

     1:3.5

      (2) 

      (3)

  4. 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

     [说明]

     该程序从正文文件test.txt中读入一批整数,并将它们按照递增的顺序存放在一个链表中。其中,函数struct Link*insertChain(struct Link*head,structLink*k)用来寻找结点k在链表head中的插入位置,并插入该结点。

     [C程序]

     #include <stdio.h>

     #include <stdlib.h>

     struct Link

     { int number;

       struct Link *next;

     }

     struct Link *insertChain(struct Link *head,struct Link *k);

     VOid main()

     { struct Link *ptr, *head;

       FILE *fd;

       int hum;

       if((fd=fopen("test.txt","r"))==NULL)

       {print("Cannot open this file!\n");

       return;

     }

     head=NULL;

     while(fscanf(fd,"%d",hum)==1)

     { ptr=(1);

       if(!ptr) return;

       ptr->number=hum;

       ptr->next=NULL;

       head=insertChain(head,ptr);

     }

      (2);

     return;

     }

     struct Link *insertChain(struct Link *head,struct Link *k)

     { struct Link *ptr,*u;

       ptr=head;

       while(ptr && k && k->number>ptr->number)

     { u=ptr; (3) }

       if(ptr == head) head=k;

       else (4);

       (5);

       return head;

     }

  5. 读以下说明和流程图,回答问题将解答填入对应栏。

     [说明]

     下面的流程图,用来完成求字符串t在s中最右边出现的位置。其思路是:做一个循环,以s的每一位作为字符串的开头和t比较,如果两字符串的首字母是相同的,则继续比下去,如果一直到t的最后一个字符也相同,则说明在s中找到了一个字符串t;如果还没比较到t的最后一个字符,就已经出现字符串不等的情况,则放弃此次比较,开始新一轮的比较。当在s中找到一个字符串t时,不应停止寻找(因为要求的是求t在s中最右边出现位置),应先记录这个位置pos,然后开始新一轮的寻找,若还存在相同的字符串,则更新位置的记录,直到循环结束,输出最近一次保存的位置。如果s为空或不包含t,则返回-1。

     注:返回值用pos表示。

      

     [问题]

     将流程图的(1)~(5)处补充完整。

  6. 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

     [说明1]

     函数int factors(int n)的功能是判断整数n(n>=2)是否为完全数。如果n是完全数,则函数返回0,否则返回-1。

     所谓“完全数”是指整数n的所有因子(不包括n)之和等于n自身。例如:28的因子为1,2,4,7,14,而28=1+2+4+7+14,因此28是“完全数”。

     [C函数1]

     int factors(int n)

     { int i,S;

        for(i=l,s=0;i<=n/2;i++)

        if(n%i==O) (1);

        if( (2) )return 0;

        rerurn -1;

     }

     [说明2]

     函数int maxint(int a[],int k)的功能是用递归方法求指定数组中前k个元素的最大值,并作为函数值返回。

     [C函数2]

     int maxint(int a[],int k)

     { int t;

       if( (3) )return (4);

       t=maxint(a+1, (5) )j

       return(a[0]>t) ? a[0] :t;

     }