法一:
#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;
}