幂运算C语言结果为float,怎样用C语言实现精确计算浮点数的幂

这段代码是用于解决北京大学ACM在线评测系统的一道编程题,主要涉及整数处理和字符串操作。代码中定义了一个函数`qq`,用于将整数乘以10的幂,并在`main`函数中处理输入的数字字符串,进行特定的数值转换和格式化输出。程序读取输入的字符串,查找小数点位置,然后对整数部分进行处理,包括进位和分割操作。
摘要由CSDN通过智能技术生成

满意答案

00e27ab806e4881f8254fe7ae8741834.png

ggrdp565

推荐于 2016.04.20

00e27ab806e4881f8254fe7ae8741834.png

采纳率:55%    等级:8

已帮助:510人

你做的北大ACM网站上的试题吧?

#include

#include

int qq(int n)

{ int i, sum=1;

for(i=1;i<=n;i++)

sum=10*sum;

return(sum);

}

int main()

{

float r;

int n;

while(1)

{

char a[10000];

long int b[10000];

int k,h,m,i,j,z,g,t,q,e;

long int c=0;

if(scanf("%s%d",a,&n)==EOF)break;

for(i=0;a[i];i++)

if(a[i]=='.')k=i;

m=i-k-1;

for(i=k;i

a[i]=a[i+1];

h=i;

for(i=0;i

b[i]=a[i]-48;

for(i=0;i

for(i=0;i

for(e=1;e

{

for(i=0;i

for(j=0;j

if(b[j]>=10){t=b[j];b[j]=t%10;b[j+1]+=t/10; }

if(b[h-1]>=10)

{

t=b[h-1];

q=b[h-1];

z=1;

while(t>=10)

{

t=t/10;

z++;

}

g=z;

while(z>=1)

{

b[h+g-z-1]=q/qq(g-z)%10;

z--;

}

h=h+g-1;

}

}

if(h

{

printf(".");

for(j=m*n-1;j>h-1;j--)printf("0");

for(j=0; ;j++)if(b[j]!=0)break;

for(i=h-1;i>=j;i--)

printf("%d",b[i]);

}

if(h==m*n)

{ for(j=0; ;j++)if(b[j]!=0)break;

printf(".");

for(i=h-1;i>=j;i--)

printf("%d",b[i]);

}

if(h>m*n)

{

for(j=0; ;j++)if(b[j]!=0)break;

if(j

{

printf(".");

for(i=m*n-1;i>=j;i--)printf("%d",b[i]);

}

if(j<=m*n-1&&b[h-1]!=0)

{ for(i=h-1;i>=m*n;i--)

printf("%d",b[i]);

printf(".");

for(i=m*n-1;i>=j;i--)printf("%d",b[i]);

}

if(j>=m*n)

{

for(i=h-1;i>=m*n;i--)

printf("%d",b[i]);

}

} printf("\n");

}

return 0;

}

00分享举报

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值