早教吧 育儿知识 作业答案 考试题库 百科 知识分享

求一个程序设计数列链表的创建及计算输入a0、a1和n,a0和a1是两个小于10的正整数,构造一个序列,a0和a1是该序列的前两项,其后继项是由序列中最后2项的乘积生成,规则是:1)若积为一位数,2

题目详情
求一个程序设计 数列链表的创建及计算
输入a0、a1和n,a0和a1是两个小于10的正整数,构造一个序列,a0和a1是该序列的前两项,其后继项是由序列中最后2项的乘积生成,规则是:
1) 若积为一位数,2) 则此积为后继项;
3) 若积为二位数,4) 则该积的十位数和个位数依次作为序列的两个后继项.
把所产生的序列以链接方式存储,并求出前n项和.
▼优质解答
答案和解析
#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"
struct List
{
int data;
struct List *next;
}List;
struct List * InitList(int a1,int a2,int n)
{
struct List *head,*p1,*p2,*p,*q;
int num=2,pro;
head=(struct List *)malloc(sizeof(struct List));
head->next=NULL;
p=head;
q=(struct List *)malloc(sizeof(struct List));
q->next=NULL;
q->data=a1;
p->next=q;
p=p->next;
p1=q;
q=(struct List *)malloc(sizeof(struct List));
q->next=NULL;
q->data=a2;
p->next=q;
p=p->next;
p2=q;
while (numnext=NULL;
pro=p1->data*p2->data;
if (prodata=pro;
}else{
q->data=pro/10;
p->next=q;
p=p->next;
p1=p1->next;
p2=p2->next;
num++;
q=(struct List *)malloc(sizeof(struct List));
q->next=NULL;
q->data=pro%10;
}
p->next=q;
p=p->next;
p1=p1->next;
p2=p2->next;
num++;
}
return head;
}
void ListPrint(struct List *head,int n)
{
struct List *p;
int num=0,sum=0;
p=head->next;
printf("\n\n");
while(numdata);
sum+=p->data;
num++;
p=p->next;
}
printf("\n\n前%d项和为:%d\n\n",n,sum);
}
void main()
{
int a1,a2,n;
do
{
system("cls");
printf("输入a1,a2,n (其中a1,a2为<10的正整数)\n");
scanf("%d%d%d",&a1,&a2,&n);
} while(a19||a29||n
看了 求一个程序设计数列链表的创建...的网友还看了以下: