二维图片由一个个像素点组成,目前灰度图像使用一个0-255之间的整数表示某个像素点的像素值。编程完成图片旋转控制程序。
本题目要求读入2个整数m和n(<=20),作为图片的长宽尺寸。输入1个整数r,作为旋转角度(只能输入90 180 -90中的一个,90表示图形向左旋转90度,-90表示图形向右旋转90度)。然后按照行列输入图片像素值,
输入格式:
第一行:2个整数m和n(<=20)
第二行:2个整数r(只能是90 180 -90中的一个,否则提示:angle data error
第三行以后:输入m行n列的整数数据,必须在0-255之间,否则提示:matrix data error
以上输入的都是整数,若有非整数的数据输入,统一提示:data type error
输出格式:
按要求旋转后的图片矩阵数据
输入样例:
3 4
90
1 2 3 4
5 6 7 8
9 10 11 12
输出样例:
4 8 12
3 7 11
2 6 10
1 5 9
/*第一行:2个整数m和n(<=20)
第二行:2个整数r(只能是90 180 -90中的一个,否则提示:angle data error
第三行以后:输入m行n列的整数数据,必须在0-255之间,否则提示:matrix data error
以上输入的都是整数,若有非整数的数据输入,统一提示:data type error
按要求旋转后的图片矩阵数据*/
/*
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args)
{
Scanner in= new Scanner(System.in);
int n,m;
int r;
n=in.nextInt();
m=in.nextInt();
r=in.nextInt();
if(r!=90 && r!=-90 && r!=180){
System.out.println("angle data error");
System.exit(0);
}
in.nextLine();
String[][] arr = new String[n][m];
int i,j;
int p;//int
String reg="^\\d+$|-\\d+$";
for(i=0;i<n;i++){
String s=in.nextLine();
arr[i]=s.split(" ");
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(!(arr[i][j].matches(reg))){//判断是否是整型
System.out.println("data type error");
System.exit(0);
}
p=Integer.parseInt(arr[i][j]);
if(p<0 || p>255){//判断范围
System.out.println("matrix data error");
System.exit(0);
}
}
}
if(r==90){
for(i=m-1;i>=0;i--){
for(j=0;j<n;j++){
if(j==n-1)System.out.print(arr[j][i]);
else System.out.print(arr[j][i]+" ");
}
System.out.println();
}
}else if(r==-90){
for(i=0;i<m;i++){//4
for(j=n-1;j>=0;j--){
if(j==0)System.out.print(arr[j][i]);
else System.out.print(arr[j][i]+" ");
}
System.out.println();
}
}else if(r==180){
for(i=n-1;i>=0;i--){
for(j=m-1;j>=0;j--){
if(j==0)System.out.print(arr[i][j]);
else System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
in.close();
}
}*/
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
/*定义*/
int n,m;
int r;
int i,j;
n=in.nextInt();
m=in.nextInt();
r=in.nextInt();
if(r!=90 && r!=-90 && r!=180){//注意:这条判断语句只能放在【输入r语句】的后面,否则程序不予通过。
System.out.println("angle data error");
System.exit(0);
}
int[][] arr= new int[n][m];
/*输入*/
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(in.hasNextInt()){//注意:in.hasNextInt()只进行判断,不读取
arr[i][j]=in.nextInt();
if(arr[i][j]<0 || arr[i][j]>250){//判断是否超出范围
System.out.println("matrix data error");
System.exit(0);
}
}else{
System.out.println("data type error");
System.exit(0);
}
}
}
/*计算并输出:三种情况*/
if(r==90){
for(i=m-1;i>=0;i--){
for(j=0;j<n;j++){
if(j==n-1)System.out.print(arr[j][i]);//注意:注意格式,行末不要有空格
else System.out.print(arr[j][i]+" ");
}
System.out.println();
}
}else if(r==-90){
for(i=0;i<m;i++){//4
for(j=n-1;j>=0;j--){
if(j==0)System.out.print(arr[j][i]);
else System.out.print(arr[j][i]+" ");
}
System.out.println();
}
}else if(r==180){
for(i=n-1;i>=0;i--){
for(j=m-1;j>=0;j--){
if(j==0)System.out.print(arr[i][j]);
else System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
in.close();
}
}