0
点赞
收藏
分享

微信扫一扫

实验08---7-08 很简单的图像操作——顺时针旋转90度

输入一个n行m列的黑白图像,将它顺时针旋转90度后输出。如果你没有更好的算法,可参照下图给出的思路完成本题目。

输入格式:
第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。
接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。

输出格式:
共m行,每行n个整数,为顺时针旋转90度后的图像。相邻两个整数之间用单个空格隔开。

输入样例:
3 3
1 2 3
4 5 6
7 8 9
输出样例:
在这里给出原图像顺时针旋转90度后的结果图像。例如:

7 4 1
8 5 2
9 6 3

自己写的

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void readarray(int (*arr)[100], int M, int N)
{
    int i, j, tmp;
    for (i = 0; i < M; i++)
    {
        for (j = 0; j < N; j++)
        {
            scanf("%d", &tmp);
            arr[i][j] = tmp;
        }
    }
}
int* turn90Degrees(int (*arr)[100], int M, int N)
{
    int i, j;
    static int arr0[100][100] = { 0 };

    for (i = 0; i < M; i++)
    {
        for (j = 0; j < N; j++)
        {
            arr0[j][M - 1 - i] = arr[i][j];
        }
    }
    return arr0;
}
void printarray(int (*arr)[100], int M, int N)
{
    int i, j;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
        {
            printf("%d ", arr[i][j]);

        }
        printf("\n");
    }
}
int main()
{
    int M, N;
    scanf("%d%d", &M, &N);
    int arr[100][100] = { 0 };
    readarray(arr, M, N);
    int(* arr1)[100][100] = turn90Degrees(arr, M, N);

    printarray(arr1, M, N);
    return 0;

}

老师写的

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int main()
{

    int n,m ,tmp;
    scanf("%d%d", &m,&n);
    int a[m][n];
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            scanf("%d", &a[i][j]);
        }
    }
    int b[n][m];
    for (int i = 0; i < n; i++) 
    {
        for (int j = 0; j < m; j++)  
        {
            b[i][j] = a[j][i];
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0,k=m-1; j <=k; j++,k--)
        {
            int tmp = b[i][j];
            b[i][j] = b[i][k];
            b[i][k] = tmp;
        }
    }
    for (int i = 0; i < n; i++) 
    {
        for (int j = 0; j < m; j++)  
        {
            printf("%d ", b[i][j]);
        }
        printf("\n");
    }
    return 0;
}
举报

相关推荐

0 条评论