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.给定一个整型数组,统计某个整数在数组中出现的次数。
- C语言笔记(四)
- C语言笔记(四)
- C语言学习笔记(四)数组
- C语言程序学习(四)笔记
- C 语言易忘点笔记(四)
- C语言学习笔记(四)
- C语言之变量(笔记四)
- C语言学习笔记(四)
- c语言学习笔记四
- C语言(四)
- C语言学习入们到精通之学习笔记(四)
- iOS开发学习笔记-C语言学习(四)
- C语言学习笔记(四)——内存管理
- 【学习笔记四】C语言基础知识复习
- C语言学习笔记--基础语法四
- C语言库函数(四)
- C语言学习(四)
- c语言练习题(四)
- game design原理系列学习笔记(三)
- C语言笔记(三)
- * daemon not running. starting it now on port 5037 *
- UNICODE与ANSI的区别
- NSOperation中指定异步任务的依赖关系
- C语言笔记(四)
- Oracle 登录命令
- 优秀程序员
- 04 struts.xml配置中常用配置项解析
- C语言笔记(五)
- uname
- CodeIgniter 源代码解析
- 【Android学习之】深入理解JNI
- 在ASP.NET MVC中使用Log4Net进行多种HttpCode日志的记录