#include<stdio.h> int main() { int n; while(~scanf("%d",&n)) {//将菱形分成两部分 上部是n+1行打印 下部是n行打印 for(int j=1;j<=n+1;j++) { for(int i=0;i<=n-j;i++)//for(int i=0;i<=n-j-1;i++)上部分空格都少一个。 printf(" ");/*……………… □□□ □□ □*///可以看出,这是前面几种的题型相结合的。 for(int i=1;i<=j;i++) printf("* "); printf("\n"); } for(int j=0;j<n;j++)//分别对比上、下部分的打印‘ ’与‘* ’的for语句、交叉比对、会发现很像, /*仔细思考会发现 * 与* 抛开前者被提前处理的□□□不看,会发现打印*实际是一样的, * * ** 前者以‘* ’为一个单位,而后者以‘*’为一个单位 * * * *** */ { for(int i=0;i<=j;i++) printf(" ");/*□ □□ □□□ ………………*/ for(int i=j;i<n;i++) printf("* "); printf("\n"); } } return 0; }