打印十字图

来源:互联网 发布:知乎远方光电怎么样 编辑:程序博客网 时间:2024/04/29 12:38
问题描述小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:..$$$$$$$$$$$$$....$...........$..$$$.$$$$$$$$$.$$$$...$.......$...$$.$$$.$$$$$.$$$.$$.$...$...$...$.$$.$.$$$.$.$$$.$.$$.$.$...$...$.$.$$.$.$.$$$$$.$.$.$$.$.$...$...$.$.$$.$.$$$.$.$$$.$.$$.$...$...$...$.$$.$$$.$$$$$.$$$.$$...$.......$...$$$$.$$$$$$$$$.$$$..$...........$....$$$$$$$$$$$$$..对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。输入格式一个正整数 n (n<30) 表示要求打印图形的层数。输出格式对应包围层数的该标志。样例输入11样例输出1..$$$$$....$...$..$$$.$.$$$$...$...$$.$$$$$.$$...$...$$$$.$.$$$..$...$....$$$$$..样例输入23样例输出2..$$$$$$$$$$$$$....$...........$..$$$.$$$$$$$$$.$$$$...$.......$...$$.$$$.$$$$$.$$$.$$.$...$...$...$.$$.$.$$$.$.$$$.$.$$.$.$...$...$.$.$$.$.$.$$$$$.$.$.$$.$.$...$...$.$.$$.$.$$$.$.$$$.$.$$.$...$...$...$.$$.$$$.$$$$$.$$$.$$...$.......$...$$$$.$$$$$$$$$.$$$..$...........$....$$$$$$$$$$$$$..提示请仔细观察样例,尤其要注意句点的数量和输出位置。


#include <stdio.h>char map[100][100];int main(int argc, char *argv[]){int n;while(scanf("%d",&n)!=EOF){int c,i,j;c=4*n+5;for(i=1;i<=c;i++){for(j=1;j<=c;j++){map[i][j]='.';}}for(i=1;i<=c/2;i++){if(i%2==0)continue;for(j=1;j<=c;j++){if(j<=(i+1)||j>c-i-1){}else{map[i][j]='$';}}}for(i=1;i<=c/2;i++){if(i%2==0)continue;for(j=1;j<=c;j++){if(j==i+2){map[i+1][j]='$';map[i+2][j]='$';map[i+2][j]='$';map[i+2][j-1]='$';map[i+2][j-2]='$';}if(j==c-i-1){map[i+1][j]='$';map[i+2][j]='$';map[i+2][j]='$';map[i+2][j+1]='$';map[i+2][j+2]='$';}}} for(j=1;j<=2*n;j++) { if(j%2==0)continue;for(i=1;i<=c;i++){if(i>=j+2){map[i][j]='$';} }  } int flag=1; for(j=c;j>=n*2+5;j--) { if(j%2==0)continue;flag++;for(i=1;i<=c;i++){if(i>=flag*2&&i<=j-2)map[i][j]='$';}  }for(i=1;i<=c/2;i++){for(j=1;j<=c;j++){printf("%c",map[i][j]);}printf("\n");}int h=c/2+1;for(j=1;j<=c;j++){if((j%2==1&&j<=(c-5)/2)||(j%2==1&&j>(c-5)/2+5))printf("$");else if(j>(c-5)/2&&j<=(c-5)/2+5)printf("$");else if((j%2==0&&j<=(c-5)/2)||(j%2==0&&j>(c-5)/2+5))printf(".");} printf("\n");for(i=c/2;i>=1;i--){for(j=1;j<=c;j++){printf("%c",map[i][j]);}printf("\n");}printf("\n");} return 0;}

原创粉丝点击