c语言中2的n次方怎么表示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中2的n次方怎么表示相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
#include<math.h>
int main()
int n;double a=pow(2,n);
scanf("%d",&n);
printf("%d\n",a);
这个哪里错了
C语言有函数,需要头文件#include <math.h> 用pow(2,n)就可以表示2的n次方。
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
扩展资料:
C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。
当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。
参考技术A #include<stdio.h>#include<math.h>
int main()
int n;
scanf("%d",&n);
double a=pow(2,n);
printf("%lf\\n",a);
追问
小数点怎么去掉
追答printf("%.lf\n",a);
或者 printf("%d\n",(int)a);
改了以后计算还是不对,
输入2,输出时1.000000
#include<math.h>
int main()
int n;
double a;
scanf("%d",&n);
a = pow(2,n);
printf("%.0lf \\n",a); // 1
printf("%d \\n", (int)a); // 2
变量必须先初始化再使用,所以scanf语句应该在a = pow(2,n)之前。
另外,小数点的问题:可以直接格式化输入整数部分后0位,即不输出小数点和小数部分,如注释1处;或者强制转换类型为int型后再输出,如注释2处。
计算1!+2!+3!...+(n-1)!+n!。设计求解该问题的C语言程序,阶乘的计算使用递归函数实现
程序运行后输入n,当n=5时输出结果如下图所示
用递归并不是很好,每次递归调用都要有一定的时间和空间的开销,当n不大时还可以,当n大到一定程度就会出现堆栈溢出,程序崩溃。作为练习或是算法描述是可以的。
该问题如果不用递归算法实现阶乘可以做的更有效率。
递归算法:
#include<iostream>
using namespace std;
long int fun(int n)
if(n==1)return 1;
return ((long int)n)*fun(n-1);
int main()
long int S=0;
int n;
cout<<"请输入一个正整数"<<endl;
cin>>n;
for(int =1;i<=n;i++)
S+=fun(i);
cout<<"S="<<S<<endl;
非递归算法
#include <iostream>
using namespace std;
int main()
long int S;
long int T=1;
int n;
cout<<"请输入一个正整数"<<endl;
cin>>n;
for(int i=1;i<=n;i++)
T=(long int)i*T;
S=S+T;
cout<<"S="<<S<<endl;
参考技术A #include <stdio.h>
#include <stdlib.h>
fun(int x);
int main(void)
char *pszBuff = NULL;
int a;
int i=1;
int sumResult = 0;
printf("input a int number::");
scanf("%d", &a);
for(i=1;i<=a;i++)
int tmp = fun(i);
sumResult = sumResult + tmp ;
printf("%d!=%d, 1-%d的阶乘的和为%d\n",i,tmp,sumResult );
return 0;
int fun(int x)
int ret;
if(x == 1) return 1;
ret = fun(x-1)*x;
return ret;
本回答被提问者采纳 参考技术B #include<stdio.h>
void main()
int n,i,j;
long num=1,sum=0;
printf("input a int number::");
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
num*=j;
sum+=num;
printf("%d!=%d, 1-%d的阶乘的和为%d\n",i,num,i,sum);
num=1;
sum=0;
参考技术C #include <stdio.h>
int jiecheng(int x)
int sum=1;
int i;
for(i=1;i<=x;i++)
sum=sum*i;
return sum;
main()
int n,i,j,sum=0;
printf("求阶乘\n");
printf("请输入一个数N:N<10\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
printf("%d!的阶乘为%d ",i,jiecheng(i));
for(j=1;j<=i;j++)
sum=sum+jiecheng(j);
printf(" 1-%d!的阶乘和为%d\n",i,sum);
sum=0;
以上是关于c语言中2的n次方怎么表示的主要内容,如果未能解决你的问题,请参考以下文章