
第8章数组
第 8 章 数 组

本章知识点8.1一维数组的定义、引用与初始化数组名+一维下标”--表示数据8.2一维数组的应用8.3二维数组“数组名+二维下标”--表示数据8.4数组与函数
本章知识点 8.1 一维数组的定义、引用与初始化 “数组名+一维下标”-表示数据 8.2 一维数组的应用 8.3 二维数组 “数组名+二维下标”-表示数据 8.4 数组与函数

8.2.5逆置与移位【例8.12】数组移位:将指定个数的数组尾部元素移到数组首部。--数组元素的规律移位。a[0]a[1]a[2]a[3] a[4]a[5]a[6] a[7] a[8]a[9]移位前2015|31/12375521183044的数组a[5]a[6]a[7] a[8]a[9]a[o]a[1] a[2]a[3]a[4]移位后15372118203112553044的数组
【例8.12】数组移位:将指定个数的数组尾部元素移到数组首部。 -数组元素的规律移位 。 37 55 21 18 30 44 20 15 31 12 15 31 12 37 55 21 18 30 44 20 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 移位前 的数组 移位后 的数组 8.2.5 逆置与移位

【例8.12】数组移位:将指定个数的数组尾部元素移到数组首部--数组元素的规律移位。先看最后一个元素的移动到最前面的情况:移动之前37211855304420153112a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]移动之后12213755183020153144a[0]a[1]a[2]a[4]a[8]a[9]a[3]a[5]a[6]a[7]
先看最后一个元素的移动到最前面的情况: 移动 之前 37 55 21 18 30 44 20 15 31 12 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 移动 之后 12 37 55 21 18 30 44 20 15 31 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 【例8.12】数组移位:将指定个数的数组尾部元素移到数组首部。 -数组元素的规律移位

【例8.12】数组移位:将指定个数的数组尾部元素移到数组首部分析:移动1个元素---最后1个元素a[n-1]移动到a[0]位置。实现步骤:①用中间变量t保存最后一个元素a[n-1]:t=a[n-1]②将其余数组元素依次后移a[n-2] → a[n-1]a[n-3] → a[n-2]a[1] → a[2]a[0]→a[1]赋值语句:a[1]=a[0];a[n-1]=a[n-2];a[n-2]=a[n-3];....改为循环语句:for(i=n-1;i>0;i--)a[i]=a[i-1];③将中间变量t保存的原来的a[n-1]的值放入第一位置:a[0]=t结论:将m个数组尾部元素移到数组首部--上述①~~③步执行m次
分析:移动 1 个元素-最后 1 个元素a[n–1]移动到a[0] 位置。 实现步骤: ① 用中间变量t 保存最后一个元素a[n-1]:t = a[n–1]; ② 将其余数组元素依次后移: a[n-2] → a[n-1] a[n-3] → a[n-2] . a[1] → a[2] a[0]→a[1] 赋值语句:a[n-1]=a[n-2]; a[n-2]=a[n-3]; . ; a[1]=a[0]; 改为循环语句:for ( i=n-1; i>0; i-) a[i]=a[i-1]; ③ 将中间变量t 保存的原来的a[n-1]的值放入第一位置:a[0]=t 结论:将m个数组尾部元素移到数组首部-上述①~~③步执行m 次。 【例8.12】数组移位:将指定个数的数组尾部元素移到数组首部

【例8.12】数组移位:将指定m个数的数组尾部元素移到数组首部关键代码:scanf("%d",&m);11/m次移位for(k=1;k0;i-)6Ⅱ数组元素依次后移a[]]=a[i-1];a[0] = t;I原来的a[n-1]存入a[0]186
6 关键代码: ① scanf("%d",&m); ② for ( k=1;k0;i- ) ⑥ a[i]=a[i-1]; // 数组元素依次后移 ⑦ a[0] = t; // 原来的a[n-1]存入a[0] ⑧ } 【例8.12】数组移位:将指定m个数的数组尾部元素移到数组首部

1186----数组逆序(最后元素移到最前面)数组逆序C语言实验1int k,i,n,m,t,a[100];②scanf("%d",&n);for(i=;i=1;i--)OutputOa[i]=a[i-1];//数组元素依次后移按先后顺序输出n个整数。?a[0]=t;1/ 将最后一个数移到第一个位置ExampleInput?12//输出前n-1个数for (i=0;<n-1;i++)5123452?printf("%d ",a[iD);14printf(%din"an-1D;/输出第n个数ExampleOutput45123
1186-数组逆序 (最后元素移到最前面) ① int k,i,n,m,t,a[100]; ② scanf("%d",&n); ③ for(i=0;i=1; i-) ⑨ a[i]=a[i-1]; // 数组元素依次后移 ⑩ a[0]=t; // 将最后一个数移到第一个位置 ⑪ } ⑫ for (i=0;i<n-1;i++) // 输出前 n-1 个数 ⑬ printf("%d ",a[i]); ⑭ printf("%d\n",a[n-1]); // 输出第 n 个数

移位应用一输出矩阵输入:n个整数,例如n=6,输入462798输出:n(例如n=6)行的矩阵如下:62798--初始数据分析:只有一行输入,如何得到n行输出数据?84627an行输出数据之间是有联系的!6824S第行:462798984621心第二行:846279627984右移1位什么规律?627984后面的各行呢?规律:每一行数据是由前一行数据右移1位后得到的。方法:先输出一行数据后,再移位得到下一行数据
移位应用—输出矩阵 输入:n个整数,例如n=6,输入4 6 2 7 9 8 输出:n(例如n=6)行的矩阵如下: 4 6 2 7 9 8 -初始数据 8 4 6 2 7 9 9 8 4 6 2 7 7 9 8 4 6 2 2 7 9 8 4 6 6 2 7 9 8 4 分析: ◆ 只有一行输入,如何得到n 行输出数据? ◆ n 行输出数据之间是有联系的! ◆ 第一行:4 6 2 7 9 8 ◆ 第二行:8 4 6 2 7 9 ◆ 什么规律? ◆ 后面的各行呢? 规律: ◆ 每一行数据是由前一行数据右移 1 位后得到的。 方法:先输出一行数据后,再移位得到下一行数据。 右移 1位

+移位应用一输出矩阵数组初始化+II处理n行for(k=1;k0;i--)输出本行数据,换行8a[]=a[i-1];O1原来的a[n-1]到a[0]a[0] = t;右移1位得到下一行的数据0k++
① for (k=1;k0;i-) //数据后移 ⑧ a[i]=a[i-1]; ⑨ a[0] = t; //原来的a[n-1]到a[0] ⑩ } 数组初始化 k=1 k<=n 输出本行数据,换行 右移1位得到下一行的数据 k++ 移位应用—输出矩阵

矩阵输出ACM一矩阵输出(1523)TimeLimit:1000MSMem0ryLimit:65536KB1int i,k,n,t,a[21];1②scanf("%d",&n);ProblemDescription③for (i=0;i0i--)//数据后移a[i]=a[i-]];562583a[0]=t;1/原来的a[n-1]到a[0]ExampleOutput362588623583628
ACM—矩阵输出(1523) ① int i,k,n,t,a[21]; ② scanf("%d",&n); ③ for (i=0;i0;i-) //数据后移 ⑫ a[i]=a[i-1]; ⑬ a[0]=t; //原来的a[n-1]到a[0] ⑭ }