#include<stdio.h>
int main(){
int n,d;
int l = 1,g;
scanf("%d",&n);
d = n;
for(int i=0;i<2*n-1;i++){
g = l;
for(int j=d;j>1;j--){
printf(" ");
}//输出空格
for( ; g>0&&g<=2*n+1 ; g-- ){
printf("#");
}
for(int j=d;j>1;j--){
printf(" ");
}//输出空格
printf("\n");
if(i<n-1){
l += 2;
d--;
}else{
l -= 2;
d++;
}
}
return 0;
}
自己原先提交的时候参考的写法是:
#include<stdio.h>//打印菱形
int main()
{
int n,a,b=1;
scanf("%d",&n);
a=n;
for(int i=0;i<n;i++){
for(int i=a-1;i>0;i--){
printf(" ");
}
for(int i=0;i<b;i++){
printf("*");
}
printf("\n");
a--;
b+=2;
}
for(int i=0;i<n;i++){
a++;
b-=2;
if(a>1){
for(int i=a-1;i>0;i--){
printf(" ");
}
for(int i=0;i<b;i++){
printf("*");
}
printf("\n");
}
}
return 0;
}
相较于两个循环的方法,我改为了用一个循环和判断行数的if语句实现 打印菱形。
不确定哪个方法更好,记录下来以供后续评测。