C语言笔记(四)

来源:互联网 发布:淘宝网商品域名 编辑:程序博客网 时间:2024/05/16 04:58

1、为什么要使用数组?数组定义?数组的要素?

思考:输入输出10个学生的年龄

数据模型:10个学生年龄

操作:循环

一个整型变量可以保存一个学生的年龄

int age0;

int age1;

int age2;

int age3;

int age4;

int age5;

int age6;

int age7;

int age8;

int age9;


总结:数据类型相同(int),个数已知(10)

为什么要使用数组:当程序中出现大量相同数据类型变量时,我们可以通过数组对这些相同数据类型变量进行整体定义

数组:大量相同数据类型变量的集合{}

数组的要素:

1:成员的数据类型要相同

2:数组成员个数已知


2、数组的定义

格式:数据类型 数组名[常量];

数组名:满足标识符命名规则(地址常量,等于数组首元素的地址)

数据类型:数组成员的数据类型

常量:数组成员的个数

常量常见表示方式:

1:整型数据:10、5

2:标识符常量:#define NUM 10

3:const修饰的变量:const int num=10;

例子:int arr[10];

课堂练习:

1:定义出一个整型数组,数组成员是100个  int arr[100]

2:定义出一个单精度的浮点型数字,数组成员10个  

#define NUM 10

float arr[NUM]; 

3:定义出一个字符型数组,数组成员100个

const int size=10;

char but[size];

为什么要这样定义数组?

数组名:数组的名字

数据类型:描述整个数组成员的数据类型

常量:描述数组成员的个数

数组名:地址常量,等于数组首元素地址

3、常见数组的种类

分类:数据类型

1:数值数组(int,float,double)

2:字符数组(char,字符串)

3:指针数组

4:结构体数组


4、数组成员的使用

1:下标法

格式:数组名[下标];(下标从0开始到n-1结束)

int arr[5];//arr[0],arr[1],arr[2],arr[3],arr[4]

2:指针法


课堂练习:

1:定义整型数组,有5个成员,成员值由屏幕输入并逆序打印成员值


5、数组成员在内存中的存储形式

思考:

1:连续存储,一个成员挨着一个成员

2:不连续:不挨着

课堂练习:

 定义一个成员个数为10字符型数组,打印每个数组成员在内存中的地址

6、数组的大小

计算数组大小的方式:sizeof(数组名);

int arr[5];

printf(“%lu”,sizeof(arr));

练习:

定义一个整型和字符型数组,数组成员分别是5个和10个,分别计算这两个数组大小。

为什么?

数组成员数据类型相同————>数组成员的大小

数组的大小=每个成员的大小*成员的个数

int arr[5]——>sizeof(int)*5

int [5]——>sizeof(int[5])——>20


7、数组的初始化

数组初始化的方式:

1:完全初始化  例子:int arr[5]={1,2,3,4,5};

2:部分初始化  例子:int arr[5]={1,2};

3:没有指定初始化值  例子:int arr[5]={};(常用)

4:没有指定成员个数  例子:int arr[]={1,2,3,4,5};

5:未初始化  例子:int arr[5];

练习:

1:用数组来输出Fibonacci数列的前20位成员值并计算前20个成员的和。


8、数组成员的赋值

1:初始化

2:for-scanf

3:for +赋值语句



9、与数组相关的操作

1:数组成员的取值和赋值

练习:

1:定义一个整型数组,数组成员10个,成员大小等于下标两倍,逆序输出成员。

2:定义一个整型数组,数组成员10个,从屏幕输入数组成员的值,并输出成员值的和。


随机数函数 n = rand()//产生的随机值在0~0x7fffffff之间

随机数种子函数


2:数组成员的比较和查找

练习:

1:定义一个数组,数组成员10个,找出数组中最大的数连同下标一起输出。

2:定义一个数组,数组成员10个,找出数组中最小的数连同下标一起输出。

3:青年歌手参加歌曲大奖赛,有10个评委进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。

3:数组成员的交换和翻转

练习:

1:定义一个数组,数组成员10个,将相邻数组成员交换,并输出交换后数组成员。

2:定义两个数组,数组成员都为10个,将下标相同数据进行交换,交换后输出。

3:定义一个数组,数组成员10个,将数组中的值逆序重新存放

4:数组的排序(冒泡)

冒泡排序:

冒泡原则(升序):数组中相邻成员进行比较,小数在前,大数在后(交换)

冒泡的结果:一次冒泡,把数组中一个数冒到正确的位置上

练习:

1:定义一个数组,数组10个成员,用冒泡法升序排列并输出。

2:定义一个数组,数组10个成员,用冒泡法降序排列并输出。

5:在有序数组中插入一个数

练习:

1:定义一个数组,按升序排列后,插入一个数到该数组中,插入后仍然有序

1 3 6 9 15———>7//arr[6]

1:找到插入的位置--->遍历数组,发现数组中的某个数比插入的数大

2:插入——>从数组中最后一个数后移

6:在数组删除一个数

练习:

1:定义一个数组,在数组中删除一个数


课后练习:(数组实现)

1.给定某个整型数组,计算该数组所有偶数的合。

2.给某个整型数组赋值,赋值规律如下,下标能被3整除的都赋值为1,能被5整除的都赋值为2,能被7整除的都赋值为3,其余都赋值为0.

3.通过终端输入10个整数并将其保存在一个整型数组中,数字保存在数组中的顺序与下标正好相反,也就是第一个被输入的数放在数组最后一个元素中,最后一个输入的数字放到第一个元素中。

4.通过终端输入10个整数,计算10个整数中所有能被3整除的数的合。

5.给定一个5个元素构成的整型数组,每个元素的值都在0-9之间,按照位置将其组成一个5位数并输出,例如int a[5] = {1,2,2,3,7};则输出73221

6.给定2个大小一样的整型数组,将某个数组作为源数组,另一个作为目的数组,然后将源数组的内容拷贝到目的数组。

7.给定一个整型数组,将第一个跟最后一个元素的内容交换。

8.给定一个整型数组,从第1个元素开始将相邻的两个元素分别相互交换。交换完后,第1个元素将变成最后一个元素,其余元素都前进一位。

9. 给定一个有10个整形数的元素,将前5个元素跟后5个元素做整体交换,比如{1,1,1,1,1,2,3,2,2,2}->{2,3,2,2,2,1,1,1,1,1}

10. 判断一个整型数组是否是对称数组,例如{1,2,3,3,2,1}{1,6,8,1,8,6,1}都是对称数组。

11.给定两个大小一样的整型数组,交换这两个数组的内容。

12.给定两个大小一样的整型数组,将两个数组中下标一样的元素两两相加,相加后的结果作为这两个数组对应下标的新值,也就是操作完毕后两个数组的内容完全相同。

13.给定一个能容纳10个元素的整型数组,现有9个元素,现在第5个元素的位置插入一个数字88,后面的数字顺序后移。

14.给定一个10个元素的整型数组,现在将第2个元素删除,后面的数组顺序前移。

15.给定一个有100个元素的数组,查询数组中是否有元素的值等于某个数n

16.给定一个整型数组,求该数组元素中最大值的下标。

17.给定一个整型数组,求该数组中第二大的数的下标。

18.给定一个整型数组,求该数组中数值小于10的元素的个数。

19.给定一个整型数组,计算大于该数组平均值的元素的个数。

20.给定一个整型数组,找到数组中的最小值,并将其放到数组的首元素中,原来首元素的内容放到最小值所在的元素中。

21.给定一个整型数组,统计某个整数在数组中出现的次数。


0 0
原创粉丝点击