这是来自球体在线判断的编码问题,我没有得到这个代码的正确输出,我有点知道为什么,只是想询问是否使用goto(x,y)将有助于纠正此输出问题。每次循环后cusor的位置导致不希望的输出。任何人都可以建议一种纠正方法吗?
这是问题
问题
使用两个字符:。 (点)和*(星号)打印网格状图案。网格将有l行,c列,并且网格的每个方形元素的高度和宽度将等于s。
此外,每个网格元素都有一个对角线。网格第一行中第一个方块的对角线朝向右下角 - 使用\(反斜杠)字符进行打印;而下一个对角线将指向右上角 - 使用/(斜杠)字符打印它。交替打印连续的对角线(请参阅下面的示例)。 输入
给出t - 测试用例的数量和每个测试用例的三个正整数:l - 行数,c - 网格中的列数和s - 单个正方形的大小元件。 输出
对于每个测试用例输出所请求的模式(请查看示例)。在连续模式之间使用一个换行符。
示例 输入: 3 3 1 2 4 4 1 2 5 2
输出:
****
*\.*
*.\*
****
*./*
*/.*
****
*\.*
*.\*
****
*********
*\*/*\*/*
*********
*/*\*/*\*
*********
*\*/*\*/*
*********
*/*\*/*\*
*********
****************
*\.*./*\.*./*\.*
*.\*/.*.\*/.*.\*
****************
*./*\.*./*\.*./*
*/.*.\*/.*.\*/.*
****************
这是我的代码
#include<iostream>
using namespace std;
int main()
{
int i,j,k,l,c,s,t;
void basic(int,int,int);
cin>>t;
k=0;
while(k<t)
{
cin>>l>>c>>s;
for(i=1;i<=l;i++)
{
for(j=1;j<=c;j++)
{
basic(i,j,s);
}
cout<<"\n";
}
k++;
}
}
void basic(int i,int j,int s)
{
int m,n,x,p,q;
x=s+2;
if(j==1)
p=0;
else
p=1;
if(i==1)
q=0;
else
q=1;
for(m=q;m<x;m++)
{
for(n=p;n<x;n++)
{
if(m%(x-1)==0||n%(x-1)==0)
cout<<"*";
else
{
if((i+j)%2==0)
{
if(m==n)
cout<<"\\";
else
cout<<".";
}
else
{
if((m+n)%(x-1)==0)
cout<<"/";
else
cout<<".";
}
}
}
cout<<"\n";
}
}`