打印字符序列

时间:2016-02-03 17:51:41

标签: c++

问题    使用两个字符:。 (点)和*(星号)打印网格状图案。网格将有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;
}

问题 给编译错误!!!无法找出原因?

1 个答案:

答案 0 :(得分:3)

如果您注意到,cout<<'\';第二个'不是相同的颜色。这是因为\是转义字符。它正在逃避'。只要您想使用反斜杠字符本身,就需要将其更改为\\

希望这有帮助!