解题思路:
注意事项:
参考代码:
#include<stdio.h> int main(){ char a[130][130]; int df[4][2]={{-1,1},{1,1},{1,-1},{-1,-1}}; //第一个数是行偏移值 第二个是列偏移值 右上 右下 左下 左上 int n,x,x1,x2,y1; //x是中心位置 x1 x2是偏移量 scanf("%d",&n); x=(n*4+5)/2 +1; //计算中心点的坐标 (横纵相等) for(int i=x-2;i<=x+2;i++) a[x][i]='$',a[i][x]='$'; for(int i=1,x1=x+4,x2=x-4;i<=n;i++,x1+=2,x2-=2) x1 x2是按照每次增加或减少两种 for(int k=x-i*2;k<=x+i*2;k++){ //对相连$部分处进行填充 a[x1][k]='$'; a[k][x1]='$'; a[x2][k]='$'; a[k][x2]='$'; } for(int i=0;i<4;i++){ //四个方向 x1=x+df[i][0]*2; y1=x+df[i][1]*2; 初始化某方向上的起始点 for(int j=1;j<=n;j++){ a[x1][y1]='$'; a[x1+df[i][0]][y1]='$'; a[x1][y1+df[i][1]]='$'; x1=x1+df[i][0]*2; y1=y1+df[i][1]*2; } } for(int i=1;i<=n*4+5;i++){ //打印 for(int j=1;j<=n*4+5;j++) if(a[i][j]=='$') printf("%c",a[i][j]); else printf("."); printf("\n"); } return 0; }
0.0分
4 人评分
高精度加法 (C++代码)(大数加法)浏览:1008 |
C二级辅导-进制转换 (C语言代码)浏览:657 |
C语言训练-立方和不等式 (C语言代码)浏览:779 |
字符逆序 (C语言代码)浏览:506 |
关于float,double变量的几点说明浏览:1926 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:756 |
C二级辅导-公约公倍 (C语言代码)浏览:537 |
Tom数 (C语言代码)浏览:598 |
C语言程序设计教程(第三版)课后习题12.6 (C语言代码)浏览:732 |
输入输出格式练习 (C语言代码)浏览:773 |