题目描述
观察这个图形,它是由一系列正方形的星号方框嵌套而成
在上边的例子中,最外方框的边长为 10.
本题的任务就是从标准输入获得一个整数 (1 < 100),程序则生成套着的字型星号方,其最外层方相的边长为n。
#include<stdio.h>
int main() {
int n;
scanf("%d",&n);
// printf("n为%d",n);
int arr[n][n];
//初始化数组内容全部为0
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
arr[i][j] = 0;
}
}
//处理数组
int margins = 0;
for(int k = n; k > 0;) { //每次-4
// printf("k = %d", k);
//对每一轮数组进行处理
int real_margins = margins / 2; //真正的边距(需要画的离最外面的那条边的距离)
// printf(" real_margins 为%d", real_margins );
for(int i = real_margins; i < real_margins + k; i++) {
if(i == real_margins || i == real_margins + k - 1) {
//第一行或者是最后一行全部显示
for(int j = real_margins; j < real_margins + k; j++) {
arr[i][j] = 1;
}
} else {
//不是首行或尾行就只需要画开头和结尾就行
arr[i][real_margins] = 1;
arr[i][real_margins + k - 1] = 1;
}
}
k = k - 4;
margins = margins + 4;
}
//根据数组显示图像
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(arr[i][j] == 1){
printf("*");
}else{
printf(" ");
}
}
printf("\n");
}
}