文章
34
粉丝
179
获赞
13
访问
201.8k
打印菱形,高度为奇数,这里的高度为总高度,所以最外层循环为 i<=(n+1)/2 (n/2向下取整)
1、分为上下两块打印
2、先打印空格,再打印*号
3、每行总的打印数为n,*号打印数为2*i-1(i为行数),那么空格数就是(n-(2*1-1))/2
4、下面那部分的打印相同,只是上面i值为1-(n+1)/2,下面是反过来的,唯一要注意的就是上下重叠的那行不需要重复打印,所以i为n/2
#include <iostream>
#include<stdio.h>
#include<string.h>
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
if(n==0) break;
for(int i=1;i<=(n+1)/2;i++){
for(int j=1;j<=(n-2*i+1)/2;j++)
printf(" ");
for(int k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
for(int i=n/2;i>=1;i--){
for(int j=1;j<=(n-2*i+1)/2;j++)
printf(" ");
for(int k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发