2018.3.12科大讯飞C++编程题3 有做出来的大佬吗?
// 为什么通过率零?是因为 输入的最后一行每个字符之间都有一个空格吗? 在本地IDE上调 没有空格时两个例子都能通过。难道是因为考试调试用的数据是最后一行每个字符之间都有一个空格?郁闷!#include<iostream>
#include<algorithm>
#include<vector>
#include<string.h>
#include<string>
using namespace std;
int x[100][100];
int y[100][100];
int n;
void func(char ch)
{
int i, j;
switch (ch)
{
case '<'://左旋
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
y[i][j] = x[(n - 1) - j][i];
if (y[i][j] == 0)
y[i][j] = 1;
else if (y[i][j] == 1)
y[i][j] = 2;
else if (y[i][j] == 2)
y[i][j] = 3;
else if (y[i][j] == 3)
y[i][j] = 0;
else if (y[i][j] == 6)
y[i][j] = 7;
else if (y[i][j] == 7)
y[i][j] = 6;
else if (y[i][j] == 8)
y[i][j] = 9;
else if (y[i][j] == 9)
y[i][j] = 8;
}
break;
case '>'://右旋
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
for (j = 0; j < n; j++)
{
y[i][j] = x[j][(n - 1) - i];
if (y[i][j] == 0)
y[i][j] = 3;
else if (y[i][j] == 1)
y[i][j] = 0;
else if (y[i][j] == 2)
y[i][j] = 1;
else if (y[i][j] == 3)
y[i][j] = 2;
else if (y[i][j] == 6)
y[i][j] = 7;
else if (y[i][j] == 7)
y[i][j] = 6;
else if (y[i][j] == 8)
y[i][j] = 9;
else if (y[i][j] == 9)
y[i][j] = 8;
}
break;
case '|'://垂直
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
y[i][j] = x[(n - 1) - i][j];
if (y[i][j] == 1)
y[i][j] = 3;
else if (y[i][j] == 3)
y[i][j] = 1;
else if (y[i][j] == 8)
y[i][j] = 9;
else if (y[i][j] == 9)
y[i][j] = 8;
}
break;
case '-'://水平
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
y[i][j] = x[i][(n - 1) - j];
if (y[i][j] == 0)
y[i][j] = 2;
else if (y[i][j] == 2)
y[i][j] = 0;
else if (y[i][j] == 8)
y[i][j] = 9;
else if (y[i][j] == 9)
y[i][j] = 8;
}
break;
case '\\'://对角线
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
y[i][j] = x[j][i];
if (y[i][j] == 0)
y[i][j] = 1;
else if (y[i][j] == 1)
y[i][j] = 0;
else if (y[i][j] == 2)
y[i][j] = 3;
else if (y[i][j] == 3)
y[i][j] = 2;
else if (y[i][j] == 6)
y[i][j] = 7;
else if (y[i][j] == 7)
y[i][j] = 6;
}
break;
case '/'://反对角线
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
y[i][j] = x[(n - 1) - j][(n - 1) - i];
if (y[i][j] == 0)
y[i][j] = 3;
else if (y[i][j] == 3)
y[i][j] = 0;
else if (y[i][j] == 2)
y[i][j] = 1;
else if (y[i][j] == 1)
y[i][j] = 2;
else if (y[i][j] == 6)
y[i][j] = 7;
else if (y[i][j] == 7)
y[i][j] = 6;
}
break;
default:
break;
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
x[i][j] = y[i][j];
}
}
}
int main(){
long long i, j;
long long k, l, m;
char s[100][101];
char s2[1000000];
long len;
while (cin >> n)
{
for (i = 0; i < n; i++)
cin >> s[i];
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (s[i][j] == '^')
x[i][j] = 0;
else if (s[i][j] == '<')
x[i][j] = 1;
else if (s[i][j] == 'v')
x[i][j] = 2;
else if (s[i][j] == '>')
x[i][j] = 3;
else if (s[i][j] == 'o')
x[i][j] = 4;
else if (s[i][j] == 'x')
x[i][j] = 5;
else if (s[i][j] == '|')
x[i][j] = 6;
else if (s[i][j] == '-')
x[i][j] = 7;
else if (s[i][j] == '/')
x[i][j] = 8;
else if (s[i][j] == '\\')
x[i][j] = 9;
}
}
cin >> s2;
len = strlen(s2);
for (i = 0; i < len; i++)
func(s2[i]);
//数字转char
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (x[i][j] ==0 )
s[i][j] = '^';
else if (x[i][j] == 1)
s[i][j] ='<';
else if (x[i][j] ==2)
s[i][j] = 'v';
else if (x[i][j] ==3)
s[i][j] = '>';
else if (x[i][j] ==4 )
s[i][j] = 'o';
else if (x[i][j] == 5)
s[i][j] = 'x';
else if (x[i][j] == 6)
s[i][j] = '|';
else if (x[i][j] ==7 )
s[i][j] = '-';
else if (x[i][j] == 8)
s[i][j] = '/';
else if (x[i][j] ==9 )
s[i][j] = '\\';
}
}
for (i = 0; i < n; i++)
cout << s[i] << endl;
}
return 0;
}#笔试题目#