
程序设计基础(上) 张立红 13405330459(88028) QQ:2653453357 9#501
程序设计基础(上) 张立红 13405330459(88028) QQ:2653453357 9#501

第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] a1]a2]a3] a[4]a[51a6]a7]a8]a9] 移位前 37 55 21 18 2∩ 44 20 1 12 的数组 a[o]a[1]a[2]a[3]a[4]a[5]a[6]a[7a8]a[9] 移位后 1531123755 21183044 20 的数组
【例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】数组移位:将指定个数的数组尾部元素移到数组首部 数组元素的规律移位。 先看最后一个元素的移动到最前面的情况: 移动之前 37 55 21 1830 44 20 15 31 12 a[o] a[1] a[2] a[3]a[4] a[5) a[6] a7] a[8] a[9] 移动之后 12 37 55 21 18 30 44 20 15 31 a[o] a[1] a[2 a[3] a[4 a[5 a[6 a[7] a[8] a[9] 恩
先看最后一个元素的移动到最前面的情况: 移动 之前 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]移动到a0]位置。 实现步骤: ①用中间变量t保存最后一个元素a[n-1]:t=a[n-1]: ②将其余数组元素依次后移: an-2]→a[n-1] a[n-3]→a[n-2] a[1]→a[2] a[0]→a[1] 赋值语句:a[n-1]=a[n-2;an-2]=a[n-3];.,a[1]=a[0]; 改为循环语句:for(in-1;i>0;i-) a[i]=a[i-1]; ③将中间变量t保存的原来的a[n-1]的值放入第一位置:ao]=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); ② for(k=1;k0;i-) ⑥ a叮=ai-1们;∥数组元素依次后移 ⑦ a[0]=t; ∥an-1到位 ⑧ 7
7 关键代码: ① scanf("%d",&m); ② for ( k=1;k0;i- ) ⑥ a[i]=a[i-1]; // 数组元素依次后移 ⑦ a[0] = t; // a[n-1]到位 ⑧ } 【例8.12】数组移位:将指定m个数的数组尾部元素移到数组首部

186-数组逆序(最后元素移到最前面) C语言实验 数组逆序 ① int k,i,n,m,t,a[100]; ② scanf("%d",&n); Problem Description ③ for(i=0;i=1;i-) ⑨ a=ai-1];/数组元素依次后移 按先后顺序输出n个整数。 ⑩ 0]=t;∥将最后一个数移到第一个位置 Example Input ① 512345 ② for(i=0;n-1;计+)∥输出前n-1个数 ⑧ printf"y%d",a⑩)房 ④ printf("%d小n",am-l);∥输出第n个数 Example Output 45123
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)行的矩阵如下: 462798-初始数据 分析: ·只有一行输入,如何得到n行输出数据? 846279 ◆n行输出数据之间是有联系的! 984627 ◆第一行:462798 ◆ 第二行:846279 798462 ◆ 什么规律?右移1位 279846 ◆后面的各行呢? 规律: 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位

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