当前位置:首页 >> 初中教育 >>

c程序设计 矩阵的旋转


宿 城 区 职 教 中 心 活 页 教 案
课题 矩阵的旋转编程 授课时间 2012 年 3 月 19 日 星期一

知识目标

了解二维数组旋转相关知识

教学目标

能力目标

培养二维数组程序设计能力

情感目标

通过编程的

过程享受编程的成就感, 增加自我肯定的意 识 旋转前后数组的关系 二维数组旋转编程 讲授法、练习法、讨论法 多媒体、机房 教 学 过 程

重点 教学重难 点 难点 教法与学 法 教具准备

教学内容

师生活动

一、 矩阵的旋转 老师提问:矩阵旋转分为几种情况 矩阵的旋转有 8 种情 学生讨论:。 。。 况:逆时针 90 度、180 学生回答:。 。。 度、270 度、60 度;顺 时针 90 度、 度、 180 270 度、360 度 二、 相同情况 逆时针 90 度与顺 时针 270 度; 逆时针 180 度与顺 时针 180 度 逆时针 270 度与顺 时针 90 度 逆时针 360 度与顺 时针 360 度

老师提问:矩阵旋转的所有情况中,哪几种旋转效果是 相同的? 学生讨论:。 。。 学生回答:。 。。 老师提问:顺时针 360 度、逆时针 360 度与原矩阵有什 么关系? 学生讨论后回答:。。 。。。 答案:顺时针 360 度、逆时针 360 度与原矩阵相同 所以矩阵的旋转实际上只有 3 种情况。

三、

矩阵旋转的 3 种情况编程

1:顺时针 90 度 让学生画出顺时针 90 度后的矩阵 假设原矩阵 a[3][4], 答案: 旋转后放入新矩阵 b[i][j]中 赋值时值和下标相同

让学生讨论并找出 b[i][j]与原数组 a 之间的关系。 方法 I:已知新数组 b[i][j]: 原数组的列为新数组的 行 原数组的行=2-新数组 的列 b[i][j]=a[2-j][i] 学生编程:数组 a 按要求赋值并显示, 按顺时针 90 度规 则放入数组 b 中,变显示 b 数组。 I 参考程序: #include<stdio.h> main( ) { int a[3][4],b[4][3]; int i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) a[i][j]=10*i+j; //赋值 printf("原矩阵:\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) { if(a[i][j]/10==0) printf(" 0%d ",a[i][j]); else printf("%3d ",a[i][j]); } printf("\n"); } //显示原矩阵 for(i=0;i<4 for(i=0;i<4;i++) for(j=0;j<3 for(j=0;j<3;j++) b[i][j]=a[2-j][i];//放入 b[i][j]=a[2-j][i];//放入 b 中 printf("\n 新矩阵:\n"); for(i=0;i<4;i++) { for(j=0;j<3;j++) { if(b[i][j]/10==0) printf(" 0%d ",b[i][j]); else printf("%3d ",b[i][j]); } printf("\n"); } }

方法 II:已知原数组 a[i][j]: 新数组的行为原数组的 列 新数组的列=2-原数组 的行 b[j][2-i] = a[i][j] 方法 II 只要修改蓝色 代码为: for(i=0;i<3;i++) for(j=0;j<4;j++) b[j][2-i] = a[i][j]; 特别注意 for 循环的循 环次数

2:顺时针 180 度 方法 I: 已知新数组 b[i][j]:
原数组的行=2-新数组的行 原数组的列=3-新数组的列

让学生画出顺时针 180 度后的矩阵 答案: 旋转后放入新矩阵 b[i][j]中

b[i][j]=a[2-i][3-j]
方法 II: 已知原数组 a[i][j]:
新数组的行=2-原数组的行 新数组的列=3-原数组的列

b[2-i][3-j]=a[i][j]

让学生讨论并找出 b[i][j]与原数组 a 之间的关系, 并编程验证。 for(i=0;i<4 方法 I:for(i=0;i<4;i++) for(j=0;j<3 for(j=0;j<3;j++) b[i][j]=a[2-i][3-j]; b[i][j]=a[2-i][3-j]; II:for(i=0;i<3 方法 II:for(i=0;i<3;i++) for(j=0;j<4 for(j=0;j<4;j++) b[2-i][3-j]=a[i][j] j]; b[2-i][3-j]=a[i][j];

3:顺时针 270 度 方法 I: 已知新数组 b[i][j]:
原数组的列=3-新数组的行 原数组的行=新数组的列

让学生画出顺时针 270 度后的矩阵 答案: 旋转后放入新矩阵 b[i][j]中

b[i][j]=a[j][3-i]
方法 II: 已知原数组 a[i][j]:
新数组的行=3-原数组的列 新数组的列=原数组的行

b[3-j][i]=a[i][j]

让学生讨论并找出 b[i][j]与原数组 a 之间的关系, 并编程验证。 for(i=0;i<4 方法 I:for(i=0;i<4;i++) for(j=0;j<3 for(j=0;j<3;j++) a[j][3-i]; b[i][j]= a[j][3-i]; II:for(i=0;i<3 方法 II:for(i=0;i<3;i++) for(j=0;j<4 for(j=0;j<4;j++) b[3-j][i]=a[i][j]; b[3-j][i]=a[i][j];

教学内容

师生活动

四、总结

总结: 顺时针 90 度: for(i=0;i<4 for(i=0;i<4;i++) for(j=0;j<3 for(j=0;j<3;j++) b[i][j]=a[2-j][i];// //放入 b[i][j]=a[2-j][i];//放入 b 中 顺时针 180 度: for(i=0;i<4 for(i=0;i<4;i++) for(j=0;j<3 for(j=0;j<3;j++) b[i][j]=a[2-i][3-j]; b[i][j]=a[2-i][3-j]; 顺时针 270 度: for(i=0;i<4 for(i=0;i<4;i++) for(j=0;j<3 for(j=0;j<3;j++) a[j][3-i]; b[i][j]= a[j][3-i]; 观察代码: 只有 180 度的旋转新矩阵的行、列与原矩阵的行、列对 应不变; 90 度、270 度的旋转新矩阵的行与原矩阵的列、新矩阵 的列与原矩阵行对应。 思考: 1:矩阵的转置同矩阵的旋转有关系吗? 2:上面我们学习的方法 I、方法 II 是按行优先顺序还 是按列优先顺序? 请对顺时针 90 度旋转的方法 I 改成列优先顺序编 程。

一、
二、

三、
板书设计

矩阵的旋转 矩阵旋转的所有情况中,相同的情况 矩阵旋转的 3 种情况编程

1、 顺时针 90 度 2、 顺时针 180 度 3、 顺时针 270 度 四、总结 通过适当的引导学生能掌握分析问题的方法,但是转变程序时 还有点问题,以后对编程的练习要加强。

教后记


相关文章:
c语言矩阵的顺、逆时针旋转
c语言矩阵的顺、逆时针旋转_计算机软件及应用_IT/计算机_专业资料。c语言矩阵的顺、逆时针旋转#include <stdio.h> #include <windows.h> //矩阵顺时针旋转 void...
C语言程序设计关于矩阵的编程
C语言程序设计关于矩阵的编程_计算机软件及应用_IT/计算机_专业资料。题目:已知A、B两维数相同,元素不同的矩阵,两矩阵相加得矩阵C,求矩阵C中的最大和最小元素 ...
c语言课程设计 矩阵运算
c语言课程设计 矩阵运算_计算机软件及应用_IT/计算机_专业资料。课程设计 课程设计任务书一、课程设计题目:矩阵运算 二、课程设计工作自 2008 年 9 月 8 日起至...
C语言课程设计-矩阵的构造与打印
C 语言课程设计C 语言》 课程设计报告 标题:矩阵的构造与打印 学号: ...C语言课程设计_旋转矩阵 3页 1下载券 C语言课程设计报告打印 ... 12页 免费...
C程序设计教程与实验第8章习题参考答案
C程序设计教程与实验第8章习题参考答案_理学_高等教育_教育专区。第 8 章习题...("二维数组中的所有元素之和为%d\n", sum(a)); } 8.输入一行数字字符...
实验二C ++简单程序设计参考答案
实验二C ++简单程序设计参考答案_IT认证_资格考试/认证_教育专区。c++,最好的学习资料 实验二 C++简单程序设计练习一、实验目的和要求 1. 2. 进一步熟悉 VC++...
C程序设计期末考试习题(含答案)
C程序设计期末考试习题(含答案)_其它_高等教育_教育专区。C语言期末复习题 c 语言程序设计期末试题 A(含答案) 一、单项选择题(选择一个最佳答案,每题 2 分,...
趣味矩阵C语言课程设计
趣味矩阵C语言课程设计_工学_高等教育_教育专区。个人编写的趣味矩阵程序,用于...C语言课程设计_旋转矩阵 3页 1下载券 动态矩阵的生成与管理-C... 11页 1...
C程序设计第4次上机内容
C 语言程序设计》第 4 次上机内容(第 10~11 周) 说明:同第 1 次上机...运行结果: 3.编一个程序,输入一个 5 行 5 列的整数矩阵,判断该矩阵是否...
C语言课程设计矩阵问题
(2)Visual C++或 TC 集成开发环境 2.4 开发语言 C 语言 2 3 分析和设计 3.1 模块设计(1)定义一个二维数组 a[5][5]存放一个矩阵,用 for 循环输入 25 ...
更多相关标签: