你把刚才给你的diam修改一下循环体就可以了啊,显示部分写成函数了,代码如下:
#include <stdio.h>
long long jc(int n)
{
long long s = 1;
int i;
for(i=1;i<=n;i++)
s*=i;
return s;
}
double power(int n)
{
double s=1.0;
int i=0;
for(;i<n;i++)
s/=10;
return s;
}
void printlongf(double e,int k)
{
switch(k)
{
case 1:
printf("%.1lf",e);break;
case 2:
printf("%.2lf",e);break;
case 3:
printf("%.3lf",e);break;
case 4:
printf("%.4lf",e);break;
case 5:
printf("%.5lf",e);break;
case 6:
printf("%.6lf",e);break;
case 7:
printf("%.7lf",e);break;
case 8:
printf("%.8lf",e);break;
case 9:
printf("%.9lf",e);break;
case 10:
printf("%.10lf",e);break;
case 11:
printf("%.11lf",e);break;
case 12:
printf("%.12lf",e);break;
case 13:
printf("%.13lf",e);break;
case 14:
printf("%.14lf",e);break;
case 15:
printf("%.15lf",e);break;
case 16:
printf("%.16lf",e);break;
case 17:
printf("%.17lf",e);break;
case 18:
printf("%.18lf",e);break;
}
}
int main()
{
double e=0;
double r2=1,ex;
int k;
char c ;
while(1)
{
c = getchar();
if(c>=1 && c<=18)
break;
}
ex = power((int)c)/2;
k = 0;
while(1)
{
r2 = (double)(9*k*k+1)/jc(3*k);
if(r2 < ex )
break;
e += r2;
k++;
}
printlongf(e,(int)c);
return 0;
}
这跟刚才的差不多啊