本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印java代码
时间: 2023-05-26 15:07:05 浏览: 80
n = int(input())
symbol = input()
# 初始化层数
layer = 1
# 计算最大层数
while (2*layer-1)*(2*layer-1) <= n:
layer += 1
layer -= 1
# 打印沙漏
count = 2*layer-1
for i in range(layer):
print(" "*(i) + symbol*(count-2*i))
for i in range(layer-2, -1, -1):
print(" "*(i) + symbol*(count-2*i))
print(n-(2*layer-1)*(2*layer-1)+1)
相关问题
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
```
*****
***
*
***
*****
```
输入格式:
输入在一行中给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的符号阵列,然后在此基础上按照题目要求打印沙漏。
输入样例:
19 *
输出样例:
*****
*****
*****
***
***
*
***
***
*****
*****
```python
n,s=map(str,input().split())
n=int(n)
i=1
while i*(i+1)<=n:
i+=2 #最大i
j=i-2 #最大j j+2是沙漏的高度,沿用之前的j
while j>=1:#第一部分
print(' '*(i-j),end='')
print(s*j)
j-=2
j+=2
while j<=i:
print(' '*(i-j),end='')
print(s*j)
j+=2
print(n-(i-2)*(i-1))#剩余的字符数量
```
### C++ 代码
```cpp
#include <iostream>
#include <math.h>
using namespace std;
int main() {
int n, i = 1, j = 1;
char c;
cin >> n >> c;
while (i * i + 1 < n) i += 2;
j = (n - i * i + 1) / 2; // 计算出第二部分沙漏的半高度,下同
for (int k = i; k >= 1; k -= 2) { // 第一部分
for (int t = 1; t < i - k + 1; t += 2) cout << " ";
for (int t = 1; t <= k; t++) cout << c;
cout << endl;
}
for (int k = 3; k <= i; k += 2) { // 第二部分
for (int t = 1; t < i - k + 1; t += 2) cout << " ";
for (int t = 1; t <= k; t++) cout << c;
cout << endl;
}
cout << n - i * i + 1 << endl; // 第三部分,直接输出即可
return 0;
}
```
注意:有可能最后一个沙漏的底部不能正好放得下两个,这个时候直接输出剩下的 个字符即可,跟沙漏之间不用加空行。如下:
```python
n,s=map(str,input().split())
n=int(n)
i=1
while i*i<=n:
i+=2 #最大i
i-=2 #恢复 i 的值
j=i # j 初始值是沙漏中间那个字符的行号 j+2是沙漏的高度
while j>=1: #第一部分
print(' '*(i-j),end='')
print(s*j)
j-=2
j+=4
while j<=i: #第三部分
print(' '*(i-j),end='')
print(s*j)
j+=2
print(n-(i+2)**2+1)#第二部分,直接计算出即可
```
python本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
我可以回答这个问题。以下是 Python 代码实现:
```
def print_diamond(n):
# 计算沙漏的高度
height = (n + 1) // 2
# 打印上半部分
for i in range(height):
# 打印空格
print(' ' * i, end='')
# 打印星号
print('*' * (n - 2 * i), end='')
# 换行
print()
# 打印下半部分
for i in range(height - 2, -1, -1):
# 打印空格
print(' ' * i, end='')
# 打印星号
print('*' * (n - 2 * i), end='')
# 换行
print()
# 测试
print_diamond(17)
```
输出结果为:
```
*****************
***************
*************
***********
*********
*******
*****
***
*
***
*****
*******
*********
***********
*************
***************
*****************
```
希望能够帮到你!
阅读全文