习题3-5旋转(ratate)
问题描述:
输入一个n*n字符矩阵,把它左转90°后输出 发现规律:同一行的行号变成列号,列好颠倒顺序变成行号
其实不用真的“旋转”字符数组, 只是换个角度看原来的矩阵。
也就是把原矩阵的右边想象成上边,就是直接从原矩阵的右边开始读入字符输出。
# include<iostream>
# include<stdio.h>
# include<string.h>
# define MAXN 100+10
char s[MAXN][MAXN];
char ss[MAXN][MAXN];
using namespace std;
int main()
{
int n;
scanf("%d",&n);
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)scanf("%d",&s[i][j]);
//关键代码
for (int i = 0; i < n; i++)
{
for (int j = n-1; j >= 0; j--)
{
ss[j][i]=s[i][n-1-j];
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf("%d ",ss[i][j]);
}
printf("\n");
}
return 0;
}
#include <stdio.h>
#include <time.h>
#define MAXN 1000 + 10
char Array[MAXN][MAXN];
int main(){
char temp, flag, a = 0, b = 0, n;
while(1){
flag = scanf("%c", &temp);
if(flag == EOF) break;
if(temp != '\n')
Array[a][b++] = temp;
else{
a++;
b = 0;
}
}
n = a;
printf("\n");
for(b = n - 1; b >= 0; b--)
{
for(a = 0; a < n; a++)
printf("%c", Array[a][b]);
printf("\n");
}
return 0;
}
#include<string.h>
#include <iostream>
#include <string>
#include <ctype.h>
using namespace std;
int s[1000][1000];
int ss[1000][1000];
int main(int argc, char *argv[])
{
int n;
int i,j;
scanf("%d",&n);
for ( i = 0; i < n; i++)
for (j = 0; j < n; j++)
scanf("%d",&s[i][j]);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
ss[n-j-1][i]=s[i][j];
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d ",ss[i][j]);
printf("\n");
}
return 0;
}