方法一:循环法

不断地乘以2,循环i次

int main() {int a, i, c =1;//注意要初始化为1而不是0scanf("%d", &i);for (a = 1; a <= i; a++){c = c * 2;}printf("%d", c);return 0;}

方法二:左移法

一个数它左移,左移一位的话就相当于是乘二,左移两位的话就相当于是乘四,左移三位的话就相当于是乘八,那就是相当于是。所以一位的话相当于是乘二的一次方,所以两位的话就是相当于乘二的二次方。

#include int main(){int n = 0;while (scanf("%d", &n) != EOF){printf("%d\n", 1 << n);}return 0;}

方法三:递归法

2^n=2*2^(n-1)=2*2*2^(n-2)……以此类推

int pow(int n){if (n <= 0)return 1;elsereturn 2 * pow(n-1 );}int main(){int n = 1;scanf("%d",&n);int ret = pow(n);printf("%d", ret);return 0;}