数组专项总结:
第一课 一维数组的定义数组就是一组相同类型的变量,它们往往都是为了表示同一批对象的统一属性数组可以是一维的,也可以是二维或多维的for(i=0;i<=49;i++) cin>>h[i];1.一维数组的定义类型标识符 数组名【常量表达式】;类型标识符可以是任何基本数据类型,,也可以是结构体等构造类型,相同类型的数组可以一起定义eg. int d[50],g[100]; int a[510]; #define N 50 int b[N];2.一维数组的元素引用数组定义好后,就可以“引用”数组中的任意一个元素。引用格式为“数组名【下标】”,如h[5],h[i2+1]等(h[5]:数组中的第五个元素,数组的下标从零计数)注:下标只能为整型常量或整型表达式,值必须在数组定义的下标范围内,否则会出现“下标越界错误”不能一次引用整个数组eg. int a[10]整型数组,10个元素 下标从0—9(无a【10】)3.一维数组的存储结构数组在计算机内存单元中是连续存储的,程序一旦执行到数组的定义语句,就会开辟出若干字节的内存单元由于每个元素都是int类型,占用4个字节(sizeof函数,可以直接求出一个数组所占的内存空间)第二课 一维数组的输入与输出一维数组的输入,输出等操作,都是采用循环语句结合下标变化逐个元素进行eg. 键盘读入int h[100]for(i=0;i<100;i++)cin>>h[i]; 直接赋值int h[100],a[20];for(i=0;i<100;i++)h[i]=0;for(i=0;i<20;i++)a[i]=i*2+1;1.memset函数memset函数是给数组“按字节”进行赋值,一般用在char型数组中,如果是int类型的数组,一般赋值为0和-1,使用前需要包含头文件:#include例如:“memset(h,0,sizeof(h));”就是将h数组所有元素均赋值为02.fill函数fill函数是给数组“按元素”进行赋值,可以是整个数组,也可以是部分连续元素,可以赋任何值,使用前需要包含头文件:#include例如:“fill(a.a+10,5);”就是将a数组的前10个元素赋值为5eg:第一行有两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。对于20%的数据,区域之间没有重合的部分;对于其它的数据,区域之间有重合的情况。输出包括一行,这一行只包含一个整数,表示马路上剩余的树的数目#include#include#includeusing namespace std;struct node{int l,r,len;}que[10010];int d,q;int tmp(node a,node b){if(a.l<b.l) return 1;if(a.l>b.l) return 0;if(a.len>b.len) return 1;if(a.len<b.len) return 0;}int main(){int i,j;scanf("%d%d",&d,&q);for(i=1;i<=q;++i) scanf("%d%d",&que[i].l,&que[i].r),que[i].len=que[i].r-que[i].l+1;sort(que+1,que+q+1,tmp);int left=que[1].l,right=que[1].r;i=2; d++;while(i<=q){if(que[i].l<=right) right=max(right,que[i].r);else d-=(right-left+1),left=que[i].l,right=que[i].r;i++;}d-=(right-left+1);printf("%d\n",d);return 0;}
心得体会:1学习了一维数组的含义以及其元素的引用即如何将元素引入数组中2明白了一维数组的储存结构,对其如何使用有更深入的理解3一维数组的输入与输出都是依据循环结构实现的4加深了对for循环的应用与理解5掌握了memset函数与fill函数的应用6理解了数组是如何解决实际问题
08-29