2 条题解
-
0
#include<stdio.h> int main() { //第一层 int n; scanf("%d",&n); for(int i=0;i<n;i++) { printf("#"); } printf(" "); for(int i=0;i<n;i++) { if(i0||in-1) { printf("#"); } else { printf(" "); } } printf(" "); for(int i=0;i<n;i++) { printf("#"); } printf("\n");
//中间,这个地方花费了我很多时间 感谢 佬”饭圈女孩“ 现在差不多理解了 int b=n-1,c=(n+4),d=2*(n+1)-1,f=(n+2)*2+n/2+1;//这些变量是要来配合下面的循环标记的特位置 for(int kk=2;kk<=n-1;kk++,b--//对z的中间部分向前推进)//表示行数 { for(int j=1;j<3*n+4;j++)//表示列 { if(j==b||j==c||j==d||j==f//因为T的特殊位置总是那一列因此f的值不用变,靠kk换行就好)//判断是否位特殊位置 { printf("#"); } else { printf(" "); } } printf("\n");//这里容易写进第二个for循环里我现在理解了! if(c!=d)//对y中间部分输出的要求 { c++; d--; } } //最后一层 for(int i=0;i<n;i++) { printf("#"); } printf(" "); for(int i=0;i<n;i++) { if(i==(n+1)/2-1) { printf("#"); } else { printf(" "); } } printf(" "); for(int i=0;i<n;i++) { if(i==(n+1)/2-1) { printf("#"); } else { printf(" "); } } return 0;
//ok了 再次感谢我的佬!!!
}
-
-1
#include <stdio.h> //二维数组开主函数外面,默认全为0,下面将中间输出#部分进行标记 int m[1000][1000]; int main() { int n,i,j,a,b; scanf ("%d",&n); //Z的上下部分 for (i=1;i<=n;i++) { m[i][1]=1,m[i][n]=1; } a=n-1; //Z的中间部分 for (i=2;i<=n;i++) { for (j=1;j<=n;j++) { if (j==a) m[j][i]=1; } a--; } a=n+2,b=n+n+1; //Y的上半部分 for (j=1;j<=n/2;j++) { m[a][j]=1,m[b][j]=1; a++,b--; } //Y的下半部分 for (i=n/2+1;i<=n;i++) { m[n+2+n/2][i]=1; } //T的横杠 for (i=n2+3;i<=3n+2;i++) { m[i][1]=1; } //T的竖杠 for (i=2;i<=n;i++) { m[2n+3+n/2][i]=1; } //进行输出 for (i=1;i<=n;i++) { for (j=1;j<=3n+2;j++) { if (m[j][i]==1) printf ("#"); else printf (" "); } printf ("\n"); } return 0; }
- 1
信息
- ID
- 368
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 75
- 已通过
- 22
- 上传者