第一次得满分
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1000+10;
const int M=1000+10;
int n,m,a[N][M],b[M][N];
int main()
{
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
scanf("%d",&a[i][j]);
}
memset(b,0,sizeof(b));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
b[j][i]=a[i][m-j-1];
/***b第i列上的元素与a第i行上的元素相同
*b第j行上的元素为a第m-j-1列上的元素
*即从第m个元素往前倒数
***/
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
printf("%d ",b[i][j]);
}
printf("\n");//注意打印格式!否则得0分
}
return 0;
}
遇到的问题:
- printf添了取地址符“&”,打印出地址;仔细检查后解决
- 矩阵与旋转矩阵的关系;通过代入下标值得出公式:b[j][i]=a[i][m-j-1],重点为“m-j-1”中的“j”,否则值不变
- 未按要求的矩阵形式打印出,得0分;在第一层for循环外添printf("\n")