
原题来自《C++程序设计》第五章习题5.21
曼哈顿距离
#include<iostream>
#include<iomanip> //使用setw的头文件
#include<cmath>
using namespace std;
int main() {
int m;
for (int i = 0; i < 8; i++) {
cout << setw(4 * (7 - i)) << ""; //打出左上三角形的空格,比如第六行,4个空
for (int j = 0; j < 15; j++) {
int sum = 128; //sum只能放置于此,若放置于最外层循环,那么之后每次循环,sum的值是以上一次循环为基础,sum放在这里可以保证每次循环sum初始值都是128
for (int k = 0; k < 8; k++) {
if (abs(i - 7) + abs(j - 7) == k) { //abs(i - 7) + abs(j - 7)是每个点到中心的距离, 横坐标差的绝对值加纵坐标差的绝对值。
m = k; //不能直接用k--,while里m一直减减到0,若是k--,下一次循环,k依然从0开始,在此陷入死循环
while (m--) {
sum /= 2;
}
cout << setw(4) << sum;
}
}
}
cout << endl;
}
return 0;
}
本文介绍了一个使用C++编程语言实现的曼哈顿距离计算示例。通过计算每个点到中心点的距离,并依据该距离调整数值大小来绘制出特定的图案。此代码展示了如何利用循环和条件判断来实现复杂的图形输出。
681

被折叠的 条评论
为什么被折叠?



