`
xitong
  • 浏览: 6400014 次
文章分类
社区版块
存档分类
最新评论

C翻转

 
阅读更多

前言

北邮的上机题我见一道就必须ac一道,当年被刷的场景和心情一直是这一年多我拼的动力之一,挺好!

题目描述:

首先输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据。

操作类型有四种:
1 2 表示:90度,顺时针,翻转4个数
1 3 表示:90度,顺时针,翻转9个数
2 2 表示:90度,逆时针,翻转4个数
2 3 表示:90度,逆时针,翻转9个数

输入:

输入有多组数据。
每组输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据。

输出:

输出翻转后的数组。

样例输入:

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
1 3 1 1

样例输出:

11 6 1 4 5
12 7 2 9 10
13 8 3 14 15
16 17 18 19 20
21 22 23 24 25

考察重点

主要是考察矩阵的翻转,可以参考我之前的一篇博客:http://blog.csdn.net/zinss26914/article/details/8514920

AC代码

#include <stdio.h>
#include <stdlib.h>
 
void turn904(int (*a)[5], int (*b)[5], int row, int column, int type);
void turn909(int (*a)[5], int (*b)[5], int row, int column, int type);
 
int main()
{
    int i, j, t1, t2, row, column;
    int a[5][5], b[5][5];
 
    while(scanf("%d", &a[0][0]) != EOF)
    {
        //接收矩阵
        for(i = 0; i < 5; i ++)
        {
            for(j = 0; j < 5; j ++)
            {
                if(i == 0 && j == 0)
                {
                    continue;
                }else
                {
                    scanf("%d", &a[i][j]);
                }
            }
        }
 
        //接收旋转参数
        scanf("%d%d%d%d", &t1, &t2, &row, &column);
        row -= 1;
        column -= 1;
             
        //矩阵旋转
        if(t1 == 1 && t2 == 2)
        {
            //90度4个数
            turn904(a, b, row, column, 0);
        }else if(t1 == 1 && t2 == 3)
        {
            //90度9个数
            turn909(a, b, row, column, 0);
        }else if(t1 == 2 && t2 == 2)
        {
            //逆90度4个数
            turn904(a, b, row, column, 1);
        }else if(t1 == 2 && t2 == 3)
        {
            //逆90度9个数
            turn909(a, b, row, column, 1);
        }
 
        //打印输出
        for(i = 0; i < 5; i ++)
        {
            for(j = 0; j < 5; j ++)
            {
                if(j == 4)
                {
                    printf("%d\n", b[i][j]);
                }else
                {
                    printf("%d ", b[i][j]);
                }
            }   
        }
    }
 
    return 0;
}
 
void turn904(int (*a)[5], int (*b)[5], int row, int column, int type)
{
    int i, j;
 
    for(i = 0; i < 5; i ++)
    {
        for(j = 0; j < 5; j ++)
        {
            if((i == row || i == row + 1) && (j == column || j == column + 1))
            {
                switch(type)
                {
                    case 0:
                        //顺时针
                        b[i][j] = a[2 - 1 - j][i];
                        break;
                    case 1:
                        //逆时针
                        b[i][j] = a[j][2 - 1 - i];
                        break;
                }
            }else
            {
                b[i][j] = a[i][j];
            }
        }
    }
}
 
 
void turn909(int (*a)[5], int (*b)[5], int row, int column, int type)
{
    int i, j;
 
    for(i = 0; i < 5; i ++)
    {
        for(j = 0; j < 5; j ++)
        {
            if((i == row || i == row + 1 || i == row + 2) && (j == column || j == column + 1 || j == column + 2))
            {
                switch(type)
                {
                    case 0:
                        //顺时针
                        b[i][j] = a[3 - 1 - j][i];
                        break;
                    case 1:
                        //逆时针
                        b[i][j] = a[j][3 - 1 - i];
                        break;
                }
            }else
            {
                b[i][j] = a[i][j];
            }
        }
    }
}
/**************************************************************
    Problem: 1171
    User: wangzhengyi
    Language: C
    Result: Accepted
    Time:10 ms
    Memory:908 kb
****************************************************************/


分享到:
评论

相关推荐

    C语言翻转二叉树.zip

    这个名为"C语言翻转二叉树.zip"的压缩包可能包含了一个实现二叉树翻转的项目,该项目可能用于教学或实践目的。 二叉树的翻转,也被称为二叉树的镜像操作,将原有的二叉树的左右子树对调,即原来的左子节点变为右子...

    基于微课的C语言翻转课堂教学设计与实践.pdf

    本文主要讲述了基于微课的C语言翻转课堂教学设计与实践。首先,文章提到在现代社会快速发展背景下,人们的生活方式发生了翻天覆地的变化,各行各业也随之发生了巨大的变革,教育行业也取得了巨大的发展与进步。教学...

    基于微课的C语言翻转课堂教学设计浅析.pdf

    在信息化教学的发展背景下,基于微课的C语言翻转课堂教学设计成为教育领域研究的热点之一。本文对基于微课的C语言翻转课堂教学设计进行了探讨,旨在通过优化教学模式,提升学生的学习积极性,同时确保教学质量。 ...

    基于微课的C语言翻转课堂教学设计浅析 (1).pdf

    本文探讨了基于微课的C语言翻转课堂教学设计,微课作为一种新的教学模式,其特点在于时间短、开发门槛低,非常适合用于教学改革。微课在翻转课堂中的应用,可以帮助学生更好地进行自主学习,并且通过教师与学生的...

    基于SPOC的C语言翻转课堂教学改革与探索.pdf

    综上所述,基于SPOC的C语言翻转课堂模式不仅促进了教学资源的优化配置,还提高了课堂的教学质量和效率。通过翻转课堂,学生能够获得更加系统和深入的C语言知识,同时也培养了自主学习和实践能力。对教师而言,该模式...

    基于SPOC的C语言翻转课堂教学改革与探索 (1).pdf

    为了应对这些挑战,本研究探讨了基于SPOC(Small Private Online Course)的C语言翻转课堂教学模式,并提出了相应的教学改革策略。 SPOC翻转课堂是一种教学模式的创新,它将传统教学中的“课堂讲授+课后作业”转变...

    “问卷星”在C语言翻转课堂教学中的应用与实践.pdf

    而“问卷星”作为一款专业的问卷调查和在线测试平台,其在C语言翻转课堂教学中的运用不仅展示了其作为教学测试工具的多功能性和便利性,也为翻转课堂提供了技术支撑。 首先,“问卷星”能够简化问卷的创建过程。...

    基于微课的C语言翻转课堂教学设计与实践 (1).pdf

    通过上述知识点,可以看出基于微课的C语言翻转课堂教学设计旨在利用现代教育技术优化教学流程,增强学生的自主学习能力和实践操作技能,同时提高教师的教学效率和教学质量。这种模式尤其适用于信息时代,能够更好地...

    “互联网 ”背景下职业院校C语言翻转课堂教学探析.pdf

    “互联网 ”背景下职业院校C语言翻转课堂教学探析.pdf

    高校C语言翻转课堂教学初探.pdf

    本文通过探讨C语言课程在高校的翻转课堂教学模式,分析其可行性并提出了具体的实施方法。C语言作为一种广泛应用的结构化编程语言,在高校计算机专业及理工类非计算机专业中均占有重要地位,其教学方法的改进意义重大...

    C语言编程技术实践2020版 实验熟悉C语言翻转课堂教学设计.docx

    在本课程“C语言编程技术实践2020版”中,主要目的是让学生熟悉C语言并掌握编程基础,采用翻转课堂模式进行教学设计。以下是根据提供的内容详细展开的几个关键知识点和技能点: 1. **Visual C++6.0 开发环境应用**...

    单词翻转 单词翻转 单词翻转 单词翻转

    单词翻转 单词翻转 单词翻转 单词翻转

    把一个字节按位翻转源代码,C语言编写

    标题中的知识点是“字节按位翻转”,描述中提到了使用C语言来实现这个功能。这涉及到C语言的位操作,尤其是异或操作(^)和按位或操作(|)。位翻转通常用于数据处理、二进制计算或者加密算法中。 首先,对于只有两...

    c#编写的翻转棋游戏代码

    翻转棋,也被称为反棋或奥赛罗棋,是一种双人策略棋类游戏,源自日本。在C#编程环境中,开发翻转棋游戏代码可以让程序员深入理解对象导向编程、事件处理、图形用户界面(GUI)设计以及算法设计。下面我们将详细探讨...

    C语言下 字符串翻转程序

    假设我们有一个长字符串,想要通过`cgets()`读取并翻转,首先需要确保分配足够的内存来存储这个字符串,因为长度可能超过254个字符。例如: ```c #define MAX_LENGTH 1000 char str[MAX_LENGTH + 1]; if (cgets...

    计算机C语言课程翻转课堂实践效果分析.pdf

    【计算机C语言翻转课堂实践】 计算机C语言是一门重要的编程基础课程,它涉及到许多专业领域的核心知识。然而,由于其相对较高的学习难度、众多的知识点以及实践环节的枯燥,传统的教学方式往往难以激发学生的学习...

    c语言写的字符串翻转算法

    本文将深入探讨C语言中的字符串翻转算法,这是一个经典的编程问题,通过解决这个问题,我们可以更好地理解C语言的指针操作。 首先,我们要知道在C语言中,字符串是由字符数组表示的,通常以空字符'\0'作为结束标志...

    《C语言程序设计》翻转课堂教学改革要点.pdf

    实施C语言翻转课堂教学改革,主要分为三个阶段: 1. **课前学习阶段**:教师根据教学内容和学生需求制定学习目标,提供教学资源。学生自主学习,完成预设测试,发现问题并记录,为课堂讨论做准备。 2. **课堂教学...

Global site tag (gtag.js) - Google Analytics