c语言求助:这程序如何改进?

来源:百度知道 编辑:UC知道 时间:2024/05/27 06:37:05
求解并一次输出符合下面条件的最大n和总和值。(用c语言)

2~1+2~2+2~3+.....+2~n < 100000

下面是我编的程序,但是运行后答案不对,请问要怎么改进? 谢谢~!

# include <stdio.h>
# include <math.h>
main()
{
int sum=0,n=1;
while(sum<100000)
{
sum=sum+pow(2,n);
n++;
}
printf("%d,%d\n",n,sum);
}

这样输出的结果将是刚好使sum超过100,000的n,
在while后面加上
sum=sum-pow(2,n);
n=n-1;

#include <stdio.h>
#include <math.h>
main()
{
int sum=0,n=1;
while(sum<100000)
{
sum=sum+pow(2,n);
n++;
}
n--;
sum=sum-pow(2,n);
printf("%d,%d\n",n,sum);
}

直接这样
# include <stdio.h>
# include <math.h>
main()
{
int sum=0,n=0;
while(sum<100000)
{
n++;
sum=sum+pow(2,n); /*这里最好用1<<n比POW快得多*/
}
printf("%d,%d\n",n,sum);
}

2~n是不是2 的n次方的意思啊?
我就当是做了
long fun(int n)
{
int i,s=1;
for(i=1;i<=n;i++)
s*=2;
return s;
}
main()
{
long n,sum=0;
for(n=1;sum<100000;n++)
sum+=fun(n);
n--;
sum-=fun(n);
printf("n=%d",n);
printf("总和=%d",sum);
}
答案:n=16,总和是65534

while(sum+po