C语言笔记(四)
2016-05-16 14:50
232 查看
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.
给定一个整型数组,统计某个整数在数组中出现的次数。
思考:输入输出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.
给定一个整型数组,统计某个整数在数组中出现的次数。
相关文章推荐
- C语言笔记(三)
- C++11(九)
- C语言笔记(二)
- C语言笔记(一)
- 重新学习c++,开启人生新篇章
- VC++/MFC中DoModal
- VS2010进行远程调试C++
- C++第10/11周项目 继承与派生 【是春哥啊】(复习新版)
- C++第10/11周项目 继承与派生 【项目5 - 摩托车继承自行车和机动车】(复习新版)
- C++第10/11周项目 继承与派生 【项目4- 教师兼干部类】(复习新版)
- 深入理解内存对齐
- C++:实现split分割字符串
- [关键字]C/C++中static关键字详解
- C++ 默认析构函数
- C语言ODBC操作MySQL数据库
- C++第10/11周项目 继承与派生 【项目3 - 警察和厨师】(复习新版)
- (需要确认一点)C++ 析构函数和delete运算符
- 指针变量和指针变量的地址(c/c++)
- C++第10/11周项目 继承与派生 【项目2 - 存储班长信息的学生类】(复习新版)
- C++第10/11周项目 继承与派生 【项目1 - 点-圆-圆柱类族的设计】(复习新版)