#include<stdio.h> #include<stdlib.h> typedefstructNode *PtrToNode;//这句的意思是把指向Node这个结构体的指针起名叫PtrToNode structNode { int Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; typedef PtrToNode List; /* 定义单链表类型 */ intFactorialSum( List L ); intmain() { int N, i; List L, p; scanf("%d", &N); L = NULL;//这是表头指针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)); return0; } /* 你的代码将被嵌在这里 */ intFactorial(int n)//求阶乘 { if( n == 0 || n == 1 ) { return1; }else{ int sum = 1; for (int i = 1; i <= n; i++) { sum = sum * i; } return sum; } } intFactorialSum( List L ) { int sum = 0; int temp = 0;//暂时存一下一个数字的阶乘 while (L != NULL) { temp = Factorial(L->Data);//得到这一次循环的阶乘 sum = sum + temp; L = L->Next; } return sum; }