slide1
Download
Skip this Video
Download Presentation
实验四 数组程序设计

Loading in 2 Seconds...

play fullscreen
1 / 22

实验四 数组程序设计 - PowerPoint PPT Presentation


  • 70 Views
  • Uploaded on

实验四 数组程序设计. 一、实验目的. 掌握一维数组和二维数组的定义、引用、初始化和输入输出方法。 掌握与数组有关的算法(查找和排序算法) 良好编程风格之标识符命名. 二、实验内容. 数组是一组相关的存储单元,这些存储单元具有相同的名字和数据类型。 要引用数组的某个特定的存储单元(元素),需要说明数组名和该特定元素在数组中的序号。数组的下标是从 0 开始的,因此,用 C[0] 引用数组 C 的第 1 个元素,用 C[1] 引用数组 C 的第 2 个元素, C[i-1] 引用数组 C 的第 i 个元素。. 二、实验内容. 一维数组的定义格式为 :

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 实验四 数组程序设计' - lacy-wiley


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
一、实验目的
  • 掌握一维数组和二维数组的定义、引用、初始化和输入输出方法。
  • 掌握与数组有关的算法(查找和排序算法)
  • 良好编程风格之标识符命名
slide3
二、实验内容
  • 数组是一组相关的存储单元,这些存储单元具有相同的名字和数据类型。
  • 要引用数组的某个特定的存储单元(元素),需要说明数组名和该特定元素在数组中的序号。数组的下标是从0开始的,因此,用C[0]引用数组 C的第1个元素,用C[1]引用数组C的第2个元素,C[i-1]引用数组C的第i个元素。
slide4
二、实验内容
  • 一维数组的定义格式为:

类型说明符 数组名[常量表达式];

  • 在定义数组时,需要指定数组中元素的个数,方括弧中的常量表达式用来表示元素的个数,即数组长度。
  • 组的下标是从0开始的,因此,用C[0]引用数组 C的第1个元素,用C[1]引用数组C的第2个元素,C[i-1]引用数组C的第i个元素。
slide5
一维数组的定义
  • 一维数组的定义格式为:

类型说明符 数组名[常量表达式];

  • 在定义数组时,需要指定数组中元素的个数,方括弧中的常量表达式用来表示元素的个数,即数组长度。
  • 常量表达式可以包括常量和符号常量,但不能包含变量。也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。
slide6
一维数组的定义
  • 以下程序段,给出了一维数组的几种定义方法,判断哪些是正确的,哪些是错误的
  • 常量表达式可以包括常量和符号常量,但不能包含变量。也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。
slide7
以下程序段,给出了一维数组的几种定义方法, 判断哪些是正确的,哪些是错误的

main()

{

int n;

scanf("%d" ,&n);

int a[n];

}

main()

{

const int n=4;

int a[n] = {1, 2, 3, 4};

...

}

slide8

4.main()

{

int a[2+2*4]

...

}

3.#include <stdio.h>

#define M 10

main()

{

int a[M];

...

}

5.#include <stdio.h>

#define M 2

#define N 8

main()

{

int a[M+N];

...

}

6. main()

{

int a[] = {1, 2, 3, 4, 5};

int b[6] = {1, 2, 3, 4, 5};

static int c[6] = {1};

..

}

slide9
7.
  • main()
  • {
  • char a[] = {‘1’, ‘2’, ‘3’, ‘4’, ‘5’};
  • char b[] = “This is a string.”;
  • ...
  • }
slide10
2.生成指向数组的指针

- 通过指定数组名,可以生成一个指向数组第一个元素的指针。

int *p;

int sample[10];

p = sample;

  • 可以使用&运算符来指定数组第一个元素的地址。

p=&sample[0]

slide11
3.一维数组作为函数的参数

- 在C中,不能把整个数组作为一个参数传递给函数, 可以通过指定数组名而不是下标,把一个指向数组的指针传递给函数。

int main(void)

  • 可以使用&运算符来指定数组第一个元素的地址。

p=&sample[0]

slide12
3.一维数组作为函数的参数

- 在C中,不能把整个数组作为一个参数传递给函数, 可以通过指定数组名而不是下标,把一个指向数组的指针传递给函数。

int main(void)

{

int i[10];

func(i);

......

}

slide13
有三种方式声明一维数组作为函数形参:

- 作为一个指针

void func (int *x); //pointer

- 作为一个固定长度的数组

void func (int x[10]); //sized array

int i[10];

func(i);

......

}

slide14
有三种方式声明一维数组作为函数形参:

- 作为一个指针

void func (int *x); //pointer

- 作为一个固定长度的数组

void func (int x[10]); //sized array

- 作为一个不定长的数组

void func (int x[]); //unsized array

slide15
定义二维数组的一般形式是:

类型说明符 数组名[常量表达式1][ 常量表达式2];

  • 二维数组的初始化

- 在定义数组时对数组进行初始化,

- 作为一个不定长的数组

void func (int x[]); //unsized array

slide16
二维数组的定义
  • 定义二维数组的一般形式是:

类型说明符 数组名[常量表达式1][ 常量表达式2];

  • 二维数组的初始化

- 在定义数组时对数组进行初始化,

int a[2][3] = {{1, 2, 3}, {4, 5, 6}};

int a[2][3] = {1, 2, 3, 4, 5, 6};

- 定义时初始化可以省略第一维的大小,例如:

int a[][3] = {1, 2, 3, 4, 5, 6};

//等价于 int a[2][3] = {1, 2, 3, 4, 5, 6};

slide17
二维数组的定义
  • 二维数组作为函数的输入参数

如果你向函数传递二维数组:

int array[NROWS][NCOLUMNS];

f(array);

那么函数的声明必须匹配:

int a[2][3] = {{1, 2, 3}, {4, 5, 6}};

int a[2][3] = {1, 2, 3, 4, 5, 6};

- 定义时初始化可以省略第一维的大小,例如:

int a[][3] = {1, 2, 3, 4, 5, 6};

//等价于 int a[2][3] = {1, 2, 3, 4, 5, 6};

slide18
二维数组作为函数的输入参数

如果你向函数传递二维数组:

int array[NROWS][NCOLUMNS];

f(array);

那么函数的声明必须匹配:

void f(int a[][NCOLUMNS])

{ ... }

或者

void f(int (*ap)[NCOLUMNS]) /* ap 是个数组指针 */

slide19
应用举例

1. 输入以下程序,调试并修改错误,参考程序如下:

  • #include <stdio.h>
  • void main(void)
  • {
  • int i, a[5];
  • for (i = 0; i <= 5; i++)
  • {
  • printf("Please input the %dth number:",i+1);
  • scanf("%d",&a[i]);
  • for (i = 0; i <= 5; i++)
  • {
  • printf("the %dth number is %d:",i+1,a[i]);
  • }
  • }
  • }
slide20
#include <stdio.h>

#define N 10

int main(void)

{

int i, j;

int t; //中间变量

int min; //记录符合位置i的最小的数的位置

int data[N]={3,6,2,5,8,1,0,4,7,9};

for (i = 0; i < N-1; i++)

{

min=i;

2. 输入并运行下面的程序,该程序实现了排序算法
slide21
for (j = i+1; j < N; j++)

{

if (data[j] < data[min])

{

min = j;

}

}

if (min != i)

{

t = data[i];

data[i] = data[min];

data[min] = t;

}

}

2. 输入并运行下面的程序,该程序实现了排序算法
slide22
for (i = 0; i < N; i++)

{

printf("%d", data[i]);

}

}

1)调试程序使之能正常运行,若希望从大到小排序,需如何修改程序?

2)如果希望看到程序运行过程中,数据是如何一步一步完成排序的,需在程序中的什么位置增加什么代码?

2. 输入并运行下面的程序,该程序实现了排序算法
ad