【题目描述】
Yashem66学长有严重的强迫症!他完全无法忍受那些令他抓狂的东西,比如文具袋里的直尺,比如画得不规范的立方体。他总是自言自语:强人♂所难。
请写出一个程序,程序在读入立方体的三个棱长后,输出一个格式如样例的“立方体”。
【输入】
每个测试点一组测试数据,每组数据包含三个数字,表示立方体的长、宽、高分别为a,b,c。
【输出】
输出一个规定尺寸的立方体(形式如样例)。
【样例1】
Input1:
1 1 1
Output1:
…±+
././|
±+.+
|.|/.
±+…
【样例2】
Input2:
6 2 4
Output2:
…±±±±±±+
…/././././././|
…±±±±±±+.+
./././././././|/|
±±±±±±+.+.+
|.|.|.|.|.|.|/|/|
±±±±±±+.+.+
|.|.|.|.|.|.|/|/|
±±±±±±+.+.+
|.|.|.|.|.|.|/|/.
±±±±±±+.+…
|.|.|.|.|.|.|/…
±±±±±±+…
【数据范围与约定】
对于100%的数据满足 — a,b,c<=20
(提示)把样例复制到记事本里用等宽字体看体验更佳。
题解
模拟,详见代码
代码
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
int a,b,c;
int main()
{
cin>>a>>b>>c;
for(int i=1;i<=(2*(b+c)+1);i++)
{
if(i%2==1 && i<=(2*b))
{
for(int j=1;j<=2*(b-i/2);j++) cout<<".";
for(int j=2*(b-i/2)+1;j<=2*(b-i/2)+a*2;j+=2) cout<<"+-";
cout<<"+";
if(b<c || i<=(2*c+1)) for(int j=2*(b-i/2)+a*2+2;j<=2*(a+b)+1;j+=2) cout<<".+";
else
{
cout<<".";
for(int j=1;j< =c;j++) cout<<"+.";
for(int j=2*(b-i/2)+a*2+2*c+3;j<=2*(a+b)+1;j++) cout<<".";
}
cout<<endl;
continue;
}
if(i%2==0 && i<=(2*b))
{
for(int j=1;j<=2*(b-i/2)+1;j++) cout<<".";
for(int j=2*(b-i/2)+1;j<=2*(b-i/2)+a*2;j+=2) cout<<"/.";
if(b<c || i<=(2*c+1)) for(int j=2*(b-i/2)+a*2+2;j<=2*(a+b)+1;j+=2) cout<<"/|";
else
{
cout<<"/";
for(int j=1;j<=c;j++) cout<<"|/";
for(int j=2*(b-i/2)+a*2+2*c+3;j<=2*(a+b)+1;j++) cout<<".";
}
cout<<endl;
continue;
}
if(i%2==1 && i>(2*b)&& i<=2*c+1)
{
for(int j=1;j<=2*a;j+=2) cout<<"+-";
cout<<"+";
for(int j=2*(a+1);j<=2*(a+b)+1;j+=2) cout<<".+";
cout<<endl;
continue;
}
if(i%2==0 && i>(2*b) && i<=2*c+1)
{
for(int j=1;j<=2*a;j+=2) cout<<"|.";
cout<<"|";
for(int j=2*(a+1);j<=2*(a+b)+1;j+=2) cout<<"/|";
cout<<endl;
continue;
}
if(i%2==1 && i>(2*c+1))
{
for(int j=1;j<=2*a;j+=2) cout<<"+-";
cout<<"+";
int k=(2*(c+b)+1-i)/2+1;
for(int j=1;j<=k-1;j++) cout<<".+";
for(int j=2*a+1+2*k;j<=2*(a+b)+2;j++) cout<<".";
cout<<endl;
continue;
}
if(i%2==0 && i>(2*c+1))
{
for(int j=1;j<=2*a;j+=2) cout<<"|.";
int k=(2*(c+b)+1-i)/2+1;
for(int j=1;j<=k;j++) cout<<"|/";
for(int j=2*a+1+2*k;j<=2*(a+b)+1;j++) cout<<".";
cout<<endl;
continue;
}
}
return 0;
}
若您觉得此篇博客写得不错,请别忘了点赞并关注我哦 >_<