![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/613096687866150.jpg "#left")
真的不知道怎么搞的,请帮忙看看呗
用“*”打印图案,实在搞不懂
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 滴水不穿石 2022-11-19 19:58关注
//由于字符等宽度与高度不是相等的,长宽字符一样多是画不出正方形的。下面仅供参考。谢谢!
//提供思路,细节自己修改
#include <stdio.h> void draw(int n) { if(n<=16 || n>512)return; int m=n; int arr[m][n]; int i,j; //初始化 for(i=0;i<m;i++) { for(j = 0;j <n;j++) { arr[i][j]=0; } } //标记位置 for(i=0;i<m;i++) { for(j = 0;j <n;j++) { if(i==0 || j==0 || i==m-1 || j==n-1) { arr[i][j]=1; printf("*"); } else if(i<=m/2 && j<=n/2 && i+j==n/2 || (j>=n/4&&j<=n/2 && i==m/4) ||(i>=m/4&&i<=m/2&&j==n/4)) { //作出1/4然后根据对称关系翻转即可画出剩余3/4图形 arr[i][j]=1; arr[m-i-1][j]=1; arr[i][n-j-1]=1; arr[m-i-1][n-j-1]=1; printf("*"); } else if(i+j==n*3/4&&i>m/4 && i<m/2 &&j>n/4 && j<n/2) { arr[i][j]=1; arr[m-i-1][j]=1; arr[i][n-j-1]=1; arr[m-i-1][n-j-1]=1; printf("*"); } else printf(" "); } printf("\n"); } //输出 for(i=0;i<m;i++) { for(j = 0;j <n;j++) { if(arr[i][j]==1)printf("*"); else printf(" "); } puts(""); } puts(""); } int main(int argc, char** argv){ draw(28); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于#单片机#的问题:Lora通讯模块hc-14电路图求内部原理图
- ¥50 esp32 wroom 32e 芯片解锁
- ¥15 bywave配置文件写入失败
- ¥20 基于Simulink的ZPW2000轨道电路仿真
- ¥15 pycharm找不到在环境装好的opencv-python
- ¥15 在不同的执行界面调用同一个页面
- ¥20 基于51单片机的数字频率计
- ¥50 M3T长焦相机如何标定以及正射影像拼接问题
- ¥15 keepalived的虚拟VIP地址 ping -s 发包测试,只能通过1472字节以下的数据包(相关搜索:静态路由)
- ¥15 Mabatis查询数据