本题要求实现一个函数,求单链表L结点的阶乘和。这里默认所有结点的值非负,且题目保证结果在int范围内。
函数接口定义:
int FactorialSum( List L );其中单链表
List的定义如下:typedef struct Node *PtrToNode; struct Node { int Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; typedef PtrToNode List; /* 定义单链表类型 */
裁判测试程序样例:
#include <stdio.h> #include <stdlib.h> typedef struct Node *PtrToNode; struct Node { int Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; typedef PtrToNode List; /* 定义单链表类型 */ int FactorialSum( List L ); int main() { int N, i; List L, p; scanf("%d", &N); L = NULL; for ( i=0; i<N; i++ ) { p = (List)malloc(sizeof(struct Node)); scanf("%d", &p->Data); p->Next = L; L = p; } printf("%d\n", FactorialSum(L)); return 0; } /* 你的代码将被嵌在这里 */
输入样例:
3
5 3 6输出样例:
846

int FactorialSum( List L )
{
int result=0;
while(L!=NULL)
{
int sum=L->Data; //读取本节点数据
if(sum==0) //计算阶乘
sum=1;
else
for(int i=sum-1;i>1;i--)
sum*=i;
result+=sum; //加上阶乘
L=L->Next; //准备访问下一个节点
}
return result;
}
注意事项:
本题难度不高,需要初步学习单链表。
至此PTA基础编程题目集的函数题就完成啦!
如有问题,欢迎提出。
文章提供了一个C语言的编程任务,要求编写一个函数`intFactorialSum(ListL)`来计算单链表中每个节点值的阶乘并求和。链表中的节点值非负,且结果需保持在`int`范围内。给定了输入样例和输出样例,以及简单的阶乘计算方法。
231

被折叠的 条评论
为什么被折叠?



