C语言中如何算2的N次方
#include <stdio.h>
#include<math.h>
int main()
{
int n;
unsigned long long sum;
printf("请输入要计算的N此方:");
scanf("%d",&n);
sum=pow(2,n);
printf("%llu",sum);
return 0;
}
扩展资料:
在C语言家族程序中,头文件被大量使用。一般而言,每个C++/C程序通常由头文件和定义文件组成。头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明,而定义文件用于保存程序的实现。
头文件一般由四部分内容组成:
1,头文件开头处的版权和版本声明。
2,预处理块。
3,inline函数的定义。
4,函数和类结构声明等。
在头文件中,用 ifndef/define/endif结构产生预处理块,用 #include 格式来引用库的头文件。头文件的这种结构,是利用C语言进行开发软件所通常具备的,属于公有知识。
完整代码如下:
#include <stdio.h>
int main(int argc, char **argv)
{
unsigned long long result = 1;
int cnt;
if (argc != 2) {
return -1;
}
cnt = atoi(argv[1]);
if (cnt < 0) {
return -1;
}
printf("cnt=%d\n", cnt);
while (cnt) {
result *= 2;
if ((result - 2) > ((unsigned long long)-1 / 2)) {
printf("result out of range! result:%llu range:%llu\n", result, (unsigned long long)-1 / 2);
return -1;
}
cnt--;
}
printf("result = %llu\n", result);
return 0;
}
通过输入参数计算2的N次方,如./exe 10,表示计算2的10次方结果。
PS:最多计算到2的63次方,因为unsigned long long 8字节64位,不能超过它的最大值。
pow(2,n);
2的n次方。
这个函数写起来也很简单的。
int pow(int x,int y)
{
int i;
for(i=0;i<y;i++)
x*=x;
return x;
}
{
int i;
int n;
long s=1;
printf("请输入n的值:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s*=2;
}
printf("2的%d次方的值为%ld\n",n,s);
}
我这样试过,但是当n=100次就错了我用的还是unsigned long long 类型呢
long型是32个字节,你用100的话就超出范围了!算一下2的32次方是多大,然后如果是100次方得话就超出范围了!