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

这篇博客详细介绍了《C++程序设计》课程设计中的16个编程题目,涵盖了动态规划、数据排序、回文串判断、水仙花数等多个主题。每个题目都包含问题描述、解题思路、源代码以及细节处理,展示了C++在算法和数据结构上的应用。博主分享了在短时间内完成大量有挑战性题目的心得体会,表达了对C++学习的热情和对未来提升的期待。
摘要由CSDN通过智能技术生成

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

一、题目1(课设1,ProblemH)

1、题目简介

有一头头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。在第n年的时候,共有多少头母牛?

2、思路形成

  首先,定义一组数组,储存着N组数据。输入n,代表第几年,0<n<4时,只有最初的一头母牛能生小牛,到第四年时,母牛在第一年生的小牛也可以生牛了。出生的小母牛每活三年就能再生新的小母牛了。2f(1)=1 f(2)=2 f(3)=3 f(4)=4 f(5)=6当第n年的时候,所有的牛应该有第n-1年的牛+第n-3年的年都能生,推出f(n)=f(n-1)+f(n-3)

3、源代码

#include<stdio.h>

int main()

{

 int N,j;

 int a[1000];                           

 scanf("%d",&N);

 int n,i; 

 for(j=0;j<N;j++)

  {                                    

  scanf("%d",&n);                   

  a[j]=n;

  } 

 for(j=0;j<N;j++)

   {

   n=a[j];

   int f1=0,f2=0,f3=0,f4=1,f;       

   if(n>0)

   {

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

      {

    if(n==1)

    f=1;

  else

  {

  f4=f3+f4;

  f3=f2;

  f2=f1;

  f1=f4; 

  f=f1+f2+f3+f4;

   } 

    } 

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

   }

   else

   printf("\n");  

   }

 return  0;

}

4、细节处理

n=0时表示输入数据的结束,不做处理;注意0<n<55。

二、题目2(课设1,ProblemI)

1、题目简介

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

2、思路形成

  首先将这些整数n存储在一个数组中,输入n后再输入这个数组,因为整数中可能存在负数,不好比较,所以将每个数平方后再进行比较。使用冒泡排序法,前面的数依次与后一个数相比,如果比后面的数小,则和后面的一个数交换位置,最后输出这个数组。

3、源代码

include <iostream>

using namespace std;

int main()

{

    int a[100],i,j,t,n;

    while(cin>>n&&n!=0)

    {

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

            cin>>a[i];

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

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

                if(a[i]*a[i]<a[i+1]*a[i+1])

                {

                    t=a[i];

                    a[i]=a[i+1];

                    a[i+1]=t;

                }

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

           cout<<a[i]<<" ";

           cout<<a[n-1]<<endl;

 

 

    }

    return 0;

}

4、细节处理

通过比较整数的平方来判断其绝对值的大小;最后不能有空格;n=0时表示输入数据的结束,不做处理。

三、题目3(课设1,ProblemG)

1、题目简介

评委给参赛选手打分,选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。

2、解题思路形成

  开始令最大值和最小值都等于a,输入数据逐个与最大值比较,如果该数比最大值大,则将其赋值给最大值,最小值原理相同,然后对这组数据求和,最后输出时和减去最大值和最小值,求平均值。

3、源代码

#include<stdio.h>

int main()

{

    int n,i,a,max,min,sum;

    while(scanf("%d",&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值