二维数组应用

题目描述

观察这个图形,它是由一系列正方形的星号方框嵌套而成
在上边的例子中,最外方框的边长为 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");
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值