法一:
#include<stdio.h>
#define N 7 //假设输出7层菱形
int main(){int i;//i控制第几行 int j;//j控制每一行空格的循环个数 int k;//k控制每一行*的循环次数 for(i=1;i<=4;i++){//将图形分为两部分,前四行(第一部分) for(j=1;j<=4-i;j++){//输出第i行的空格数 printf(" ");}for(k=1;k<=2*i-1;k++){//输出第i行的*数,2*i-1保证每一行为奇数个* printf("*");}printf("\n");//第i行完成,要换行,进入下次循环 }for(i=1;i<=3;i++){//同理输出后3行(下半部分) for(j=1;j<=i;j++){printf(" ");}for(k=1;k<=N-2*i;k++){printf("*");}printf("\n");}return 0;
}
法二:
#include<stdio.h>
#define N 7
int main(){int i,j,k;for(i=-N/2;i<=N/2;i++){k=i<0?N+i*2:N-i*2;//利用三目运算符区分上半部分还是下半部分 for(j=1;j<=3-k/2;j++){printf(" ");}for(j=1;j<=k;j++){printf("*");}printf("\n");}return 0;
}