哪里错了?疑惑ing

来源:百度知道 编辑:UC知道 时间:2024/07/02 10:21:02
题目:编写一个函数,求解问题为:若一头小母牛,从出生起第四个年头开始每年生一头母牛,第N年有多少头母牛?
正确答案:
unsigned cow(unsigned n)
{int i,sum=0,a[5];
for(i=1;i<=n;i++)
{if(i==1)
{a[1]=1;a[2]=a[3]=a[4]=0;}
else if(i==2)
{a[1]=0;a[2]=1;a[3]=a[4]=0;}
else if(i==3)
{a[1]=a[2]=0;a[3]=1;a[4]=0;}
else
{a[4]=a[3]+a[4];
a[3]=a[2];
a[2]=a[1];
a[1]=a[4];
}
}
for(i=1;i<=4;i++)
sum=sum+a[i];
printf("%u",sum);
} 解释:1岁母牛数为a[1],2岁母牛数为a[2],3岁母牛数为a[3],4岁和4岁以上母牛数为a[4].

我的答案是:
int cow(int n)
{ int i,a1,a2,a3,a4,n,t,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{if(n==1)
{a1=1,a2=a3=a4=0;}
if(n==2)
{a1=a3=a4=0;a2=1;}
if(n==3)
{a1=a2=a4=0;a3=1;}
else
{a4=a3+a4;a3=a2;a2=a1;a1=a4;}
}
sum=a1+a2+a3+a4;
printf("%d&quo

你所发的程序中,问题出在for循环中,在if语句中,错误地将i写成了n,改过来即可:

//---------------------------------------------------------------------------

#include <stdio.h>
#include <conio.h>
void main()
{ int i,a1,a2,a3,a4,n,t,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{if(i==1)
{a1=1,a2=a3=a4=0;}
else if(i==2)
{a1=a3=a4=0;a2=1;}
else if(i==3)
{a1=a2=a4=0;a3=1;}
else
{a4=a3+a4;a3=a2;a2=a1;a1=a4;}
}

sum=a1+a2+a3+a4;
printf("%d",sum);
getch();

}
//---------------------------------------------------------------------------

*********************************************
问题多多:

int cow(int n)
{ int i,a1,a2,a3,a4,n,t,sum=0;/*变量n重复定义,应该去掉*/
scanf("%d",&n);/*多余*/
for(i=1;i<=n;i++)
{if(n==1)
{a1=1,a2=a3=a4=0;}
if(n==2)/*自此以下的if全部应该改为else if*/
{a1=a3=a4=0;a2=1;}
if(n==3)
{a1=a2=a4=0;