蓝桥历届试题——打印大X

打印大X
小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。
为了便于比对空格,所有的空白位置都以句点符来代替。


要求输入两个整数m n,表示笔的宽度,X的高度。用空格分开(0<m<n, 3<n<1000, 保证n是奇数)
要求输出一个大X


例如,用户输入:
3 9
程序应该输出:
***.....***
.***...***.
..***.***..
...*****...
....***....
...*****...
..***.***..
.***...***.
***.....***


(如有对齐问题,参看【图1.jpg】)


再例如,用户输入:
4 21
程序应该输出
****................****
.****..............****.
..****............****..
...****..........****...
....****........****....
.....****......****.....
......****....****......
.......****..****.......
........********........
.........******.........
..........****..........
.........******.........
........********........
.......****..****.......
......****....****......
.....****......****.....
....****........****....
...****..........****...
..****............****..
.****..............****.
****................****


(如有对齐问题,参看【图2.jpg】)


资源约定:
峰值内存消耗 < 256M
CPU消耗  < 1000ms




请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。


所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。


注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。


提交时,注意选择所期望的编译器类型。
思路:找规律,然后逐行打印,总行数为N,每行个数为M+N-1,先打印前一半,后打印下一半。
代码:
#include<stdio.h>
int M,N;
int main()
{
scanf("%d%d",&M,&N);
for(int i=0;i<N/2+1;i++)
{
for(int j=0;j<=M+N-1;j++)
{
if(j<i)
{
printf(".");
}
if((i+M)*2-N-M+1<=0)
{
if(j>=i&&j<M+i)
{
printf("*");
}
if(j>=i+M&&j<N+M-i-M-1)
{
printf(".");
}
if(j>=N+M-1-i-M&&j<N+M-1-i)
{
printf("*");
}
}
else
{
if(j>=i&&j<M+N-i-1)
{
printf("*");
}
}
if(j>=N+M-1-i&&j<N+M-1)
{
printf(".");
}


}
printf("\n");
}
for(int i=N/2-1;i>=0;i--)
{
for(int j=0;j<=M+N-1;j++)
{
if(j<i)
{
printf(".");
}
if((i+M)*2-N-M+1<=0)
{
if(j>=i&&j<M+i)
{
printf("*");
}
if(j>=i+M&&j<N+M-i-M-1)
{
printf(".");
}
if(j>=N+M-1-i-M&&j<N+M-1-i)
{
printf("*");
}
}
else
{
if(j>=i&&j<M+N-i-1)
{
printf("*");
}
}
if(j>=N+M-1-i&&j<N+M-1)
{
printf(".");
}


}
printf("\n");
}

return 0;
 } 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页