当前位置: 面试刷题>> 打印X (经典算法题500道)


### 完整题目描述 **题目**: 打印X形状 **题目要求**: 给定一个整数 `n`(`n` 为奇数),使用编程语言(如 PHP、Python、JavaScript)编写一个程序,以打印出一个由星号(*)组成的X形状,其中X的高度和宽度都基于 `n` 的值。X形状的中心在图形的正中央,且其四个角应触及图形的边界。 **示例**: 如果 `n = 5`,则打印出的X形状如下: ``` ***** * * * * * ***** ``` ### PHP 代码示例 ```php $n / 2; $i--) { for ($j = 0; $j < $n; $j++) { // 打印X的下半部分 if ($j == $i || $j == $n - $i - 1) { echo "*"; } else { echo " "; } } echo "\n"; } } // 示例 $n = 5; printX($n); ?> ``` ### Python 代码示例 ```python def print_x(n): if n % 2 == 0: print("n must be odd.") return # 上半部分 for i in range(n): for j in range(n): if i == 0 or i == n-1 or j == 0 or j == n-1 or i == j or i + j == n - 1: print("*", end="") else: print(" ", end="") print() # 下半部分,除了第一行和最后一行 for i in range(n-2, n//2, -1): for j in range(n): if j == i or j == n - i - 1: print("*", end="") else: print(" ", end="") print() # 示例 n = 5 print_x(n) ``` ### JavaScript 代码示例 ```javascript function printX(n) { if (n % 2 === 0) { console.log("n must be odd."); return; } // 上半部分 for (let i = 0; i < n; i++) { let line = ''; for (let j = 0; j < n; j++) { if (i === 0 || i === n - 1 || j === 0 || j === n - 1 || i === j || i + j === n - 1) { line += '*'; } else { line += ' '; } } console.log(line); } // 下半部分,除了第一行和最后一行 for (let i = n - 2; i > Math.floor(n / 2); i--) { let line = ''; for (let j = 0; j < n; j++) { if (j === i || j === n - i - 1) { line += '*'; } else { line += ' '; } } console.log(line); } } // 示例 let n = 5; printX(n); ``` **注意**: 上述代码中的 `print_x`、`printX` 函数和PHP中的 `printX` 函数都实现了打印X形状的功能,但是请注意JavaScript和Python的示例使用了控制台输出来显示结果,而PHP示例则直接输出了HTML格式的换行符。此外,为了简化,这些代码示例没有处理非奇数输入的额外逻辑(尽管PHP示例中有提及),但在实际应用中可能需要添加更详细的错误处理。
推荐面试题