关于数组的学习心得

时间:2024-05-21 18:31:12
                       数组课程笔记

一知识点整理
(1)数组是一组具有相同类型的变量的集合,它是一种构造数据类型。使用一个统一的名字来标识这组数据,这个名字叫数组,构成数组的每个数据项称为数组元素。
(2)通过数组的下标,实现对数组元素的访问,下标的个数称为数组的维数。
注意,C语言的数组下标都是从零开始。
(3)程序中直接使用的常数称为幻术,良好的编程习惯是把幻数定义为宏常量,
(4)定义数组是不能用变量定义数组大小,初始化列表中提供的初始个数不多于数组元素的个数,系统会按照初始化列表提供的数值个数进行初始化,已确定数组大小,所以只给部分数组元素赋初值,对数组的长度声明不能省略
(5)二维数组的定义和初始化
一维数组的格式
类型 数组名[元素个数]
二维数组的格式
类型 数组名[一维长度][二维长度]
二维数组用两个小标,可以确定各元素在数组当中的顺序,可用排列成i行 j列的元素表示,第一维的长度代表每一列元素的个数,第二维的长度代表每一行元素的个数,第一维的长度声明可以省略,注意,数组第二维的长度声明永远不能省略
(6)字符数组
字符串的输入输出,用函数式scanf,不能输入带空格的字符串,用gets处理函数,可以输入带空格的字符串,函数puts依次输出储存单元中的字符,并且自动输出一个换行字符,(7)字符串处理函数的使用
求字符串长度strlen(str) 字符串复制strcup(str1,str2)等
首先,创建数组的两个方法:
  1.构造函数: 
var array = new Array();//新建一个空数组var array1 = new Array(20);//新建一个长度为20位的空数组var array2 = new Array(“1”,“2”);//新建一个内容包括有1,2两位的数组
  2.字面量表示法
var arr6 = [“lily”,“lucy”,“Tom”]; // 创建一个包含3个字符串的数组
alert(arr6[0]); //lily
arr6[1] = “mary”; //修改第二项为mary
arr6[3] = “sean”; //增加第四项为sean

二数组的应用
(1)利用数组可以找最大值最小值,例如,在学生成绩的管理问题,计算平均分最高分,通过排序和查找,对成绩进行排序,排序算法,包括交换法和选择法
查找算法,包括顺序查找和折半查找
题目:给定10个整数的序列,要求对其重新排序。排序要求:

1.奇数在前,偶数在后;

2.奇数按从大到小排序;

3.偶数按从小到大排序。

输入
输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于100。
输出
按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。
样例输入

#include<iostream>
#include<algorithm>
using namespace std;
bool jx(int m,int n)
{
	return m>n;
}
int a[110];
int main()
{
	int i,x=1,y=1,b[100],c[100];
	for(i=1;i<11;i++)
	cin>>a[i];
	for(i=1;i<11;i++)
	{
		if(a[i]%2!=0)
		{
			b[x]=a[i];
			x++;
		}
		else
		{
			c[y]=a[i];
			y++;
		}
	}
		sort(c+1,c+y);
		sort(b+1,b+x,jx);
		for(int j=1;j<x;j++)
		cout<<b[j]<<" ";
		for(int k=1;k<y;k++)
		cout<<c[k]<<" ";
		return 0;
	}

(2)字符数组可以与矩阵联系起来,例如,扫雷问题,细菌增殖问题等,都是通过数组矩阵的下标关系来实现图形的转换,与循环语句结合后效果非常好。
(3)可以应用于密码学
关于数组的学习心得

#include<iostream>
#include<string>
char A[100][100];
using namespace std;
int main()
{
    int m,n,t=0,i=-1;
    string s;
    cin>>m;
    cin>>s;
    while(t<s.length())
    {
        i++;
        for(int j=0;j<m;j++)
        A[i][j]=s[t++];
        if(t<s.length())
        {
            i++;
            for(int j=m-1;j>=0;j--)
            A[i][j]=s[t++];
        }
    }
    n=s.length()/m;
    for(int j=0;j<m;j++)
    {
        for(int l=0;l<n;l++)
        {
            cout<<A[l][j];
        }
    }
    cout<<endl;
    return 0;
}

三学习感想
数组不仅仅是一种方法,更是一种思维方式。通过数组可以方便程序书写,使程序更凝炼。
在数组基础上的查找,冒泡排序,顺序排序方法都十分的有效。