求负整数的余数
我们通常使用a%n来获得一个介于0到n-1之间的数。然而,如果a是负数,则余数a%n也将是一个负数。例如-7 % 4 等于-3。 这个结果并不是我们所期望的,因为它并不是一个介于0到3之间的数,而且它与常规的数学定义也不同。在数学中,计算余数的方法是:从a开始,加上或减去n直到一个介于0到n-1之间的数为止。例如11除以4的余数是11-4-4 = 3; -7除以4 的余数是-7+4+4 = 1, 这与 -7%4的计算结果不同。在C/C++中,为了正确地计算负数的余数,可以用下面的公式:
int rem = n - 1 - (-a - 1) % n; /* if a is negative */
例如,如果a 为 -7, n 为4,则计算结果为3 - (7 -1) % 4 = 3 - 2 = 1.
-------------------------------------------------------------------------------
C++格式输出
1.用控制符setw来设置输出域的宽度。例如:
cout << setw(8);
2.用控制符setprecision设置浮点数的精度. 例如:
cout << setprecision(2);
3.用fixed 固定输出的小数宽度
cout << fixed;
因为只使用控制行setprecision并不能输出小数末尾的0. 例如,0.1只能输出为0.1, 而不是0.10.
结合三个控制符:
cout << fixed << setprecision(2) << setw(8) << x;
控制符setprecision和fixed只需使用一次,流将保持所指定的格式。然后,setw必须在每次输出时都要设定一次。
测试例子:
输出:
--From C++核心思想(Computing Concepts with C++ Essentials)