开始是信心满满的。看了眼题目,可以轻松AC的啦。于是代码如下

​
#include<stdio.h>
int main()
{
	int n, i;
	while(scanf("%d", &n) != EOF){
		while(n--){
			double sum = 0;
			int x;
			scanf("%d", &x);
			
			for(i = 1; i <= x; i++){
				if(i % 2 == 1)
					sum = sum + (1/i);	
				else
					sum = sum - (1/i);
			}
			printf("%.2lf\n", sum);
		}	
	}
	
	return 0; 
}

​

结果不管输啥输出都是1.00,思考半天发现,1/n(n≠0)都是0啊。

加个double?哦内部已经为0了,就算double了也是0.00。。

突然想起来1.0啊,内部强制转换就完事了。

没错就是这样。

​
#include<stdio.h>
int main()
{
	int n, i;
	while(scanf("%d", &n) != EOF){
		while(n--){
			double sum = 0;
			int x;
			scanf("%d", &x);
			
			for(i = 1; i <= x; i++){
				if(i % 2 == 1)
					sum = sum + (1.0/i);	
				else
					sum = sum - (1.0/i);
			}
			printf("%.2lf\n", sum);
		}	
	}
	
	return 0; 
}

​

如果你不放心,加个double也行,哈哈哈。

记录一次小坑。