您的位置:

1100的累乘c语言,c语言计算10的阶乘并输出

本文目录一览:

C语言中关于累乘的例子

/*************************

输入n,输出1*2*3...*n的值

*************************/ 

#includestdio.h

int main()

{

    int n;

    while(scanf("%d",n)!=EOF)

    {

        int i;

        int res=1;

        for(i=1;i=n;i++)

        {

            res = res*i;

        }

        printf("%d\n",res);

    }

    return 0;

}

C语言中累加累乘的算法是什么

累加累乘,呵呵,很简单的。

首先,就是定义一个变量(a=0)来保存结果,另定义一个变量(b)实现数值的变化。把数值变化的那个变量(b)的值每次和保存结果的变量(a)进行运算,结果赋给a.比如1——10的累加,就是先把1赋给a,之后b变成2,和a相加结果给a。如此反复就是累+。乘法一样

c语言求阶乘累加和

题目中数据很大

于是我们有了高精度算法

思路是什么呢:

一个数组里面每一位存的是十进制数三位(也可以只存一位,但是比较慢)

也可以理解成一千进制

这样能模拟大整数的乘法、加法

#includestdio.h

#includestring.h 

#define max(a,b) (ab?a:b)

int n;

FILE * input, * output;

struct bigint

{

int len;

int num[1100];

}fac,sum;

void mul(int value){//高精度乘单精度

int i;

for (i=1;i=fac.len;i++)

fac.num[i]=fac.num[i]*value;//每个数位乘上数

for (i=1;i=fac.len;i++)

if (fac.num[i]=1000) {//逢千进一

fac.num[i+1]+=fac.num[i]/1000;fac.num[i]%=1000;

}

if (fac.num[fac.len+1]) fac.len++;//位数可能会增加,而且最多增加1

}

void add()//给sum加上fac的值

{

int i;

//由于此时fac永远大于sum所以不用判断sum的长度

for (i=1;i=fac.len;i++)

sum.num[i]+=fac.num[i];//每一位加上fac的值

for (i=1;i=fac.len;i++)

if (sum.num[i]=1000){//逢千进一

sum.num[i+1]++;sum.num[i]-=1000;//因为加法运算不可能往前进2

}

sum.len =fac.len;

if (sum.num[sum.len+1]) sum.len++;

}

void out()//输出

{

int i;

for (i=sum.len;i=1;i--)

{

if (isum.len) //压位高精度一定要判断位数

{//因为如果不是第一位,其他要补0,因为如果这个数是1001,就会变成11

 if (sum.num[i]10) fprintf(output,"00");

else if (sum.num[i]100) fprintf(output,"0");

}

fprintf(output,"%d",sum.num[i]);

}

fputc('\n',output);

}

int main(){

input = fopen("factor.in","r");

output = fopen("factor.out","w");

memset(fac.num,0,sizeof fac.num);

memset(sum.num,0,sizeof sum.num); 

fscanf(input,"%d",n);

int i;

fac.len = sum.len = 1;//初始赋成1

fac.num[1] = sum.num[1] = 1;

for (i=2;i=n;i++)

{

mul(i);

add();

}

out();

fclose(input);fclose(output);

return 0;

}

C语言简单问题!!!1-99累乘(用的while语句)

#include stdlib.h

void main() { int i; double sum;

i=1; sum=1;

while(i=99){ sum*=i; i++; }

printf("sum=%.0lf\n",sum);

}

由于超过有效位数表示能力,肯定不精确

用C语言求1至100之间偶数积

这个不好做啊,乘积太大了,要精确结果还是近似的,近似的话浮点数可以解决。

#includestdio.h

main()

{

int

i;

double

sum=1;

for(i=2;i=100;i+=2)

sum

*=

i;

printf("Sum

is

%e\n",

sum);

//注意这里使用%e作为输出。

}

整点int是肯定不行的,会溢出。

还有一个办法就是计算2^50和50!的乘积

c语音代码1*100(累成)

这一死循环啊。。。while (2101) 会永远执行下去的!

改成 while (i101) 通过变量i控制循环执行99次。

另外,1累乘到100,其结果int型完全存储不下。。。。你确定题目要求这么搞??

#include stdio.h

int main(void) {

int i=2;

int num=1;

while (i11) { /*累乘到100,int存储不下,这里先改为累乘至10*/

num*=i;

printf ("%d\n",num);

i++;

}

    getch (); /*屏幕暂留*/

    return 0;

}

运行结果