代码一
# include<stdio.h>
# include<math.h>
int main()
{
int h1,n,m,j,k;
double sum=0,h2=0;
scanf("%d %d",&h1,&n);
if(n>0) //注意一定要讨论n==0这种情况
{
sum=h1;
for(m=1;m<=n;m++)
{
sum+=h2*2;
h2=h1/pow(2,m); //这个地方调用函数了,运算速度慢
}
}
printf("%0.1lf %0.1lf",sum,h2);
return 0;
}
代码二
# include<stdio.h>
int main()
{
int h1,n,m;
double sum=0,h2=0,j=2;
scanf("%d %d",&h1,&n);
if(n>0)
{
sum=h1;
for(m=1;m<=n;m++)
{
sum+=h2*2;
h2=h1/j;
j*=2; //更快
}
}
printf("%0.1lf %0.1lf",sum,h2);
return 0;
}
观察,先加S,后变h,很有规律;
让我猜猜:是不是没有讨论n==0的情况。
本文对比分析了两段C语言代码,通过使用不同的数学运算方式,展示了如何在保证功能不变的前提下,提高代码运行效率。文章详细解释了在循环中进行浮点数运算时,采用整数运算代替函数调用的方法,以此减少程序执行时间。

722

被折叠的 条评论
为什么被折叠?



