多组输入,一个整数(2~20)。
针对每行输入,输出用“*”组成的菱形,每个“*”后面有一个空格。
2
* * * * * * * * *
3
* * * * * * * * * * * * * * * *
4
* * * * * * * * * * * * * * * * * * * * * * * * *
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { int n = sc.nextInt(); List<String> remember = new ArrayList<>(n); for (int i = 1; i <=n+1; i++) { String str = String.join("",Collections.nCopies(n+1-i," ")); str+=String.join("",Collections.nCopies(i,"* ")); remember.add(str); } boolean flag = true; for (int i = 0; i >=0 ;) { if (i==remember.size()-1)flag=false; System.out.println(remember.get(i)); i= flag?++i:--i; } } } }
#include<iostream> using namespace std; //分为上下两个金字塔 int main() { int n; while(cin>>n) { for(int i=0;i<n+1;i++) {//上 for(int j=0;j<(n-i);j++) cout<<" "; for(int j=0;j<i+1;j++) cout<<"* "; cout<<endl; } for(int i=n;i>0;i--) {//下 for(int j=0;j<(n-i+1);j++) cout<<" "; for(int j=0;j<i;j++) cout<<"* "; cout<<endl; } } return 0; }
#include<stdio.h> int main() { int n; while( scanf("%d",&n) != EOF ) { for( int i = 0 ; i < ( n + 1 ) ; i++ ) //i=0,1,2 { for( int j = i ; j < n ; j++ ) printf(" "); //j=0~n,1~n,2~n for( int j = i ; j >= 0 ; j-- ) printf("* "); //j=0,1~0,2~0 printf("\n"); } for( int i = 0 ; i < n ; i++ ) //i=0, { for( int j = i ; j >= 0 ; j-- ) printf(" "); //j=0, for( int j = i ; j < n ; j++ ) printf("* "); //j=0~n, printf("\n"); } } return 0; }
#include<stdio.h> int main(void) { int num,i,j; while(scanf("%d",&num)!=EOF) { for(i=0;i<num;i++) { for(j=num-1;j>=i;j--)//上面的三角形每行要多出一个空格 { printf(" "); } for(j=0;j<=i;j++) { printf("* "); } printf("\n"); } for(i=0;i<num+1;i++) { for(j=1;j<=i;j++) { printf(" "); } for(j=num+1;j>i;j--) { printf("* "); } printf("\n"); } } return 0; }
while True: try: n = eval(input()) l= [] # 输入 4 获取[1,2,3,4,5,4,3,2,1] for i in range(1,n +1): # [1, 2, 3, 4] l.append(i) list_2 = l[::-1] # 把[1,2,3,4]倒序赋值给list_2 list_3 = l+[n+1]+list_2 #拼接为 [1,2,3,4]+[5]+[4,3,2,1] for i in list_3: # [123454321] print(' '*(n-i+1)+'* ' *i) # 这里要用+号,不能用,号。如果用逗号,要sep=''。 except: break
while True: try: n = int(input()) for i in range(1,2*n+2): if i <= n+1: print(" "*(n+1-i)+"* "*i) else: print(" "*(i-(n+1))+"* "*((n+1)-(i-(n+1)))) except: break
#include <stdio.h> int main() { int n; while(scanf("%d",&n)!=EOF){ int i,j; for(i=0;i<n;i++){ for(j=0;j<n-i;j++){ printf(" "); } for(j=0;j<i+1;j++){ printf("* "); } printf("\n"); } for(i=0;i<=n;i++){ printf("* "); } printf("\n"); for(i=n+1;i<2*n+1;i++){ for(j=0;j<i-n;j++){ printf(" "); } for(j=0;j<2*n+1-i;j++){ printf("* "); } printf("\n"); } } }
#include <cstdio> int main() { int a; while(~scanf("%d",&a)) { for(int i=0;i<=a;++i)//a+1行 上半部分 { for(int k=0;k<a-i;++k)//空格 printf(" "); for(int j=0;j<=i;++j)//*与空格 printf("* "); printf("\n"); } for(int i=a;i>0;--i)//a行 下半部分 { for(int k=0;k<=a-i;++k) printf(" "); for(int j=0;j<i;++j) printf("* "); printf("\n"); } } return 0; }
#include<bits/stdc++.h> using namespace std; int main(){ int n; while(cin >> n){ for(int i = 1; i <= n; i++){ for(int j = 0; j <= n - i; j++) cout << " "; for(int k = 0; k < i; k++) cout << "* "; cout << endl; } for(int i = 1; i <= n + 1; i++) cout << "* "; cout << endl; for(int i = 1; i <= n; i++){ for(int j = 0; j < i; j++) cout << " "; for(int k = 0; k <= n - i; k++) cout << "* "; cout << endl; } } return 0; }
/*思路 : 可以分成两个部分来看 上面是n行 下面是n+1行 for(j=0;j<n-i;j++) //如果这里要打印四个空格 4-0=4 三个空格4-1=3 两个空格4-2=2 for(j=0;j<=i;j++) //因为这里j都是每次从0开始的 //当i为0的时候打印零个 为1的时候打印一个 为2的时候打印两个 //...... //i随着变化而变化 for(j=0;j<i;j++) //打印空格 //当i为0的时候不打印 当i为1的时候打印一个空格 //当i为2的时候打印两个 ...... for(j=0;j<n+1-i;j++) //这里是因为是n+1行 所以要写成n+1 //这里是5的时候 i为0 就打印五个 //为4的时候 i为1 打印四个 //为3的时候 i为2 打印三个 //...... */ # include <stdio.h> int main () { int n = 0; while(scanf("%d",&n)!=EOF) { int i = 0; for(i = 0; i<n; i++) { //上半部分 int j = 0; //先打印空格 for(j=0;j<n-i;j++) //如果这里要打印四个空格 4-0=4 三个空格4-1=3 两个空格4-2=2 //...... { printf(" "); } //接下来打印 空格+星号 for(j=0;j<=i;j++) //因为这里j都是每次从0开始的 //当i为0的时候打印零个 为1的时候打印一个 为2的时候打印两个 //...... //i随着变化而变化 { printf("* "); } printf("\n"); } //下半部分 //n+1 行 //依旧是有空格加型号组成的 for(i=0;i<n+1;i++) { int j = 0; for(j=0;j<i;j++) //打印空格 //当i为0的时候不打印 当i为1的时候打印一个空格 //当i为2的时候打印两个 ...... { printf(" "); } for(j=0;j<n+1-i;j++) //这里是因为是n+1行 所以要写成n+1 //这里是5的时候 i为0 就打印五个 //为4的时候 i为1 打印四个 //为3的时候 i为2 打印三个 //...... { printf("* "); } printf("\n"); } } return 0; }
#include<stdio.h> int main() { int n=0; int i=0; int k=0; int j=0; int m=0; char ch1='*'; char ch2=' '; while(~scanf("%d",&n)) { for(i=1;i<=n;i++) { for(k=0;k<n+1-i;k++) printf("%c",ch2); for(j=0;j<i;j++) printf("%c ",ch1); printf("\n"); } for(m=0;m<n+1;m++) printf("%c ",ch1); printf("\n"); for(i=1;i<=n;i++) { for(k=1;k<=i;k++) printf("%c",ch2); for(j=n;j>=i;j--) printf("%c ",ch1); printf("\n"); } } return 0; }
#include<bits/stdc++.h> using namespace std; int main() { int n; while(cin >> n) { n++; for(int i=1;i<=n*2-1;i++) { int spaceNum = abs(i-n); int starNum = n-spaceNum; for(int j=0;j<spaceNum;j++) cout << " "; for(int j=0;j<starNum;j++) cout << "* "; cout << endl; } } return 0; }
#include <stdio.h> int main() { int n = 0; while (scanf("%d", &n) != EOF) { for (int i = 0; i < n + 1; i++) { for (int j = 0; j < n - i; j ++) { printf(" "); } for (int j = 0; j <= i ; j++) { printf("* "); } printf("\n"); } for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { printf(" "); } for (int j = 0; j < n - i; j++) { printf("* "); } printf("\n"); } } return 0; }
while True: try: n = int(input()) for i in range(0,n): temp = "* " * (i) + "*" m = 2 * n - 1 print(f"{temp:^{n*2+2}}") # ^居中,>居右,<居左对齐 for i in range(n, -1, -1): temp = "* " * (i) + "*" m = 2 * n - 1 print(f"{temp:^{n*2+2}}") # ^居中,>居右,<居左对齐 except Exception as e: break