完整题目描述
题目: 打印X形状
题目要求:
给定一个整数 n
(n
为奇数),使用编程语言(如 PHP、Python、JavaScript)编写一个程序,以打印出一个由星号(*)组成的X形状,其中X的高度和宽度都基于 n
的值。X形状的中心在图形的正中央,且其四个角应触及图形的边界。
示例:
如果 n = 5
,则打印出的X形状如下:
*****
* *
* *
*
*****
PHP 代码示例
<?php
function printX($n) {
if ($n % 2 == 0) {
echo "n must be odd.";
return;
}
// 上半部分
for ($i = 0; $i < $n; $i++) {
for ($j = 0; $j < $n; $j++) {
// 打印X的上半部分
if ($i == 0 || $i == $n - 1 || $j == 0 || $j == $n - 1 || $i == $j || $i + $j == $n - 1) {
echo "*";
} else {
echo " ";
}
}
echo "\n";
}
// 下半部分,除了第一行和最后一行
for ($i = $n - 2; $i > $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 代码示例
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 代码示例
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示例中有提及),但在实际应用中可能需要添加更详细的错误处理。