• 宁夏大学考研计算机专业课编程题


    2018年

    26题
    #include <stdio.h>
    //本题就是找规律,后一个分数的分子是前一个分数的分子分母之和,后一个分数的分母是前一个分数的分子
    int main()
    {
        float sum=0.0,term=0.0,den=1,n=2,t;
        int i;
        for(i=0;i<20;i++)
        {
            term = n/den; //term代表单个分数
            sum += term;
            t = n; //t用来记录前一个分数分子的值,最后赋给下一个分数的分子
            n = den+n; //后一个分数的分子为前一个分数分子与分母之和
            den = t; //更新下一个分母数
        }
        printf("%f ",sum);
        return 0;
    }
    27题
    //选择排序的思想
    #include <stdio.h>
    int main()
    {
        int a[10]={22,15,26,89,77,12,33,0,55,6},i,j,pos1,pos2,min,max,t;
        min = 0;//假定最小元素下标为0
        for(i=1;i<10;i++)
        {
            if(a[i]<a[min])
            {
                min = i; //在后面元素中找到最小元素下标,更换下标
            }
        }
        if(min!=0) //如果最小元素的下标位置不是0,则交换位置,即把最小元素a[0]交换位置
        {
            t = a[min];
            a[min] = a[0];
            a[0] = t;
        }
        max = 9; //方法同上
        for(j=0;j<9;j++)
        {
            if(a[max]<a[j])
                max = j;
        }
        if(max!=9)
        {
            t = a[9];
            a[9] = a[max];
            a[max] = t;
        }
        for(i=0;i<10;i++)
            printf("%d ",a[i]);
        return 0;
    
    }

    2017年

    17题
    #include <stdio.h>
    
    int main()
    {
        int a[3][3]={1,2,3,1,1,1,2,2,2},i,j,sum=0;
        for(i=0;i<3;i++)
        {
            for(j=0;j<3;j++)
            {
                if(i==j)
                    sum += a[i][i];
            }
        }
        printf("%d ",sum);
        return 0;
    }
    18题
    //统计a,b两个数组中对应位置元素相等的个数和不相等的个数
    #include<stdio.h>
    int main()
    {
        int a[30]={1,3,5,9},b[30]={2,3,8,6},i=0,j=0,s1=0,s2=0;
        while(i<30&&j<30)
        {
            if(a[i]==b[j])
                s1++;
            else
                s2++;
            i++;
            j++;
        }
        printf("s1= %d ,s2= %d",s1,s2);
        return 0;
    }
    19题
    //将两个递增的有序表合并成一个表存入c中
    //算法思想:首先,按顺序不断取下两个顺序表表头较小的结点存入新的顺序表中,然后哪个表有剩余,将剩下的部分嫁到新的顺序表后面
    #include <stdio.h>
    #define MaxSize 50
    typedef struct
    {
        Elemtype data[MaxSize];
        int length;
    }SqList;
    bool Merge(SqList &La,SqList &Lb,SqList &Lc)
    {
        if(La.length+Lb.length>c.MaxSize)
            return false;
        int i=0,j=0,k=0;
        while(i<La.length&&j<Lb.length) //循环,两两比较,小者存入Lc表中
        {
            if(La.data[i]<Lb.data[j])
                Lc.data[k++] = La.data[i++];
            else
                Lc.data[k++] = Lb.data[j++];
        }
        //下面的while语句只会执行一个
        while(i<La.length)
            Lc.data[k++] = La.data[i++];
        while(j<Lb.length)
            Lc.data[k++] = Lb.data[j++];
        Lc.length = k+1;
        return true;
    }

     2016年

    26题
    //计算π的近似值
    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
    
       float term = 1.0,pi =1.0,den = 2.0;
       while(fabs(term)>=1e-3)
       {
           term =1.0/(den*den);
           pi += term;
           den++;
       }
       pi = sqrt(6*pi);
       printf("%4.3f
    ",pi);
       return 0;
    }
    27题
    //数组大小为10,编程实现:在主函数从键盘输入数组值,在子函数中求出数组最大元素及该元素的下标值
    #include <stdio.h>
    #include <math.h>
    
    void Max(int A[],int n)
    {
        int i,max,pos=0;
        max = A[0];
        for(i=1;i<n;i++)
        {
            if(max<A[i])
            {
                max = A[i];
                pos = i;
            }
        }
        printf("%d %d",max,pos);
    }
    int main()
    {
        int a[10],i;
        for(i=0;i<10;i++)
            scanf("%d",&a[i]);
        Max(a,10);
       return 0;
    }
    28题
    /*设有两个顺序表A和B,编写一个算法将属于A,但不属于B的数据元素放到另一顺序表c中
    算法思想:用A中的每一个元素去给B中的元素比较,如果没有则放入C中
    #include <stdio.h>
    #define MaxSize 100  //假设一个顺序表最大存储100个数据
    typedef struct
    {
        int data[MaxSize]; //用于存储数据
        int length;   //用于表示顺序表中实际存储数据的个数
    }SeqList;
    
    void M(SeqList &A,SeqList &B,SeqList &C)
    {
        int i,j,k=0;
        for(i=0;i<A.length;i++)
        {
            for(j=0;j<B.length;j+)
            {
                if(A.data[i]==B.data[j]) //如果相等则跳过
                    break; //如果在A中的数B中也有,则A中的数没必要继续比较下去,直接跳出当前循环,用A中的下一个元素进行比较
            }
            //上一个循环能够结束,有两个原因,一个原因是A的某个数和B中某个数相等,执行了break语句
            //另外一个原因是,用A的某个数与所有的B的数据都比较过,没发现相等的数据,那么此时j==B.lenth
            if(j==B.length)
                C.data[k++]=A.data[i];
        }
        C.length = k+1;
    }*/
    #include <stdio.h>
    int main()
    {
        int i,j,k=0;
        int a[5]={2,6,3,9,11},b[5]={8,5,3,4,2},c[10];
        for(i=0;i<5;i++)
        {
            for(j=0;j<5;j++)
            {
                if(a[i]==b[j])
                break;
            }
            if(j==5)
            {
                c[k++]=a[i];
            }
        }
        for(i=0;i<k;i++)
            printf("%d ",c[i]);
        return 0;
    }

    2015年

    36题
    //已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
    /*算法思想: 如果插入的数n比a数组的最后一个数大,则将插入的数放在a数组的末尾
    如果插入的数n不比最后一个数大,则将它依次和a[0]-a[n-1]比较,直到出现a[i]>n为止,这时表示a[0]-a[i-1]的值都比n的大。
    n则插入到a[i]的位置上
    */
    #include <stdio.h>
    int main()
    {
        int a[100],i,j,n;
        for(i=0;i<9;i++)
            scanf("%d",&a[i]);
        scanf("%d",&n);
        if(n>a[8]) //如果输入的n比最后一个元素大,则放在最后面
            a[9] = n;
        else  //输入的n小于最后一个元素
        {
            for(i=0;i<9;i++) //从前往后找n的插入位置
            {
                if(a[i]>n) //当出现第一个大于n的元素,则该元素所在的位置就是n要插入的位置
                {
                    for(j=9;j>i;j--) //元素从后开始往后移一个位置
                        a[j]=a[j-1];
                   break; //一定要加break.当移好位置后,直接让n放在a[i]的位置上,所以必须要加break跳出for循环。如果不加break会出错
                }
    
            }
            a[i] = n;// n插入到适当的位置
        }
        for(i=0;i<10;i++)
            printf("%d ",a[i]);
        return 0;
    }
    37题
    //采用顺序存储结构存储。
    //思想:用i变量所以的结点,当i大于等于MaxSize时,返回0。当t[i]是空结点的时候返回0;
    //当t[i]为非空结点时,若它为叶子节点,num增1.否则递归调用num1求出左子树叶子节点个数,
    //再调用num2求出右子树的叶子节点个数,最后返回num
    #define InitSize 50
    typedef struct BiTNode{
        ElemType *data;
        int MaxSize,length;
    }*SqBTree;
    
    int LeafNums(BiTree bt,int i)
    {
      int num1,num2,num=0;
      if(i<MaxSize)
      {
          if(t[i]!='#') //‘#’表示结束
          {
              if(t[2*i]=='#'&&t[2*i+1]=='#')
                num++;
              else
              {
                  num1 = LeafNums(t,2*i);
                  num2 = LeafNums(t,2*i+1);
                  num += num1+num2;
              }
              return num;
          }
          else
            return 0;
      }
      else return 0;
    }
  • 相关阅读:
    对象的强、软、弱和虚引用
    spark运行模式之一:Spark的local模式安装部署
    Spark Tungsten in-heap / off-heap 内存管理机制--待整理
    sparkContext之一:sparkContext的初始化分析
    mysql分区表之四:分区表性能
    服务的升级和降级
    怎样编写高质量的 Java 代码
    Java之代理(jdk静态代理,jdk动态代理,cglib动态代理,aop,aspectj)
    Spark Streaming之六:Transformations 普通的转换操作
    Spark Streaming之五:Window窗体相关操作
  • 原文地址:https://www.cnblogs.com/spore/p/11760676.html
Copyright © 2020-2023  润新知