摘要:试题3阅读下列程序说明和C程序,将应填入程序中__(n)__处的字句写在答卷纸的对应栏内。[程序说明]已知某数的前二项为2和3,其后继项根据当前最后二项的乘积按下列规则生成(1)若乘积为一位数,则该乘积即为数列的后继项;(2)若乘积为二位数,则该乘积的十位数和个位数依次作为数列的两个后继项。本程序输出该数列的前n项以及
试题 3 阅读下列程序说明和 C 程序,将应填入程序中__(n)__处的字句写在答卷纸的对应栏内。
[程序说明] 已知某数的前二项为2和3,其后继项根据当前最后二项的乘积按下列规则生成
(1)若乘积为一位数,则该乘积即为数列的后继项;
(2)若乘积为二位数,则该乘积的十位数和个位数依次作为数列的两个后继项。
本程序输出该数列的前n项以及它们的和。其中,函数sum(n,pa)返回数列的前n项之和,并将生成的前n项存放于首指针为pa的数组中。程序中规定输入的n值必须大于2并且不超过给定的常数值MAXNUM。
例如:若输入n值为10,则程序输出如下内容:
sum(10)=44
2 3 6 1 8 8 6 4 2 4
[程序]
#include <stdio.h>
#define MAXNUM 100
int n, *pa;
int sum( n,pa )
{
int count,total,temp;
*pa=2;
__(1)__ = 3;
total = 5; count = 2;
while (count++<n)
{
temp=.(pa-1)..pa;
if (temp<10)
{
total+=temp;
*(++pa)=temp;
}
else
{
__(2)__ = temp/10;
total += *pa;
if ( count<n)
{
count++;pa++;
__(3)__ = temp%10;
total += *pa;
}
}
}
__(4)__;
}
main ()
{
int n,.p,.q,num[MAXNUM];
do {
printf( "Input N=? (2<N<%d):",MAXNUM+1 );
scanf( "%d",&n );
} while ( __(5)__ );
printf( "\nsum(%d)=%d\n",n,sum(n,num) );
for ( p=num, q = __(6)__ ;p<q;p++) printf("%4d",*p );
printf("\n");
}
[1] [2] [3] [4] [5] [6]