以上各位都对,但有更简单的
成都创新互联公司长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为宿豫企业提供专业的做网站、成都做网站,宿豫网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。
直接将1左移n位就好了,效率也更高
int n= 10;
unsigned int x = 1n;
但要注意直接计算2的n次方很容易溢出,比如直接左移以及直接乘都要求小于32次方,还得是x声明为unsigned的前提下,否则最多能左移16位,超过之后就溢出了
如果要实现超过32次方,需要定义为更大的数据类型,或者直接用字符数组存储,实现大整数的运算
#include stdio.h
#includemath.h
int main()
{
int n;
unsigned long long sum;
printf("请输入要计算的N此方:");
scanf("%d",n);
sum=pow(2,n);
printf("%llu",sum);
return 0;
}
扩展资料:
在C语言中,输入和输出是经由标准库中的一组函数来实现的。在ANSI C中,这些函数被定义在头文件stdio.h;中。
标准输入/输出
有三个标准输入/输出是标准I/O库预先定义的:
stdin标准输入
stdout标准输出
stderr输入输出错误
运算
C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则就会显得十分重要。
你那个符号不是幂函数符号,他表示两个数取异或,现将两个数转化为二进制数码,两个2转化之后每一位对应都是一样的,得到的结果就是每一位都是0,最后结果就是0了嘛。
例如转化之后是 0000 0010
^
0000 0010
-------------
得到 0000 0000 (每一位对应作异或运算,相同则为0,不同则为1.) 最后结果就是0。
c语言有自带的代码:
pow(x,y)
其中x为底数,y为指数,
pow(x,y)=x^y,即x的y次方
例如:pow(4,1/2)=2
注意的是:其中pow函数在头文件math.h中,所以调用该函数的时候,必须将math.h加进来。
#includestdio.h //前两行都是头文件
#includestdlib.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;an;a++)//for函数循环计算结果
{
power=power*2;
}
printf("%d\n",power);//输出结果
return 0;
}
我现在的电脑上没有软件,你运行看看,有error就追问,我来改
可以用在math.h头文件中声明的pow()函数求,例如:
要求a的b次方,就用pow(a,b)即可。
^符号在C中是位异或操作符,不用于求乘方。