1 马拦过河卒 (20 分)
#include<stdio.h>
int main()
{
int a[9]={0,-1,-1,1,1,2,2,-2,-2};
int b[9]={0,2,-2,2,-2,1,-1,1,-1};//表示马可能存在的九个点位;
int map[16][16]={0};//相当于做一个“棋盘”;
long long can[16][16]={0};//表示可以通行的点位;
int n,m,x,y,i,j;
scanf("%d %d %d %d",&n,&m,&x,&y);
for(i=0;i<16;i++)
for(j=0;j<16;j++)
map[i][j]=1;//首先让整个“棋盘”均可通行,定义点位值为‘1’是可通行的点;
for(i=0;i<9;i++)
{
if(a[i]+x<=15&&a[i]+x>=0&&b[i]+y>=0&&b[i]+y<=15)//马所在点位不能出棋盘这个边界;
map[a[i]+x][b[i]+y]=0;//让马所在点位的点变成不能通行的点,也就是点位值为‘0’;
}
for(i=0;i<16;i++)
{
if(map[i][0]==1)//行操作,如果“棋盘”上的点位值为1,表示其可通过;
{
can[i][0]=1;//此时,定义可通过的点位为1;
}
else break;//如果不是,也就是说碰到马所在点位,即停止循环;
}
for(i=0;i<16;i++)
{
if(map[0][i]==1)
{
can[0][i]=1;
}//同样的,在列上进行操作;
else break;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(map[i][j]==1)//如果棋盘上点位值为1,代表其可通过的话;
can[i][j]=can[i-1][j]+can[i][j-1];
}
}
printf("%lld",can[n][m]);//输出可通过路径的条数;
return 0;
}
2 养兔子(20 分)
#include<stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
long long a[90]={0,1,2};//数值超过int范围,所以用long long int。同时,运算可知第0天0只,第一天一只,第二天两只,第三天就开始有规律了,为昨天的加前天的;
for(i=3;i<=n;i++)
{
a[i]=a[i-1]+a[i-2];
}
printf("%lld",a[n]);
return 0;
}
3 母牛的故事 (20 分)
#include<stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
int a[55]={0,1,2,3,4};//由题易知,第0年0头,第一年1头,第二年2头...直到第五年开始,第一年买的小母牛也开始生产小母牛,所以从第五年开始有了规律,是上一年的加四年前的;
for(i=5;i<=n;i++)
{
a[i]=a[i-1]+a[i-3];
}
printf("%d",a[n]);
return 0;
}
4 黄金时代 (20 分)
#include<stdio.h>
#define k 0.6180339887//k是题中所给的数值;
int main()
{
int n,i;
scanf("%d",&n);
int a[20]={0,5};//第一个数为5;
for(i=1;i<=n;i++)
{
a[i+1]=a[i]/k+0.1;//这边需要注意,需要加0.1之后再取整才是所要的数值(比如说输入为3的时候,若不加0.1则输出数值为12,实际值应为13)通过计算可知,当输入数值为偶数时,可以得到正确的整数,而输入数值为奇数时,需要加0.1才可以得到正确的整数,所以我们就都加0.1即可;
}
printf("%d",a[n]);
return 0;
}
5 骨牌铺方格(20 分)
#include<stdio.h>
int main()
{
int n,i;
long long a[60]={0,1,2,3};
scanf("%d",&n);
for(i=3;i<=n;i++)
{
a[i]=a[i-1]+a[i-2];
}
printf("%lld",a[n]);
return 0;
}//从这个题往下都是一些很简单的数学题
6 爬楼梯 (20 分)
#include<stdio.h>
int main()
{
int n,i;
long long a[50]={0,1,2};
scanf("%d",&n);
for(i=3;i<=n;i++)
{
a[i]=a[i-1]+a[i-2];
}
printf("%lld",a[n]);
return 0;
}
7 三国佚事——巴蜀之危 (20 分)
#include<stdio.h>
int main()
{
int n,i;
long long a[20]={0,0,1,2};
scanf("%d",&n);
for(i=4;i<=n;i++)
{
a[i]=(i-1)*(a[i-2]+a[i-1]);
}
printf("%lld",a[n]);
return 0;
}
8 王小二切饼 (20 分)
#include<stdio.h>
int main()
{
int n,i,a[100]={0,2};
scanf("%d",&n);
for(i=2;i<=n;i++)
{
a[i]=a[i-1]+i;//自己切一下找规律即可,每次切都要尽可能地于已有切线相交
}
printf("%d",a[n]);
return 0;
}
9 蟠桃记 (20 分)
#include<stdio.h>
int main()
{
int n,i,a[30]={1,4};
scanf("%d",&n);
for(i=2;i<n;i++)
{
a[i]=2*(a[i-1]+1);
}
printf("%d",a[n-1]);
return 0;
}
10 C语言实验——拍皮球 (20 分)
#include<stdio.h>
int main()
{
int t,n,i;
double h,s;
scanf("%lf %d",&h,&n);
for(i=1;i<=n;i++)
{
if(i==1)
s = h;
else
{
s=s+(h*2.0);
}
h=h/2.0;
}
printf("%.2lf %.2lf",s,h);
return 0;
}