第一课 一维数组的定义
1.一维数组的定义
格式:类型标识符 数组名[常量表达式];
数组定义后的初值仍然是随机数,一般需要我们来初始化,一旦定义,不能改变大小,且值不能作为变量
这样的定义也是被允许的
int a[5*10];
#define N 50
int b[N];
如果要存储10000个人的中考成绩和性别可以定义两个数组:
int score[10000];//或者float score[10000];
bool xb[10000];//或者char xb[10000];
2.一维数组的元素引用
下标只能维整形常量或整形表达式,值必须在数组定义的下标范围内否则会出现下标越界错误,下标越界是大忌!!
3.一维数组的存储结构
第二课 一维数组的输入与输出
int a[100];
int main (){ 全局数组,适合范围更大的,因此数组尽量定义在外面。
如何使两个数组的值相等?
int i ;
for ( i =0; i < n ; i ++
b [i]= a [i];
给数值整体赋值的两个函数:
1. memset 函数
给数组按字节进行赋值,一般用于char型数组中,如果是int类型的数组,一般赋值为0和-1。使用前要包含头文件#include<cstring>。
例如: memset(a,0, sizeof(a));//将a数组所以元素均赋值为0
2.fill函数
给数组按元素进行赋值,可以是整个数组也可以是部分连续元素,可以赋任何值,使用前需要包含头文件#include<algorithm>;
fill(c,c+5,8)//把c 的前5个元素赋值为8,其他元素不确定;
第三课-第六课
全局统计在定义变量的时候赋初值,局部统计在统计开始之前赋初值
第七课 二维数组的定义和操作
格式:类型标识符 数组名[常量表达式1][常量表达式2];
初始化赋值/不分行//int a[2][3]={1,2,3,4,5,6};
也可以给数组中的部分元素初始化:
eg:int a[2][2]={1,2},{4};
在定义二维数组时可以省略第一维的大小,但是第二维的大小不能省略,系统会根据{}中等元素自动确定a数组的第一维大小。
第八课-第十课
一个字符数组只能存一段文字
数组题目整理:
1.反反复复
设有一个n*m方格的棋盘(1≤m,n≤100)。
求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。
cin>>n>>m;
for(i=1;i<=min(n,m);i++)
s1+=(m-i+1)*(n-i+1);
s2=(n+1)*(m+1)*n*m/4;
cout<<s1<<","<<s2-s1;
2.输出各个年龄段患病人数所占的百分比
printf("%.2lf%%\n%.2lf%%\n%.2lf%%\n%.2lf%%\n",(1.0*t*100)/n,(1.0*m*100)/n,(1.0*k*100)/n,(1.0*s*100)/n);
3 计算鞍点:所在行的最大值所在列的最小值
for ( i = 0; i < N; i++) {
Max = a[i][0];
for ( j = 0; j < N; j++) {
if (a[i][j]>=Max) {
Ni = i;
Nj = j;
Max = a[i][j];
}
}
Min = Max;
for (int k = 0; k < N; k++) {
if (a[k][Nj] < Min)
Min = a[k][Nj];
}
if (Max == Min) {
q = 1;
cout << Ni+1 << " " << Nj+1 << " " << Max << endl;
break;
}
感觉数组这一章对比起来循环语句算是比较简单的,但是如果遇到特殊情况比如数字矩阵之类的题目有可能就会变得很复杂,比如蛇形矩阵哪一种,很难找到规律,也恐惧得不知道该从哪里下手,怕写得太复杂最后运行错误一大堆逻辑不通,也挺苦恼的,再多看看以前做过的题目吧,希望能给自己一点启发