已知数列Xn的前两项为2和3,其后继项根据当前最后两项的乘积按下列规则生成;(1)若乘积为l位数,则该乘积为数列的后继项;(2)若乘积为2位数,则该乘积的十位数字和个位数字依次作为数列的两个后继项。请编写函数void produceX(int n),生成该

admin2011-06-14  24

问题 已知数列Xn的前两项为2和3,其后继项根据当前最后两项的乘积按下列规则生成;(1)若乘积为l位数,则该乘积为数列的后继项;(2)若乘积为2位数,则该乘积的十位数字和个位数字依次作为数列的两个后继项。请编写函数void produceX(int n),生成该数列的前n项(n<100),并把它保存在数组outBuf中,再把这前100项的和保存在整型变量sum中。readWriteData()函数负责将n值从IN.DAT文件中读出,并将结果outBuf输出到文件OUT.DAT中。
注意;部分源程序已经给出。
请勿改动主函数main()和输出函数readWriteData()的内容。
试题程序;
#include
int outBuf[200],sum=0;
void readWriteData();
void produceX(int n)
{
}
void main()
{
  int n,i;
  printf("please input the amounts n;");
  scanf("%d",&n);
  produceX(n);
  for(i=0;i  printf("%d,",outBuf);
  readWriteData();
  }
void read WriteData()
{
    FILE*wf,*rf;
    char str[5];
    int i,len;
    rf=fopen("IN.DAT","r");
    wf=fopen("OUT.DAT","w");
    fgets(str,4,rf);
    len=(str[0]—’0’)*10+str[1]—’0’;produceX(1en);
    for(i=0;i    fprintf(wf,"%d,",outBuf);
    fprintf(wf,"\n");
    fclose(wf);
    fclose(rf);
  }

选项

答案   void produeeX(int n) { int i,X; outBuf[0]=2;outBuf[1]=3; for(i=2;i10) //如果是两位数 { outBuf[i]=X/10;//求出十位上的值 sum+=outBuf[i]; //将该数计入总和 i++; //将数组下标右移一位 outBuf[i]=X%10;//求出个位上的值 sum+=outBuf[i]; //将该数计入总和 } else//如果是一位数 { outBuf[i]=X; sum+=outBuf[i]; //将该数计入总和 } } }

解析 本题主要考查数列问题。按照指定的运算规则,如果得到的乘积是两位数,则将两位数的十位和个位作为新的后两位,注意此时循环量应该多加1。如果得到的是1位数,直接作为新值即可。
转载请注明原文地址:https://kaotiyun.com/show/OuaZ777K
0

最新回复(0)