1 条题解
-
0
C :
#include<stdio.h> int main(){ int n,i,j,z,m; scanf("%d",&n); //负责行 for(i = 1;i <= n;i++){ //负责空格 for(j = 1;j <= n - i;j++){ printf(" "); } //负责打印大写的字母左边 for(m = i - 1;m >= 1;m--){ printf("%c",65+m); } //负责中间 printf("%c",65) ; //负责右边 for(z=1;z <= i - 1;z++){ printf("%c",65+z); } //负责换行 printf("\n"); } return 0; }C++ :
#include<iostream> using namespace std; int main(){ int i,j,n; cin>>n; char c; for(i=1;i<=n;i++){ for(j=1;j<=n-i;j++){ cout<<" "; } for(j=i;j>=2;j--){ c=j+64; cout<<c; } for(j=1;j<=i;j++){ c=j+64; cout<<c; } cout<<endl; } }Pascal :
var i,k,c:char; n:longint; begin readln(n); c:=chr(n+64);//计算出最后一排的最后一个字母 for i:='A' to c do//枚举每一排的最后一个字母 begin for k:=c downto succ(i) do write(' ');//开头的字母也是该排的最后一个字母,在这个字母前的字母为空格,所以输出空格,succ()用于取后继,可获得i后面一个字母 for k:=i downto 'A' do write(k);//从该排的最后一个字母打印到A for k:='B' to i do write(k);//从B打印到该排的最后一个字母,因为A已经打印,而每排只有一个A在中心,所以不要重复打印 writeln;//打印完一排,换行 end; end.Java :
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); for(int i=1;i<=n;i++){ for(int j=n-i;j>=1;j--){ System.out.print(" "); } for(int j=1;j<=2*i-1;j++){ char c; if(j<=i){ c=(char)(65+i-j); }else{ c=(char)(65+j-i); } System.out.print(c); } System.out.println(); } } }Python :
import math; n = int(input()) for i in range(1,n+1): for j in range(1,n-i+1): print(' ',end='') for k in range(1,2*i): print(chr(int(math.fabs(k-i))+65),end='') print()
- 1
信息
- ID
- 91
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 10
- 已通过
- 3
- 上传者