int height, i, j, k, t; std::cout << "Enter the height of diamond: "; std::cin >> height; for (i = 0; i < height; i++) { t = std::abs((height >> 1) - i); for (j = 0; j < t; j++) std::cout << " "; for (k = 0; k < height - (t << 1); k++) std::cout << "*"; std::cout << std::endl; }
使用abs,便可以减少一半的循环,替代传统的先打印上半部分再打印下半部分的方案。
测试结果与预期相同: