#include<stdio.h>
#include<math.h>
main()
{
float sum(int n);
int m,n,i;
float s,num[100];
while(scanf("%d",&m)!=EOF&&m<100)
{
i=0;
while(i<m)
{
scanf("%d",&n);
s=sum(n);
num[i]=s;
i++;
}
for(i=0;i<m;i++)
printf("%.2f\n",num[i]);
}
}
float sum(int n)
{
int t;
float s=0;
for(t=1;t<=n;t++)
s+=(1.0/t)*pow(-1,t+1);
return(s);
}
下面是第二种,网上找到的,代码更简短些
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int n,m;
double sum;
while(scanf("%d",&m)!=EOF)
{
while(m--)
{
sum=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
if(i%2==0)
sum-=(1.00/i);//注意要转换为double型
else
sum+=(1.00/i);
}
printf("%.2lf\n",sum);
}
}
// system("pause");
return 0;
}
第一种的修改,第一种的输出可以不需要那么麻烦
#include<stdio.h>
#include<math.h>
main()
{
float sum(int n);
int m,n,i;
float s;
while(scanf("%d",&m)!=EOF&&m<100)
{
i=0;
while(i<m)
{
scanf("%d",&n);
s=sum(n);
i++;
printf("%.2f\n",s);
}
}
}
float sum(int n)
{
int t;
float s=0;
for(t=1;t<=n;t++)
s+=(1.0/t)*pow(-1,t+1);
return(s);
}