收藏 分销(赏)

c程序设计 矩阵的旋转.doc

上传人:xrp****65 文档编号:5964358 上传时间:2024-11-24 格式:DOC 页数:4 大小:74KB 下载积分:10 金币
下载 相关 举报
c程序设计 矩阵的旋转.doc_第1页
第1页 / 共4页
c程序设计 矩阵的旋转.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
宿 城 区 职 教 中 心 活 页 教 案 课题 矩阵的旋转编程 授课时间 2012年3月19日星期一 教学目标 知识目标 了解二维数组旋转相关知识 能力目标 培养二维数组程序设计能力 情感目标 通过编程的过程享受编程的成就感,增加自我肯定的意识 教学重难点 重点 旋转前后数组的关系 难点 二维数组旋转编程 教法与学法 讲授法、练习法、讨论法 教具准备 多媒体、机房 教 学 过 程 教学内容 师生活动 一、 矩阵的旋转 矩阵的旋转有8种情况:逆时针90度、180度、270度、60度;顺时针90度、180度、270度、360度 二、 相同情况 逆时针90度与顺时针270度; 逆时针180度与顺时针180度 逆时针270度与顺时针90度 逆时针360度与顺时针360度 三、 矩阵旋转的3种情况编程 1:顺时针90度 假设原矩阵a[3][4],赋值时值和下标相同 方法I:已知新数组b[i][j]: 原数组的列为新数组的行 原数组的行=2-新数组的列 b[i][j]=a[2-j][i] 方法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-新数组的列 b[i][j]=a[2-i][3-j] 方法II: 已知原数组a[i][j]: 新数组的行=2-原数组的行 新数组的列=3-原数组的列 b[2-i][3-j]=a[i][j] 3:顺时针270度 方法I: 已知新数组b[i][j]: 原数组的列=3-新数组的行 原数组的行=新数组的列 b[i][j]=a[j][3-i] 方法II: 已知原数组a[i][j]: 新数组的行=3-原数组的列 新数组的列=原数组的行 b[3-j][i]=a[i][j] 老师提问:矩阵旋转分为几种情况 学生讨论:。。。 学生回答:。。。 老师提问:矩阵旋转的所有情况中,哪几种旋转效果是相同的? 学生讨论:。。。 学生回答:。。。 老师提问:顺时针360度、逆时针360度与原矩阵有什么关系? 学生讨论后回答:。。。。。 答案:顺时针360度、逆时针360度与原矩阵相同 所以矩阵的旋转实际上只有3种情况。 让学生画出顺时针90度后的矩阵 答案: 旋转后放入新矩阵b[i][j]中 让学生讨论并找出b[i][j]与原数组a之间的关系。 学生编程:数组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;i++) for(j=0;j<3;j++) 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"); } } 让学生画出顺时针180度后的矩阵 答案: 旋转后放入新矩阵b[i][j]中 让学生讨论并找出b[i][j]与原数组a之间的关系, 并编程验证。 方法I:for(i=0;i<4;i++) for(j=0;j<3;j++) b[i][j]=a[2-i][3-j]; 方法II:for(i=0;i<3;i++) for(j=0;j<4;j++) b[2-i][3-j]=a[i][j]; 让学生画出顺时针270度后的矩阵 答案: 旋转后放入新矩阵b[i][j]中 让学生讨论并找出b[i][j]与原数组a之间的关系, 并编程验证。 方法I:for(i=0;i<4;i++) for(j=0;j<3;j++) b[i][j]= a[j][3-i]; 方法II:for(i=0;i<3;i++) for(j=0;j<4;j++) b[3-j][i]=a[i][j]; 教学内容 师生活动 四、总结 总结: 顺时针90度: for(i=0;i<4;i++) for(j=0;j<3;j++) b[i][j]=a[2-j][i];//放入b中 顺时针180度: for(i=0;i<4;i++) for(j=0;j<3;j++) b[i][j]=a[2-i][3-j]; 顺时针270度: for(i=0;i<4;i++) for(j=0;j<3;j++) b[i][j]= a[j][3-i]; 观察代码: 只有180度的旋转新矩阵的行、列与原矩阵的行、列对应不变; 90度、270度的旋转新矩阵的行与原矩阵的列、新矩阵的列与原矩阵行对应。 思考: 1:矩阵的转置同矩阵的旋转有关系吗? 2:上面我们学习的方法I、方法II是按行优先顺序还是按列优先顺序? 请对顺时针90度旋转的方法I改成列优先顺序编程。 板书设计 一、 矩阵的旋转 二、 矩阵旋转的所有情况中,相同的情况 三、 矩阵旋转的3种情况编程 1、 顺时针90度 2、 顺时针180度 3、 顺时针270度 四、总结 教后记 通过适当的引导学生能掌握分析问题的方法,但是转变程序时还有点问题,以后对编程的练习要加强。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服