c语言程序设计 求2的N次方

 我来答
aoi碧
2011-08-21 · 超过19用户采纳过TA的回答
知道答主
回答量:36
采纳率:100%
帮助的人:43.3万
展开全部
#include<stdio.h> //前两行都是头文件
#include<stdlib.h>
int main()//定义主函数
{
int n,a;//定义整型变量n表示次方,a用于循环函数
int power=1;//定义整形变量power,也就是最终的结果,所以你手动输入n的时候不要太大
printf("Please enter n:");//运行时会出现一行字提示你输入N
scanf("%d",&n);//程序扫描你输入的n
for(a=0;a<n;a++)//for函数循环计算结果
{
power=power*2;
}

printf("%d\n",power);//输出结果
return 0;
}

我现在的电脑上没有软件,你运行看看,有error就追问,我来改
就是这样的夜
推荐于2018-03-28 · TA获得超过838个赞
知道小有建树答主
回答量:820
采纳率:0%
帮助的人:559万
展开全部
a=1;
for(;n;n--){
a*=2;
}
不过你小心了,比如定义的是unsing a=1;则n大于16会溢出,unsigned long a=1则n大于32会溢出。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-21
展开全部
#include<stdio.h>
unsigned long pow(unsigned long n){//递归求二的N次方
unsigned long res=0;
if(n==0) res=1;
else res=2*pow(n-1);
return res;
}
void main(){
unsigned long n,sum=0;
scanf("%ld",&n);
sum=pow(n);
printf("二的%ld次方等于:%ld",n,sum);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lai688_long
2011-08-21
知道答主
回答量:32
采纳率:0%
帮助的人:10.6万
展开全部
#define N xxx //此处xxx就是你的N值
void main()
{
int sum=1;
for(int i=0;i<N;i++)
sum*=2;
while(1);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5d49a6301
2018-07-09
知道答主
回答量:15
采纳率:33%
帮助的人:5.3万
展开全部

int main()
{
    int num = 1000;
    char ret[1000];
    int N;
    int retLength;
    while (scanf("%d", &N)&& N >= 0)
    {
        memset(ret, -1, sizeof(ret));
        ret[0] = 1;
        retLength = 0;
        if (0 == N)
        {
           printf("%d\n", 1);
           continue;
        }
        else
        {
            for (int i = 0; i < N; ++i)
            {
                char isCarry = 0;
                int j = 0;
                for (j = 0; j < num; ++j)
                {
                    if (-1 == ret[j])
                    {
                        break;
                    }
                    //模拟乘2过程
                    ret[j] *= 2;
                    ret[j] += isCarry;
                    if (ret[j]>=10)
                    {
                        isCarry = 1;
                        ret[j] %= 10;
                    }
                    else
                    {
                        isCarry = 0;
                    }
                }
                //一轮模拟乘2结束, 判断是否还有进位, 
                //如果有进位,则在下位赋值为1
                if (1 == isCarry)
                {
                    ret[j++]=1;
                    isCarry = 0;
                }
                //最后一次模拟需要保存,总共计算了的长度。
                if (i == N - 1)
                {
                    retLength = j;
                }
            }
            //最后格式化输出,50次一个换行,
            //注意计算结果保存是逆序。如2^10 的保存结果为4201
            for (int i = 0; i < retLength; ++i)
            {
                printf("%c", ret[retLength - i - 1] + '0');
                if (0 == (i+1)%50)
                {
                    printf("\n");
                }
             }
        }
        printf("\n");
    }
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式