这是一段错误的代码。
(如算法错误,双精度sum用整型定义,直接写(-1)的n次方等)
但我发现了一个很奇怪的现象:
using namespace std;
int n;
int sum;
int main()
{
scanf("%d\n",&n);
for(int i=1;i<=n;i++)
{
double a=(double)1/n;
int b=n-1;
int z=(-1)^b;
printf("%.4lf %d %d\n",a,b,z);
sum+=(double)z*a;
}
printf("%.4lf\n",sum);
return 0;
}
为什么中间的变量输出(printf("%.4lf %d %d\n",a,b,z);)
会改变结果输出?
如:将该句注释掉后,输出为:
但将该句取消注释后变为:
可见答案从0.0000变为0.5000;
(ps.本人初学,还请细心解释,非常感谢)
这个变量sum要初始化吧,不初始化结果是什么都不奇怪
有些字符被吃掉了,不知道你原来的代码到底是什么,没法说
– jakio6 4年前