2018-19学年第一学期《c++程序设计》课程设计报告

Problem 1

题目概述:表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y(-39<=x<y<=50),判定该表达式的值是否都为素数。

思路分析:对数据进行预处理,自定义函数来判断是否素数。

细节处理:根据表达式的值的范围,来确定预处理的数的范围。

源代码:

 

 

#include<stdio.h>

#include<math.h>

int a[3010];

int judgeprime(int n)

{

    a[1] = 1;

    for(int i = 2;i<=3000;i++)

    {

        if(!a[i])

        {

            for(int j = 2;j<=sqrt(i);j++)

            {

                if(i%j==0)

                {

                    a[i] = 1;

                    break;                   

                }               

            }

            if(a[i])

            for(int k = 2;k*i<=3000;k++) a[k*i] = 1;

        }       

    }

    return a[n];

}

main()

{

    int x,y,flag,b;

    for(int k = 1;;k++)

    {

        flag = 0;

        scanf("%d%d",&x,&y);

        if(x||y)

        {

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

            {

                b = i*i+i+41;

                if(judgeprime(b))

                {

                    printf("Sorry\n");

                    flag = 1;

                    break;

                }

            }

            if(!flag) printf("OK\n");

        }   

        if(!x&&!y) break;

    }

}

 

 

 

Problem 2

题目概述:一个长度为n(n<=100)的从2开始的递增有序偶数数列。按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值,输出该平均值序列。

思路分析:对数列中完整的m个数与最后不足m个数分别处理。

细节处理:因为从2开始的递增偶数列,所以完整的m个数的平均值依次差2*m

源代码:

 

#include<stdio.h>

int a[110];

main()

{

    for(int i = 2;i<=100;i++) a[i] = 2*i;

    int n,m,p,q,s,s0;

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

    {

        p = n/m,q = n%m;

        s = 1+m;

        s0 = 0;

        printf("%d",s);

        if(p>=2)       

        {      

            for(int i = 2;i<=p;i++)

            {

                s+=2*m;

                printf(" %d",s);

               

            }           

        }   

        if(q)

        {

            for(int i = p*m+1;i<=n;i++)

            {

                s0+=a[i];

            }

            printf(" %d",s0/q);

        }

        printf("\n");

    }

   

}

 

 

 

Problem 3

题目概述:有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。输出一个整数表示在第n年的时候,共有多少头母牛。

思路分析:母牛成年后的当年就会产小牛。

细节处理:设置变量表示有多少一年母牛,二年母牛,新生小牛成年母牛等

 

源代码:

#include<stdio.h>

main()

{

    int n,a4,a3,a2,a1,s,a;

    for(int k = 1;;k++)

    {

        scanf("%d",&n);

        if(n)

        {

            a4 = 1;a3 = 0;a2 = 0;a1 = 0;

            for(int i = 2;i<=n;i++)

            {

                a4+=a3;    //成年母牛

                a3 = a2;

                a2 = a1;

                a1 = a4;    //一头成年母牛产一头小牛          

            }

            s = a1+a2+a3+a4;

            printf("%d\n",s);

        }

        else break;

    }

}

 

Problem 4

题目概述:输入n(n<=100)个整数,按照绝对值从大到小排序后输出。

思路分析:应用选择排序法。

细节处理:将输入的数存到一个数组a中,设置另一个数组b存对应的绝对值,对数组b中元素进行选择排序的同时,对数组a中对应的元素进行相对应的操作。

源代码:

 

#include<stdio.h>

#includ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值