技巧:
取整的时候用到 floor(sqrt(x+0.5)),其中floor() 是抹零取整函数
错误:double x = 1 / (2 * i + 1);
改正:double x = 1.0 / (2 * i + 1);
方法:scanf循环(简单版本)
while (scanf("%d", &x) == 1),拍入 组合键 Ctrl-Z 就是 EOF,即可退出。
方法:文件输入输出重定向
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
方法:文件使用(常规方法)
FILE *fin, *fout;
fin = fopen("data.in", "rb"); fout = fopen("data.out", "wb");
fscanf(fin,"%d", &x); fprintf(fout, "%d %d %.3f\n", min, max, (double)s / n);
fclose(fin); fclose(fout);
陷阱:溢出
又乘又除的算法,例如,先约分处理n!/m!,可以减少溢出的概率。
技巧:printf的高级用法
printf("%*.*lf\n", 8, 4, (double)10/3);会输出8个字宽保留4位小数的浮点数运算结果
注意:浮点数
浮点数(double)之所以不能用 == 和 != ,是因为浮点数在内存中都是按精度来存储的,所以你看到的 3.12也许本来是3.123456取的小数点后2位位精度,所以当与另一个 3.12进行比较时可能会出现很多种情况,如果另一个3.12其实是3.121111取的小数点后2位位精度的话,那么两个数你看着相等,其实是不等的。