四。数组课程笔记

数组课程笔记:
一。知识点汇总:
1.在C语言中, 数组【i】 属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
2.数组说明的一般形式为:类型说明符 数组名 [常量表达式],……; 其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。
数组就是一次性定义相同数据类型的一组变量数组定义。
举例
int a[10]; 说明整型数组a,有10个元素。若要表示第10个元素,则使用a[9]。第一个则是a[0]。
float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。
char ch[20]; 说明字符数组ch,有20个元素。
3.二维数组:用来表示矩阵,如5行5列的矩阵为a【5】【5】,i行j列的矩阵为b【i】【j】。
二维数组在概念上是二维的,即是说其下标在两个方向上变化, 下标变量在数组中的位置也处于一个平面之中, 而不是象一维数组只是一个向量。但是,实际的硬件存储器却是连续编址的, 也就是说存储器单元是按一维线性排列的。如何在一维存储器中存放二维数组,可有两种方式:一种是按行排列, 即放完一行之后顺次放入第二行。另一种是按列排列, 即放完一列之后再顺次放入第二列。在C语言中,二维数组是按行排列的。
4.字符数组:
字符数组
用来存放字符量的数组称为字符数组。
字符数组类型说明的形式与前面介绍的数值数组相同。例如:char c[10]; 由于字符型和整型通用,也可以定义为int c[10]但这时每个数组元素占2个字节的内存单元。
字符数组也可以是二维或多维数组,例如:char c[5][10];即为二维字符数组。
字符数组也允许在类型说明时作初始化赋值。例如:static char c[10]={c,,p,r,o,g,r,a,m};赋值后各元素的值为:数组C c[0]c[1]c[2]c[3]c[4]c [5]c[6]c[7]c[8]c[9]其中c[9]未赋值,由系统自动赋予0值。 当对全体元素赋初值时也可以省去长度说明。例如:static char c[]={c, ,p,r,o,g,r,a,m`};这时C数组的长度自动定为9。
int main()
{
int i,j;
char a【】[5]={{‘B’,‘A’,‘S’,‘I’,‘C’,},{‘d’,‘B’,‘A’,‘S’,‘E’}};
for(i=0;i<=1;i++)
{
for(j=0;j<=4;j++)
printf("%c",a[j]);
printf("\n");
}
二.能够解决的问题:
数组能够解决许多有规律可循的数学问题,如:寻找配对数:
#include
using namespace std;
int main()
{int n,i,q,w,e,r=0;
cin>>n;
int a[1001];
for(i=1;i<=n;i++)
cin>>a[i];
for(q=1;q<=n;q++)
for(w=q+1;w<=n;w++)
for(e=w+1;e<=n;e++)
if(a[q]*a[w]==a[e]||a[w]*a[e]==a[q]||a[q]*a[e]==a[w])
r=r+1;
cout<<r;
}
以及许多多维上的数学问题,如:矩阵交换行:

#include
using namespace std;
int main()
{
int a[5][5], m, n, i, j;
for (i=0; i<5; i++)
for (j=0; j<5; j++)
cin >> a[i][j];
cin >> m >> n;
for (j=0; j<5; j++){
i = a[m-1][j];
a[m-1][j] = a[n-1][j];
a[n-1][j] = i;
}
for (i=0; i<5; i++){
for (j=0; j<5; j++){
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
三、自己的感想:
数组前面的题还能做出来,但到后面越来越难以思考,许多次思路与正确答案差了很多,自己到现在还没有找到数组的规律,导致代码的编写越来越困难。剩下的题目多为字符串,在字符串的使用上,我还没有了解,必须在19周前尽快解决。
否则很有可能造成严重后果。

猜你喜欢

转载自blog.csdn.net/qq_43642006/article/details/85221711