
c语言程序设计 求2的N次方
7个回答
展开全部
#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就追问,我来改
#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就追问,我来改
展开全部
a=1;
for(;n;n--){
a*=2;
}
不过你小心了,比如定义的是unsing a=1;则n大于16会溢出,unsigned long a=1则n大于32会溢出。
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);
}
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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#define N xxx //此处xxx就是你的N值
void main()
{
int sum=1;
for(int i=0;i<N;i++)
sum*=2;
while(1);
}
void main()
{
int sum=1;
for(int i=0;i<N;i++)
sum*=2;
while(1);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询