急求用C语言编写两个程序

1,计算任意两个数的阶乘的和;
2,读入20个整数,统计其中非负数的个数及非负数的和

第1个回答  2008-12-12
一,
#include "stdio.h"
#include "stdlib.h"
#include "memory.h"
#include "math.h"
#include "malloc.h"
void calcFac(unsigned long n)
{
unsigned long i,j,head,tail;
int blkLen=(int)(n*log10((n+1)/2)); //计算n!有数数字的个数
blkLen+=4; //保险起见,多加4位

if (n<=1)
{ printf("%d!=0\n",n); return;}

char *arr=(char *)malloc(blkLen);
if (arr==NULL)
{ printf("alloc memory fail\n"); return ;}

memset(arr,0,sizeof(char)*blkLen);
head=tail=blkLen-1;
arr[tail]=1;

for (i=2;i<=n;i++)
{
unsigned long c=0;
for (j=tail;j>=head;j--)
{
unsigned long prod=arr[j] * i +c;
arr[j]=(char)( prod % 10);
c= prod / 10;
}
while (c>0)
{
head--;
arr[head]=(char)(c % 10);
c/=10;
}
}
printf("%d!=",n);
for (i=head;i<=tail;i++)
printf("%c",arr[i]+'0');
printf("\n");

free(arr);
}

void testCalcFac()
{
int n;
while (1)
{
printf("n=?");
scanf("%ld",&n);
if (n==0)
break;
calcFac(n);
}
}

int main(int argc, char* argv[])
{
testCalcFac();
return 0;
}

参考资料:

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网