欢迎访问Freekaoyan专业课试卷
吉林大学2001年考研专业课试卷c语言程序设计答案
欢迎访问Freekaoyan专业课试卷

2005-12-03 20:44:25     来自免费考研网每个热心网友无偿提供   
欢迎访问Freekaoyan专业课试卷
  • google显示中...
    欢迎访问Freekaoyan专业课试卷

    第一题
    (1).返回数组a前n+1个元素中最大的元素。
    (2).f(109)=99,
      f(97)=91.
    (3). g(1,10)=4.
    /*====================================================================================*/
    /*函数名称:2001_2.c                                  */
    /*程序目的:将Ackrman函数改写为非递归函数                       */
    /*Writen by Apechn ,Soft Lab of JLU                          */
    /*====================================================================================*/
    //[解题思想]:用一个堆栈来实现递归过程。
    long ack(int m,int n)
    {
     int a[2000],top=-1; //a[2000]用来模拟堆栈,top为栈顶指针


     top++; //把m和n压入堆栈
     a[top]=m;
     top++;
     a[top]=n;


     while(top!=0) //直到堆栈中只剩下一个元素为止
     {
      n=a[top];
      top--;
      m=a[top];
      top--;


      if(m==0)
      {
       top++;
       a[top]=n+1;
       continue;
      }


      if(n==0)
      {
       top++;
       a[top]=m-1;
       top++;
       a[top]=1;
       continue;
      }


      top++;
      a[top]=m-1;
      top++;
      a[top]=m;
      top++;
      a[top]=n-1;
     }


     return a[top]; //返回堆栈中最后一个数
    }
    /*====================================================================================*/
    /*函数名称:2001_3.c                                  */
    /*程序目的:求给定字符表的对偶表                            */
    /*Writen by Apechn ,Soft Lab of JLU                          */
    /*====================================================================================*/
    [解题思想]:把 L1和 L2两个表分别扫描一遍,把扫描得到的数对放到对偶表中。最后再把对偶表中的相同元素删除即可。
    struct node //对偶表的结点结构
    {
    char x;
    char y;
    node* next;
    }
    node* head; //对偶表的头指针
    void del() //删除函数,删除相同元素
    {
    node *p=head,*q,*r;
    whiel(p!=NULL)
    {
    q=p->next;
    r=p;
    while(q!=NULL)
    {
    if(p->x==q->x&&p->y==q->y)
    {
    r->next=q->next;
    delete q;
    q=r->next;
    break;
    }
    else
    {
    r=q;
    q=q->next;
    }
    }
    p=p->next;
    }
    }
    void fun(char L1[],char L2[]) //题目所求的函数
    {
    int i,j;
    node* p;
    for(i=0;i<m;i++) //把两个表分别扫描一次
    for(j=0;j<n;j++)
    {
    p=new node; //从表头插入结点
    p->x=L1[i];
    p->y=L2[j];
    p->next=head;
    head=p;
    p=new node; //从表头插入结点
    p->x=L2[j];
    p->y=L1[i];
    p->next=head;
    head=p;
    }
    del(); //删除相同的元素
    }

    /*====================================================================================*/
    /*函数名称:2001_4.c                                  */
    /*程序目的:写出给定数组的螺旋数组                           */
    /*Writen by Apechn ,Soft Lab of JLU                          */
    /*====================================================================================*/
    //[解题思想]:设一个方向变量orient,取值0、1、2、3分别代表往右、往下、往左、往上。当遇到边界或当前//位置已经有东西时,调整方向。
    //否则一直顺着当前方向走下去。走到一个位置,把a数组的相应位置的字符写到b上。
    const int n=4;
    void fun(char a[][n],char b[][n])
    {
     int i=0,j=0,p=0,orient=0;

     while(p<n*n)
     {
      if(orient==0) //如果当前方向为向右
      {
       if(j==n||b[i][j]!=32) //如果已经到达边界或当前位置已经有字符
       {
        i++; //调整方向
        j--;
        orient=(orient+1)%4;
        continue;
       }
       else
       {
        b[i][j]=a[p/n][p%n]; //否则把a的相同字符填到b中
        p++; //a和b都指向下一个位置
        j++;
       }
      }

      if(orient==1) //如果当前方向为向下
      {
       if(i==n||b[i][j]!=32)
       {
        i--;
        j--;
        orient=(orient+1)%4;
        continue;
       }
       else
       {
        b[i][j]=a[p/n][p%n];
        p++;
        i++;
       }
      }

      if(orient==2) //如果当前方向为向左
      {
       if(j==-1||b[i][j]!=32)
       {
        i--;
        j++;
        orient=(orient+1)%4;
        continue;
       }
       else
       {
        b[i][j]=a[p/n][p%n];
        p++;
        i--;
       }
      }

      if(orient==3) //如果当前方向为向上
      {
       if(i==-1||b[i][j]!=32)
       {
        i++;
        j++;
        orient=(orient+1)%4;
        continue;
       }
       else
       {
        b[i][j]=a[p/n][p%n];
        p++;
        i--;
       }
      }
    }

    欢迎访问Freekaoyan专业课试卷
欢迎访问Freekaoyan专业课试卷
欢迎访问Freekaoyan专业课试卷
欢迎访问Freekaoyan专业课试卷
欢迎访问Freekaoyan专业课试卷

发表评论/ 全部评论

  • 验证码:
  • 验证码:
  • 匿名发表:

推荐文章