例23 数列求和
问题描述
已知某数列前两项为2和3,其后继项根据前面最后两项的乘积,按下列规则生成:
① 若乘积为一位数,则该乘积即为数列的后继项;
② 若乘积为二位数,则该乘积的十位上的数字和个位上的数字依次作为数列的两个后继项。
输出该数列的前N项及它们的和。
输入格式
一个整数N(2≤N≤1000)。
输出格式
第1行输出该数列的前N项的和。
第2行输出该数列的前N项。
输入样例
10
输出样例
sum(10)=44
2 3 6 1 8 8 6 4 2 4
(1)编程思路。
编写函数int sum(int *pa, int n)按数列的生成方法生成数列的前n项并保存在数组pa中,同时将前n项的和作为函数值返回。
(2)源程序。
#include
#define MAXNUM 1001
int sum(int *pa, int n);
int main()
{
int n,num[MAXNUM];
scanf("%d",&n);
printf("sum(%d)=%d
",n,sum(num,n));
for (int i=0;i
{
printf("%d ",num[i]);
}
printf("
");
return 0;
}
int sum(int *pa, int n)
{
int count, total, temp;
*pa = 2;
*(++pa)=3;
total=5;
count=2;
while (count++
{
temp = *(pa-1) * (*pa);
if (temp<10)
{
total+=temp;
*(++pa) = temp;
}
else
{
*(++pa)= temp/10;
total += *pa;
if (count++
{
*(++pa) = temp%10;
total += *pa;
}
}
}
return total;
}
习题23
23-1 序列求和
问题描述
有一个序列,初始时只有两个数x和y