当前所在位置:珠峰网资料 >> 计算机 >> 软件水平 >> 正文
2015年计算机软件水平程序员笔试考前练习精选(17)
发布时间:2012/11/4 15:20:01 来源:城市网学院 编辑:admin

   求一个链表的所有元素的平均值
    typedef struct { int num;
    float ave;
    }Back;
    typedef struct node{ float data;
    struct node *next;
    } Node;
    Back *aveage(Node *head)
    { Back *p,*q;
    p=(Back *)malloc(sizeof(Back));
    if (head==NULL)
    { p->num=0;
    p->ave=0; }
    else
    { (1) ;
    p->num=q->num+1;
    (2) ; }
    retuen p;
    }
    main()
    { Node *h; Back *p;
    h=create(); /*建立以h为头指针的链表*/
    if (h==NULL) printf(“没有元素”);
    else { p=aveage(h);
    printf(“链表元素的均值为:o”,p->ave);
    }
    }
    答案:(1)q=aveage(head->next)
    (2)p->ave=(head->data+q->ave*q->num)/p->num

    希尔排序
    已知待排序序列data[n];希尔排序的增量序列为d[m],其中d[]序列降序排列,且d[m-1]=1。其方法是对序列进行m趟排序,在第i趟排序中,按增量d把整个序列分成d个子序列,并按直接插入排序的方法对每个子序列进行排序。
    希尔排序的程序为:
    void shellsort(int *data,int *d,int n,int m)
    { int i,j;
    for (i=0;i    for (j=0; (1) ;j++)
    shell( (2) );
    }
    void shell(int *data,int d,int num,int n)
    { int i,j,k,temp;
    for (i=1; (3) ;i++)
    { j=0;
    temp=data[j+i*d];
    while ((j     j++;
    for (k=j;k      data[k+1]=data[k];
    (5) ;
    (6) }
    }
    答案:(1)j  (2)data,d,j,n
    (3)num+i*d  (4)data[j+i*d]  (5)data[j]=temp

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved