《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",&