#include "stdio.h"
int main()
{
int n,m,i,j,s=-1;
float sum=0;
while(scanf("%d",&m)!=EOF)
{
for( i=1; i<=m; i++ )
{
scanf("%d",&n);
for( j=1; j<=n; j++ )
{
sum=0;
s*=-1;
sum+=(float)s*1/j;
}
printf("%.2f\n",sum);
}
}
}
你是用什么编译的?我复制你的代码,在VS2012下运行、输入输出结果都没错,只做了点改动
#include "stdafx.h"
#include "stdio.h"
int main()
{
int n,m,i,j,s=-1;
float sum=0;
while(scanf_s("%d",&m)!=EOF)
{
for( i=1; i<=m; i++ )
{
scanf_s("%d",&n);
for( j=1; j<=n; j++ )
{
sum=0;
s*=-1;
sum+=(float)s*1/j;
}
printf("%.2f\n",sum);
}
}
return 0;
}
#include "stdio.h"
int main()
{
int n,m,i,j,s=-1;
float sum=0;
while(scanf("%d",&m)!=EOF)
{
for( i=1; i<=m; i++ )
{
scanf("%d",&n);
sum=0; s=-1;//修改
for( j=1; j<=n; j++ )
{
//sum=0; 修改
s*=-1;
sum+=(float)s*1.0/j;//修改
}
printf("%.2f\n",sum);
}
}
}
因为你只通过了部分测试数据,没有通过后台的全部数据,考虑特殊数据和边界数据的处理