第11章 C语言综合应用.pptVIP

  • 8
  • 0
  • 约6.19千字
  • 约 21页
  • 2016-11-21 发布于河南
  • 举报
第11章 C语言综合应用

第11章 C语言综合应用 教学目的:掌握数组设计算法,活用指针设计特效算法,用算法提高程序的速度 重点:数组设计算法,指针设计特效算法 难点:指针设计特效算法 第11章 C语言综合应用 11.1 巧用数组设计算法 11.2 活用指针设计特效算法 11.3 用算法提高程序的速度 11.1 巧用数组设计算法 数组不仅是一种最基本最重要的数据结构,描述静态的表,而且利用数组可以设计出许多新颖高效的算法,解决许多复杂的难题。 数组元素的下标可以是常量、变量、函数、算术表达式,还可以是数组元素。数组元素的妙用全在对下标的构思设计上。 【实例11-1】编写一个程序,将连续的自然数1,2,3,4,…,n2-1,n2,共n2个数,按由大到小、由里向外、顺时针方向或逆时针方向,排成一个n?n的螺旋形状的方阵,如图11-1和图11-2所示。要求:结果正确,排列整齐;算法简洁,思路清晰;行数n的值从键盘输入,顺时针、逆时针方向可以选择。程序可连续运行,键入0或大于19的数结束。 #include stdio.h main() { int i,j,k,m,n,h,a[20][20],o; while(1) { printf(Please input n(between 1 and 19)\n); scanf(%d,n); if(n1 || n19) break; printf(Please select the orientation of rotation o(clockwise:1,anti-clockwise:2)\n); scanf(%d,o); m=1; /*填充的数用m表示 */ if(o==1) /*顺时针方向 */ { for(i=1;i=n/2;i++) /*需填写n/2圈 */ { h=i; /*填写第h行 */ for(k=i;k=n-i;k++) a[h][k] = m++; /*逐列填,正序 */ k=n+1-i; /*填写第k列 */ for(h=i;h=n-i;h++) a[h][k] = m++; /*逐行填,正序 */ h=n+1-i; /*填写第h行 */ for(k=n+1-i;k=i+1;k--) a[h][k] = m++; /*逐列填,逆序 */ k=i; /*填写第k列 */ for(h=n+1-i;h=i+1;h--) a[h][k] = m++; /*逐行填,逆序 */ } } else /*逆时针方向 */ { for(i=1;i=n/2;i++) /*需填写n/2圈 */ { k=i; /*填写第k列 */ for(h=i;h=n+1-i;h++) a[h][k] = m++; /*逐列填,正序 */ h=n+1-i; /*填写第h行 */ for(k=i+1;k=n+1-i;k++) a[h][k] = m++; /*逐行填,正序 */ k=n+1-i; /*填写第k列 */ for(h=n-i;h=i;h--) a[h][k] = m++; /*逐列填,逆序 */ h=i; /*填写第h行 */ for(k=n-i;k=i+1;k--) a[h][k] = m++; /*逐行填,逆序 */ } } if(n%2==1) a[n/2+1][n/2+1] = m;

文档评论(0)

1亿VIP精品文档

相关文档