当前位置: 面试刷题>> 打印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示例中有提及),但在实际应用中可能需要添加更详细的错误处理。