C++输入一个n*n的字符矩阵,把它左转90度后输出.
输入仅包含一个测试样例。第一行是一个正整数n(0<n<=10)。接下来的n行输入n*n的字符矩阵,每行n个字符,字符之间没有分隔。输出格式将左转90度的矩阵分n行输出,每...
输入仅包含一个测试样例。
第一行是一个正整数n(0<n<=10)。
接下来的n行输入n*n的字符矩阵,每行n个字符,字符之间没有分隔。
输出格式
将左转90度的矩阵分n行输出,每行n个字符,字符之间没有分隔。
样例输入
3
abc
def
ghi 展开
第一行是一个正整数n(0<n<=10)。
接下来的n行输入n*n的字符矩阵,每行n个字符,字符之间没有分隔。
输出格式
将左转90度的矩阵分n行输出,每行n个字符,字符之间没有分隔。
样例输入
3
abc
def
ghi 展开
2个回答
展开全部
1、矩阵的转置就是矩阵的行与列的转换。
2、矩阵左转90度就是把现有矩阵每一行向左转90角变成列形成的新矩阵,也就是整个矩阵逆时针转90度后得到矩阵。
3、C++示例,程序中为避免手动输入字符的麻烦,只输入n,字符由随机数产生。
#include <iostream>
#include <cstdlib>
#define rnd(x)(rand() % x);
using namespace std;
int main(int argc, char *argv[])
{
char c[50][50];
int n,i,j;
isr:
cout<<"input n,2=<n<=25"<<endl;
cin>>n;
if(n<2||n>50)goto isr;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
c[i][j]=97+rnd(25);
cout<<c[i][j];
}
cout<<endl;
}
cout<<endl;
for(i=n-1;i>=0;i--){
for(j=0;j<n;j++){
cout<<c[j][i];
}
cout<<endl;
}
cout<<endl<<endl;
getchar();
return 0;
}
展开全部
#include <iostream>
using namespace std;
void print_matrix(char *matrix, int size)
{
for (int row = 0; row < size; row ++)
{
for (int col = 0; col < size; col ++)
cout << matrix[row * size + col];
cout << endl;
}
cout << endl;
}
void input_matrix(char *&matrix, int& size)
{
cin >> size;
matrix = new char[size*size];
for (int i = 0; i < size*size; i ++)
cin >> matrix[i];
}
void transpose_matrix(char *matrix, int size)
{
for (int row = 0; row < size; row ++)
{
for (int col = 0; col < size; col ++)
if (row < col)
{
char temp = matrix[row * size + col];
matrix[row * size + col] = matrix[col * size + row];
matrix[col * size + row] = temp;
}
}
}
void test_data(char *&matrix, int &size)
{
size = 3;
matrix = new char[size*size];
for (int i = 0; i < size*size; i ++)
matrix[i] = ((int)'a') + i;
}
int main()
{
char *matrix;
int size;
//test_data(matrix, size);
input_matrix(matrix, size);
print_matrix(matrix, size);
transpose_matrix(matrix, size);
print_matrix(matrix, size);
delete []matrix;
return 0;
}
using namespace std;
void print_matrix(char *matrix, int size)
{
for (int row = 0; row < size; row ++)
{
for (int col = 0; col < size; col ++)
cout << matrix[row * size + col];
cout << endl;
}
cout << endl;
}
void input_matrix(char *&matrix, int& size)
{
cin >> size;
matrix = new char[size*size];
for (int i = 0; i < size*size; i ++)
cin >> matrix[i];
}
void transpose_matrix(char *matrix, int size)
{
for (int row = 0; row < size; row ++)
{
for (int col = 0; col < size; col ++)
if (row < col)
{
char temp = matrix[row * size + col];
matrix[row * size + col] = matrix[col * size + row];
matrix[col * size + row] = temp;
}
}
}
void test_data(char *&matrix, int &size)
{
size = 3;
matrix = new char[size*size];
for (int i = 0; i < size*size; i ++)
matrix[i] = ((int)'a') + i;
}
int main()
{
char *matrix;
int size;
//test_data(matrix, size);
input_matrix(matrix, size);
print_matrix(matrix, size);
transpose_matrix(matrix, size);
print_matrix(matrix, size);
delete []matrix;
return 0;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询