《c++程序设计》课程设计报告

本文是关于《c++程序设计》课程设计的报告,包括多个编程题目及其解题思路。涉及的题目包括:求素数个数、多项式前n项和、求平均值、Fibonacci数列、最少硬币表示金额、回文串判断、进制转换、数列差集、求幂次最后三位、递推数列计算、直线夹角计算、特定条件的数对判断、去除特定数字的数列和龟兔赛跑问题。通过这些题目,展示了C++在算法和数据结构上的应用。
摘要由CSDN通过智能技术生成

 《c++程序设计》课程设计报告

班级:___20184________________

 

学号:_____2018212766_______

 

报告人姓名:____高庆_______  

 

实验地点:_东校区教学楼414________________________

 

完成起止日期: _201912日至201914_

一.

Problem.D

题目描述:给定特定区间,作用在某一函数上,求值域内素数个数。

解题思路:首先自定义判断素数的函数;然后循环求出区间内的值,并依次调用函数判断是否为素数,并判断是否输出。

细节处理:本题关键在自定义判断素数的函数,判断素数总体有两种思路。一是采用筛法。二是:采用循环判断2n或者2sqrt(n)中没有n的因子。

源代码:

                      #include<stdio.h>

                     #include<math.h>

                     int Primenum(int);

                     int main()

                     {

                            int x,y;

                            int i,j,cj;

                            while(scanf("%d %d",&x,&y)!=EOF)

                            {

                                       j=0;

                                         if(x==0&&y==0)break;

                                        for(i=x;i<=y;i++)

                                       {

                                                    cj=i*i+i+41;

                                                      if(Primenum(cj))

                                                    j++;

                                     }

                                    if(j==y-x+1)

                                    printf("OK\n");

                                    else

                                    printf("Sorry\n");

                             }

                   }

     

                     int Primenum(int n)

                     {

                                    int i,kf;

                                    kf=(int)(sqrt(n)*1.0);                      //数据类型转换

                                      for(i=2;i<=kf;i++)

                                             if(n%i==0)

                                             return 0;

                                     return 1;

                     }

  

 

 

                                                                     P roblem.E

                     题目描述:给定特定规律的多项式,求多项式前n项和。

解题思路:首先定义一个求多项式前n项和的函数,并且根据题意处理好正负号交替出现的情况。然后主函数调用自定义函数就解决问题。

细节处理:观察题目给出多项式正负号出现有规律,分母为奇数时符号为正,分母为偶数时,符号为负。依此规律,在用for循环累加和时,用变量i去模(mod2,判断奇偶。

源代码:

                      #include<stdio.h>

    double Dxs(double);

    

    int main()

    {

        int m;

        int i,j;

        while(scanf("%d",&m)!=EOF)

        {

            for(i=1;i<=m;i++)

            {

                scanf("%d",&j);

                printf("%.2lf\n",Dxs(j));

            }

        }

    }

    

    double Dxs(double n)

    {

        int i;

        double s=0;

        for(i=1;i<=n;i++)

        {

            if(i%2==0)

                s=s-1/(i*1.0);

            else

                s=s+1/(i*1.0);

        }

        return s;

    }

 

 

 

三.

                                                                      Problem.G

                      题目描述:一组数据去掉最大值、最小值后,求平均值。

解题思路:首先定义一个数组,将数据全部存在数组中,然后并将数组按升序排列,最后-去掉数组的第一个与最后一个后求平均值。

细节处理:定义排序函数CMP时用到指针,要注意指针与数组的天然关系。

源代码:  

 #include<stdio.h>

   #include<stdlib.h>

    int Cmp(const void*,const void*);

    int main()

    {

        int n;

        while(scanf("%d",&n)!=EOF)

        {

            int i,j,sum=0;

            int *point;

            point=(int*)malloc((n+2)*sizeof(int));

            for(i=0;i<n;i++)

                scanf("%d",(point+i));

            qsort(point,n,sizeof(int),Cmp);        //Qsort调用比较函数

            for(j=1;j<n-1;j++)

                sum=sum+(point[j]);

            printf("%.2lf\n",((double)sum)/(n-2));

        }

    }

    

    int Cmp(const void*a,const void*b)

    {    return *(int*)a-*(int*)b;    }                               //定义比较函数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值