主题:c语言求数列
			 qianying01
				 [专家分:0]  发布于 2010-11-02 14:44:00
 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
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
qianying01 [专家分:0]  发布于 2010-11-02 20:24:00				
				谢谢你提出的解决方案,
但是,当i=n-1时,是不是可能发生数组的越界呢?
							 
						
				3 楼
				
					 wolf赵帅 [专家分:70]  发布于 2010-11-02 22:28:00
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
							 
									
			
我来回复