c语言中 计算2的n的n次方 N可能大于100

 我来答
匿名用户
2012-11-24
展开全部

#include <stdio.h>


int main()

{

    int N;

    /*

    数组每个元素作为一个位.

    并且value[1000]为个位

    */

    int value[1001] = {0}; 

    int i;

    value[1000] = 1;//初始化个位为1

   

    scanf("%d", &N); //2^N


    while(N--)

    {

        //每个位乘上2

        for(i = 1000; i > 0; --i)

        {

            value[i] *= 2;

        }

        //从个位开始,满是进1

        for(i = 1000; i > 0; --i)

        {

            if(value[i] >= 10)

            {

                value[i] -= 10;

                value[i-1] += 1;

            }

        }

    }


    //输出数组

    for(i = 0; i <= 1000; ++i)

    {

        if(value[i] != 0)

        {

            while (i <= 1000)

            {

                printf("%d", value[i]);

                ++i;

            }

            putchar('\n');

            break;

        }

    }


    return 0;

}


//大数的N次的平方,望采纳.


謇俊晤森烨
游戏玩家

2020-02-05 · 游戏我都懂点儿,问我就对了
知道大有可为答主
回答量:1.2万
采纳率:33%
帮助的人:715万
展开全部
因为n/=2其实是n=n/2,而你的n是int
型,编译器会自动将不是整型数,转换为整型,19.5放到n中也就是19了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
632667915
2012-11-24 · TA获得超过859个赞
知道小有建树答主
回答量:310
采纳率:0%
帮助的人:315万
展开全部
用__int64的话可以表达到2的63次方-1,明显不足够,那么就涉及到了高精度数值处理,楼主可以去了解一下这个概念先,我写了一个程序,可以计算到2的N次方达到10000位数 ,最少可以算到2的3万次方,希望可以帮到楼主
#include<stdio.h>
int main(void)
{
int i,k,n,sum;
while(scanf("%d",&n)!=EOF)
{
sum=1;
int a[10000];
for(i=1;i<10000;i++)
a[i]=0;
a[0]=1;
for(k=1;k<=n;k++)
{
for(i=0;i<sum;i++)
a[i]=a[i]*2;
for(i=0;i<sum;i++)
if(a[i]>=10)
{
a[i+1]=a[i+1]+a[i]/10;
if(i+1==sum)sum++;
a[i]=a[i]%10;
}
}
for(i=sum-1;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式