唉,就这个题还得调试才能找到错误的地方,真郁闷!以后要注意除零的情况! #include <stdio.h> int main() { int i,m,n,flag; double num; scanf("%d",&n); while(n--) { scanf("%d",&m); flag=1;num=0; for(i=1;i<=m;i++) { num=num+flag*1.0/i; flag=-flag; } printf("%.2lf\n",num); } return 0; }