主题:c语言求数列
qianying01
[专家分:0] 发布于 2010-11-02 14:44:00
各位大哥哥,大姐姐,小妹初学C语言,遇到一个难题。
请各位赐教。
已知数列前两项,
后继项根据前两项的乘积生成。
1.若乘积为位数,则乘积就是数列的后继项;
2.若乘积为位数,则乘积的后继项。
求第n项
最后更新于:2010-11-02 22:57:00
回复列表 (共3个回复)
沙发
zhangyanrong1987 [专家分:60] 发布于 2010-11-02 16:21:00
#include<stdio.h>
#include<conio.h>
int main()
{int a,b,c,i,n;
printf("please in put:n\n");
scanf("%d",&n);
int s[n];
printf("please in put:a,b\n");
scanf("%d %d",&a,&b);
s[0]=a;s[1]=b;
for(i=0;i<n;i++)
{c=s[i]*s[i+1];
if(c/10==0)
s[i+2]=c;
else
{s[i+2]=c/10;
s[i+3]=c%10;
i=i+1;
}
}
for(i=0;i<n;i++)
printf("\n%d\t",s[i]);
getch();
return 0;
}
板凳
qianying01 [专家分:0] 发布于 2010-11-02 20:24:00
谢谢你提出的解决方案,
但是,当i=n-1时,是不是可能发生数组的越界呢?
3 楼
wolf赵帅 [专家分:70] 发布于 2010-11-02 22:28:00
#include<stdio.h>
main ()
{int c,i,n,a[10];
printf("please input:n\n");
scanf("%d",&n);
a[0]=2;a[1]=3;
for(i=2;i<n;i++)
{ c=a[i-1]*a[i-2];
if(c/10==0)
a[i]=c;
else
{a[i]=c/10;
a[i+1]=c%10;
i=i+1;
}
}
printf("%4d",a[n-1]);
printf("\n");
}
只需要根据n改变数组的元素个数 即改变a[x]x的值来适应n
我来回复