问题 使用两个字符:。 (点)和*(星号)打印网格状图案。网格将有l行,c列,并且网格的每个方形元素的高度和宽度将等于s。
此外,每个网格元素都有一个对角线。网格第一行中第一个方块的对角线朝向右下角 - 使用\(反斜杠)字符进行打印;而下一个对角线将指向右上角 - 使用/(斜杠)字符打印它。交替打印连续的对角线(请参阅下面的示例)。
输入
给出t - 测试用例的数量和每个测试用例的三个正整数:l - 行数,c - 网格中的列数和s - 单个正方形的大小元件。
输出
对于每个测试用例输出所请求的模式(请查看示例)。在连续模式之间使用一个换行符。
实施例
Input:
3
3 1 2
4 4 1
2 5 2
Output:
****
*\.*
*.\*
****
*./*
*/.*
****
*\.*
*.\*
****
*********
*\*/*\*/*
*********
*/*\*/*\*
*********
*\*/*\*/*
*********
*/*\*/*\*
*********
****************
*\.*./*\.*./*\.*
*.\*/.*.\*/.*.\*
****************
*./*\.*./*\.*./*
*/.*.\*/.*.\*/.*
****************
我的解决方案:
#include <iostream>
using namespace std;
int main()
{
int i,j,k,l,c,s,t;
cin>>t;
k=0;
while(k<t)
{
cin>>l>>c>>s;
for(i=0;i<(s-1)*l;i++)
{
for(j=0;j<(s-1)*c;j++)
{
if(i==j)
cout<<'\';
else
{
if(i%(s-1)==0||j%(s-1)==0)
cout<<'*';
else
{
if(i+j==(s-1))
cout<<'/';
else
cout<<'.';
}
}
}
cout<<"\n";
}
k++;
}
return 0;
}
问题 给编译错误!!!无法找出原因?
答案 0 :(得分:3)
如果您注意到,cout<<'\';
第二个'
不是相同的颜色。这是因为\
是转义字符。它正在逃避'
。只要您想使用反斜杠字符本身,就需要将其更改为\\
。
希望这有帮助!