C语言指数高精(c语言指数怎么表达)
C语言编程高精度计算问题~~~~~求助高手~~~~~~~~~
#include stdio.h
main() {
long sum = 0; // 和
int cnt = 2; // 计数器
long f = cnt; // 阶乘
while (cnt = 16) {
f *= cnt;
cnt ++;
if (cnt % 2 == 0) {
sum += f;
}
}
printf("sum = %ld", sum);
}
注:本程序没有使用递归,因此是最高效的。又:楼上的程序有语法错误。
C语言高精度问题
#includestdio.h
int main(void)
{
char s[100];
scanf("%s",s);//读入给定数字
int i,j;
for(i=0;s[i];i++)
{
if(s[i] == '.') //如果碰到小数点,则记录该位置,后面输出5位即可
{j = i;break};
else //否则输出该位数字
printf("%c",s[i]);
}
for(++i;i-j=5;i++)
printf("%c",s[i]);
puts("");
return 0;
}
c语言 指数函数怎么表达?谢谢
在开始加上#include math.h;
程序中就可以调用pow(x,y)。
main()
{
double z;
z=pow(10,5);
printf("%lf/n",z);
}
输出结果:
285.000000
扩展资料
c语言求自然对数的底e的指数,可以使用函数exp().
exp()的头文件:#include
exp()的函数原型:double exp(double x);
exp()函数的作用:返回e的x次方。
exp()的相关函数:float expf(float x);
long double expl(long double x);
注:自然对数的底e叫做: 欧拉数(eula's number)
C语言中如何使用高精度算法??
C里的取值范围:你自己看够么?
short -32768~32767
unsigned short 16 0~65535
int -32768~32767
unsigned int 16 0~65535
long -2147483648~2147483647
unsigned long 32 0~4294967295
我真不知道你要那么多位的数字做什么?
C里我也没见过那么精确的!
最大似乎可以到32位的运算!
c语言高精度计算
不是我写的,,帮你找到的。。
#includestdio.h?
#include?conio.h
#include?string.h?
#include?"stdlib.h"
void?main()
{?
?int?n=0,i=0,j=0,k=0,b=0;
?char?a[3][500]={0};
?int?n1=0,n2=0;
?char?s[500]={0};
?int?n3=0;
?int?c=0,c1=0;
?int?temp=0;
?char?op;
?char?str[1001]={0};?
?char?*result;
?scanf("%d",n);
?result=(char?*)malloc(501*n);//根据输入的n申请内存空间
?*result='\0';
?/*每次循环都要初始化*/
?for(;in;i++)
?{
??//gets(str);
??for(j=0;j500;j++)
??{
???a[0][j]='\0';a[1][j]='\0';a[2][j]='\0';
???s[j]='\0';
???str[j]='\0';
???str[1000-j]='\0';
??}
??c=0;c1=0;
??k=0;
??n1=0;n2=0;n3=0;
??/*分离输入的字符串*/
??scanf("%s",str);
??for(?j=0;str[j];j++?)
??{
???if(?str[j]!='+'??str[j]!='-')
????a[k][j-n1]=str[j];
???else?
???{
????op=str[j];
????k=1;
????n1=strlen(a[0])+1;
???}
??}//for?j
??n1-=2;
??n2=strlen(a[1])-1;
??n3=n1n2?n1:n2;
??/*计算加法*/
??if(op=='+')
??{
???for(;n1=0n2=0;n1--,n2--,n3--)
???{
????temp=a[0][n1]+a[1][n2]-96;
????temp+=c;
????if(temp=10)
????{
?????s[n3]=temp%10+48;
?????c=1;
????}
????else
????{
?????s[n3]=temp+48;
?????c=0;
????}
???}//for
???while(n1=0)
???{
????temp=a[0][n1]-48;
????temp+=c;
????if(temp==10)
????{
?????s[n3]=48;
?????c=1;
????}
????else
????{
?????s[n3]=temp+48;
?????c=0;
????}
????n1--;
????n3--;
???}//while?n1
???while(n2=0)
???{
????temp=a[1][n2]-48;
????temp+=c;
????if(temp==10)
????{
?????s[n3]=48;
?????c=1;
????}
????else
????{
?????s[n3]=temp+48;
?????c=0;
????}
????n2--;
????n3--;
???}//while?n2
???if(c)
????strcat(result,"1");
???strcat(result,s);
???strcat(result,"\n");
??}//if?op
??/*计算减法*/
??else
??{?/*保证减数大于被减数
????*如果被减数大于减数,则交换2数,并设置变量
????*/
???if(strcmp(a[0],a[1])0)
???{
????//a[2]=a[0];a[0]=a[1];a[1]=a[2];
????for(b=0;b3;b++)
????{
?????j=(b+2)%3;
?????for(k=0;k=n2;k++)
??????a[j][k]=a[b][k];
????}
????n2=n1;n1=n3;
????c1=1;//正为0,负为1
???}
???/*计算减法*/
???for(;n2=0;n1--,n2--,n3--)
???{
????temp=a[0][n1]-a[1][n2];
????temp-=c;
????if(temp=0)
????{
?????s[n3]=temp+48;
?????c=0;
????}
????else
????{
?????s[n3]=temp+58;
?????c=1;
????}
???}//for
???while(n1=0)
???{
????temp=a[0][n1]-48;
????temp-=c;
????if(temp=0)
????{
?????s[n3]=temp+48;
?????c=0;
????}
????else
????{
?????s[n3]=temp+58;
?????c=1;
????}
????n1--;
????n3--;
???}
???if(c1)
????strcat(result,"-");
???/*消除减法结果高位的0*/
???j=0;
???while(s[j]==48)
????j++;
???strcat(result,s+j);
???strcat(result,"\n");
??}//else?op
?}//for?i
?printf("%s",result);
?getch()();
}